コマンドラインの受講者用教材

コマンドラインは、GUI を使用せずにコンピュータを制御する方法です。このユニットでは、コンピュータを操作するための基本的なコマンドを学習します。

重要ポイント

  • 生徒はコマンドを使ってパソコンを操作します。
  • 生徒はファイルやフォルダの作成、移動、コピー、削除を行います。

コマンドラインとは

ほとんどのユーザーは、ほとんどの場合、グラフィカル ユーザー インターフェース(GUI)を使用してコンピュータを操作します。通常、GUI はマウスまたはタッチを使用して、アイコン、ボタン、スクロールバーなどでウィンドウを操作します。

コマンドラインは、コンピュータの代替ビューです。「シェル」、「ターミナル」、「bash」、「テキスト インターフェース」と呼ばれることもあるコマンドラインは次のとおりです。

  • ユーザーがコマンドを入力してコンピュータ プログラムを操作する手段。例:
open README.txt
  • マウスを使わずにコンピュータを操作する方法。
  • ファイルやディレクトリの作成、読み取り、更新、操作、削除をグラフィック以外の方法で行う方法。例:
mv README.txt readme.txt

GUI とコマンドラインは同じものを参照しています。これらは、パソコンを操作するさまざまな方法です。

コマンドラインをいつ使用するか

コマンドライン インターフェースは、多くの場合、デベロッパーに好まれます。

  • プログラムやオペレーティング システムをより簡潔に制御できます。その理由は、すべてが同じウィンドウで実行されるため、慣れればマウスで探して操作するよりも手間がかかりません。
  • コマンドを制御するためのオプションを簡単に公開できます。その理由は、GUI のメニューには、ごく少数のオプションしか用意されていません。コマンドラインには何百ものコマンドがあり、コマンドに数文字を追加するだけで、さまざまな処理を実行できます。例:
  • ls 基本リストファイル
  • ls -a 通常は非表示のファイルを含むすべてのファイルを一覧表示する
  • ls -l 各ファイルに関する情報が表示された長いリスト
  • ls -R 再帰的にディレクトリの内容を一覧表示する
  • ls -la すべてのファイルを一覧表示する
  • 複雑な方法で多くのファイルを一度に処理できます。
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
  • オペレーティング システム(シェル プログラム)をプログラミングする手段を提供します。たとえば、上記の例は、ファイル名が .png で終わる画像を修正するように設計された非常にシンプルなシェル プログラムです。

コマンドラインの動作

コマンドライン コマンドの構成要素

すべてのコマンドは次の 3 つの部分で構成されています。

  • コマンド(またはユーティリティ)は常に最初に指定します。
  • フラグは、使用しているユーティリティに応じて省略可能です。フラグは常に -(マイナス)で始まります。
  • 引数は、コマンドが処理する対象または必要な情報です。多くの場合、ファイル名です。

フレーム処理

コンテキストと目的

コマンドラインは、マウスや GUI(グラフィカル ユーザー インターフェース)を使用せずにコンピュータを制御する方法です。Apple Computer がクリック可能なアイコンとフォルダを備えたマシンを構築する前は、コンピュータを操作する唯一の方法はコマンドラインでした。

デベロッパーは、GUI よりもはるかに高速で強力なコマンドラインを使用します。クリックして時間を無駄にする必要はありません。コマンドラインを使用すると、パソコンで行うほとんどすべての操作を実行できます。

ターミナルはインターフェースがはるかにシンプルであるため、ネットワーク リンクを介してコンピュータにリモート接続する必要がある場合は、GUI よりも大きなメリットがあります。これは、デベロッパーが旅行中などによく行うことです。

このレッスンでは、ファイルとディレクトリの作成、フォルダの移動、ディレクトリの変更、フォルダの内容のリスト表示など、コンピュータを操作するための基本的なコマンドを学びます。

学習目標

生徒は次のことができるようになります

  • ターミナルを使用してファイルとフォルダを移動する
  • フォルダの内容を一覧表示する
  • コマンドラインでファイルとフォルダを作成する
  • ファイルやフォルダを移動する
  • ファイルとフォルダをコピーする
  • ファイルとフォルダを削除する

スタートガイド

ターミナルへのアクセス

セクションの構成と目的

ターミナルは、オペレーティング システムへのコマンドライン インターフェース(CLI)を提供します。これを使用すると、パソコンにテキストベースの指示を直接与えることができます。

これを行うには、使用しているシステムに基づいてターミナルを起動する必要があります。

ターミナルが起動すると、パソコンのホーム ディレクトリ(パソコンに付けた名前)で開始されます。ホーム ディレクトリは、チルダ ~ で表されます。

ターミナル内の世界について説明する場合、ディレクトリフォルダと同じです(ディレクトリと呼ぶこともあります)。

ディレクトリの変更

セクションの構成と目的

ターミナルでコンピュータに話しかけて、やりたいことを伝えるには、共通の言語を話す必要があります。コマンドラインは、bash スクリプト言語で記述されたコマンドを理解します。コマンドは、英単語の頭字語または略語です。

ターミナルでナビゲーションを行う場合は、現在地を把握することが重要です(これは現実世界にも当てはまります。どこかに移動したい場合は、まず現在地を把握する必要があります)。

# See your current location - abbreviation for 'print working directory'
pwd

使用可能なファイルとディレクトリを一覧表示する

作業ディレクトリ内には、アクセス可能なファイルがいくつかある可能性があります。通常、アイコンなどの視覚的な手がかりを使って利用可能なものを確認しますが、ファイルやフォルダの場所を推測するだけでは、コンピュータを操作することは困難です。コマンドラインでは、特定のコマンドを使用して、特定の作業ディレクトリ / 特定の場所からアクセスできるものを一覧表示します。

現在のディレクトリにあるファイルやフォルダを確認するには、ls コマンド(list の略)を使用して、コンテンツのリストビューを表示します。

# See files and folders in current location - abbreviation for 'list'
ls

作業ディレクトリを変更する

リストにないファイルやディレクトリにアクセスする必要がある場合は、アクセスしやすくするために作業ディレクトリを変更することをおすすめします。

コマンドラインで新しいディレクトリ(フォルダとも呼ばれます)に移動する構文は、cd の後に(同じ行に)新しいフォルダのパスを続けます。

現在いるディレクトリ内のディレクトリ(つまり、作業ディレクトリサブフォルダ)に移動する場合は、cd コマンドの後にフォルダ名を入力します。

# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents

ホーム ~ ディレクトリからナビゲートすることもできます。

# Add a `~/` to begin from the home directory.
cd ~/Downloads

ディレクトリを変更した後にホーム ディレクトリに戻る必要がある場合は、~ を使用してホームに直接戻るか、.. を使用して 1 つ上のレベルに移動します。

# Option 1: navigate directly to the home directory
cd ~

# Option 2: navigate back one level
cd ..

cd .. は 1 つ上のレベルにしか移動しないため、これまでに 3 回ディレクトリを変更した場合(3 つ下のレベルに移動した場合)、ホーム ディレクトリに戻るには cd .. を 3 回使用する必要がありますが、cd ~ は 1 回だけ使用します。

ミニチャレンジ

  • ls を使用して、現在のディレクトリの内容を確認します。
  • ホーム ディレクトリに戻り、ls を使用してホーム フォルダの内容を確認します。
  • ホーム ディレクトリ内のフォルダのいずれかの名前を選択し、この新しいフォルダに移動します。
  • リスト コマンドを使用して、中身を確認します。

ヒント: tab を使用したオートコンプリート

cd コマンドでディレクトリを変更する場合、1 つのタイプミスでコマンドが正しく実行されなくなります。ただし、tab キーを使用すると、現在のディレクトリ内にある使用可能なディレクトリの名前が自動補完されます。したがって、cd Documents と入力する代わりに、cd Do と入力して tab キーを押すと、ターミナルがコマンド cd Documents/ を自動補完します(末尾の / は省略可能ですが、宛先がディレクトリであることを示します)。

このオートコンプリートは、機能しているときは時間を節約できるだけでなく、機能していないときは貴重な情報を提供します。タブボタンが自動補完されない場合は、次の 3 つのよくある問題のいずれかが発生している可能性があります。

  1. 移動先のディレクトリに現在の作業ディレクトリからアクセスできない。
  2. 名前の先頭が似ているディレクトリ(DocumentsDownloads など)が 2 つあり、どちらのディレクトリを希望しているかをオートコンプリートが判断するのに十分な情報が提供されていません。tab をもう一度押すと、入力した内容に一致する可能性のあるディレクトリのリストが表示されます。次に、一致するものが 1 つだけになるまで入力し、もう一度 tab を押します。
  3. 単語の前半にすでに誤字が含まれています。

タブキーを使用してコマンドを自動補完する習慣を身につけるほど、コマンドが機能していないように見えるイライラする状況に対処できるようになります。

親ディレクトリと子ディレクトリ

ディレクトリとファイルは、互いにの関係を持つことができます。directory_bdirectory_a内側にある 場合、directory_bdirectory_a の子と呼ばれます。directory_adirectory_b の親と呼ばれます。3 つ目の項目 my_filedirectory_b の内側にある場合、directory_b の子、directory_a の孫とみなされます。

これらの関係は、フォーラムで次のようなテキスト図で示されることがよくあります。

directory_a/
  directory_b/
    my_file

ディレクトリ名は / で終わりますが、ファイル名は終わりません。この階層構造は、一般にファイルシステムのツリー構造と呼ばれます。

兄弟姉妹

同じレベルに複数のファイルまたはフォルダがある場合、それらは兄弟と呼ばれます。例: file_bfile_cdirectory_a の内側に配置されている場合、それらは兄弟になります。

テキスト図は次のようになります。

directory_a/
  file_b
  file_c

file_b と file_c は兄弟であるため、同じインデントが適用されます。

File Paths

次は、親子関係と兄弟関係の両方を示す、より複雑なテキスト図です。

north_america/
  united_states/
    new_york/
      new_york_city/
        manhattan
        queens
        staten_island
        bronx
        brooklyn
    california/
      mountain_view
      los_angeles
    illinois/
      chicago
  mexico/
    mexico_city

この例では、new_york_city/ はディレクトリ名ですが、パス~/north_america/united_states/new_york/new_york_city/)も含まれています。

new_york_city/, にディレクトリを変更するには、名前を使用して段階的に移動するか、パスを使用して 1 つのコマンドで移動します。

# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/

# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/

ナビゲーション コマンドの概要

# See your current location - abbreviation for 'print working directory'
pwd

# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads

# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory

# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..

# Will take you back home
cd

ミニチャレンジ

  • pwd を使用して、現在開いているフォルダを確認します。
  • 別のディレクトリに変更して、新しい場所を確認します。
  • もう一度お試しになり、別のフォルダに移動してください。新しいコマンドを使用して、現在地とこのディレクトリ内のファイルを確認します。

ファイルとディレクトリの作成

セクションの構成と目的

デベロッパーは、コードを含むファイルを作成する必要があります。これらのファイルを整理するには、ファイルを保存するフォルダ / ディレクトリを作成する必要があります。

ファイルとフォルダを作成する前に、ターミナルでの現在地を確認してください。

# See your current location.
pwd

ファイルを作成するには、touch コマンドの後にファイル名を指定します。

# `touch` creates a new file.
touch style.css

ファイルを作成するときは、ファイル拡張子を追加してタイプを指定します。ファイル形式の例:

  • .js を JavaScript ファイルとして作成する
  • .html HTML ファイルを作成する
  • .css で CSS ファイルを作成する
  • .md がマークダウン ファイルを作成する

ファイル名にスペースを含めることはできません。

# make a file - this will create a file in the current folder
touch my_text_file.txt

# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css

複数のファイルを作成する

各名前の間にスペースを含めることで、複数のファイルを一度に作成できます。

# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

ディレクトリの作成

ディレクトリ / フォルダを作成するには、コマンド mkdir (「make directory」の略)の後にフォルダの名前を入力します。

# make a folder - this will create a directory in the current folder
mkdir my_new_folder

# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder

複数のディレクトリを作成する

名前と名前の間にスペースを入れると、複数のフォルダを一度に作成できます。

# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three

ミニチャレンジ

  • 新しいファイルを作成します。
  • 1 つのコマンドで複数のファイルを作成します。
  • 新しいディレクトリを作成します。
  • 新しいディレクトリをいくつか作成します。これを行うには、1 つのコマンドのみを使用してみてください。
  • ディレクトリの移動とファイルやフォルダの作成に関する知識を活かして、ファイルとフォルダを使用してデスクトップに「family_tree」を作成します。

移動とコピー

ファイルとディレクトリの移動

セクションの構成と目的

コマンドラインでファイルやフォルダを移動できますが、常に次の 3 つを指定する必要があります。

  1. mv コマンド(移動の略)を使用します。
  2. 移動コマンドの後に、移動するファイルまたはフォルダの名前を指定します。
  3. ファイル名の後に、移動先のパスを指定します。

たとえば、次のようなファイル構造があるとします。

my_child_folder/
my_parent_folder/

本来は親子であるべきものが兄弟になっているなど、正しく整理されていないことがわかります。次のコマンドを使用します。

# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/

結果として、構造は次のようになります。

my_parent_folder/
  my_child_folder/

mv コマンドには、次のようなバリエーションもあります。

# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder

警告: mv は、構文 mv old_name new_name を使用してファイルの名前を変更するコマンドでもあります。つまり、存在しないディレクトリにファイルを移動した場合や、移動先のスペルを間違えた場合は、ファイル自体が移動されずに名前が変更されます。

ミニチャレンジ

  1. 5 つのテキスト(.txt)ファイルを作成します。
  2. 新しいディレクトリを作成します。
  3. 作成した 5 つのファイルをフォルダに移動します。
  4. フォルダを作成し、その新しいフォルダを別のフォルダの中に移動します。

ファイルとディレクトリのコピー

セクションの構成と目的

ウェブアプリを構築する際に、ファイルを複製したい場合があります(類似した 2 つのウェブページを構築する場合、最初からやり直したくないことがあります)。cp(コピー)コマンドの構文は、mv 構文とよく似ています。

ファイルをコピーする

コピー コマンドは次の 3 つの部分で構成されています。

  1. コマンド cp - copy の省略形
  2. コピーするファイルの名前
  3. コピーの名前(同じフォルダに残す場合)、または場所と名前(別のフォルダに移動する場合)。
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt

コピーに元のファイルと同じ名前を付ける場合は、ファイル名を指定せずにコピーの場所を指定できます。

# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/

同じ名前のファイルが多数あると混乱を招く可能性があるため、この方法が必要な場合にのみ使用してください。

ディレクトリのコピー

フォルダやディレクトリのコピーは、フォルダだけでなくその中のすべてのアイテムをコピーする必要があるため、少し複雑になります。

  1. コマンド cp -R - copy recursive の略語 - 空のフォルダと空でないフォルダの両方に使用します。
  2. ソース名(移動するフォルダまたはファイル)
  3. コピーの名前(同じフォルダに残す場合)、または場所と名前(別のフォルダに移動する場合)。

警告: コピーの名前を指定する際に、ファイルまたはフォルダが以前に作成されていない場合は、コピーを作成するときに作成されます。コピー コマンドを実行する前にファイルが作成されている場合は、ファイル内の以前の内容が上書きされるため、注意が必要です。

# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy

# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy

注: cp -R-R コンポーネントはフラグと呼ばれます。フラグは常にダッシュで始まり、コマンドと組み合わせて使用され、コマンドの実行方法に関するより具体的な指示を指定します。

ミニチャレンジ

  1. my_original.txt というファイルを作成します。
  2. my_original.txt のコピーを同じフォルダに新しい名前で作成します。
  3. 新しいディレクトリを作成します。
  4. そのディレクトリのコピーを作成しますが、別の名前を付けます。
  5. コピーしたファイル(ステップ 2)のコピーを作成し、コピーしたディレクトリ(ステップ 4)に配置します。

ファイルとフォルダの削除

セクションの構成と目的

コマンドラインでファイルやフォルダを削除できますが、削除したファイルやフォルダを元に戻すことはできません。

ファイルを削除する

ファイルを削除するには、コマンド rm削除の略)の後にファイル名を指定します。

# delete a file in the working directory
rm unwanted_file.txt

# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt

空のディレクトリを削除する

空の ディレクトリを削除するには、rmdir コマンド(ディレクトリの削除の略)の後にフォルダ名を指定します。

# delete an empty folder
rmdir empty_directory

# delete an empty folder
rmdir ~/Documents/my_files/empty_directory

空でないディレクトリを削除する

空でないフォルダを削除するには、rm コマンドの後に -R フラグ(再帰的の略)を付けます。これにより、フォルダ内のコンテンツを削除するようコンピュータに指示します。ショートカットとして、一部のデベロッパーは -Rf フラグを使用します。このフラグは、すべてを強制的に削除します(このフラグを使用しないと、一部の子ファイルやフォルダの削除に関するプロンプトが表示されることがあります)。

# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty

# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty

警告: rm コマンドの使用は、メールのゴミ箱や削除済みアイテムとは異なり、これらのファイルを簡単に復元することはできません。この方法でファイルを削除する場合は、十分に注意してください。

ミニチャレンジ

  1. 4 つのファイルを作成します。
  2. 2 つのファイルを削除します。
  3. フォルダを作成します。
  4. 別のフォルダを作成し、そのフォルダ内にファイルを作成します。
  5. 両方のディレクトリを削除します。

このラボのコードは、GitHub からダウンロードした生徒用リポジトリ内の次のフォルダにあります。command-line/labs/around-the-world

背景

海外留学が間近に迫っています。ヨーロッパ旅行の計画を立てる時期です。

今後 3 か月間は、生活が忙しくなるため、週末の旅行を最大限に楽しみたいと考えています。

幸いなことに、あなたはゼロから始める必要はありません。友達が留学中に気に入ったアクティビティをいくつか教えてくれました。残念ながら、一部のファイルが混在してしまっています。

ご心配なく。コマンドラインの魔法を使えば、すぐに解決できます。

タスク

すべての都市が正しい国に属していること、各都市のフォルダに正しいモニュメントが含まれていることを確認します。間違えると、アムステルダムでエッフェル塔を探すことになります。

これに自信がある場合は、GUI を非表示にして、コマンドラインからこのチャレンジに直接取り組んでみましょう。この間は、世界一周のフォルダに留まる必要があります。つまり、フォルダやファイルを参照する際は絶対パスを使用します。

すべてが正しい場所に配置されていることを確認したら、次の数か月間を指揮する番です。ぜひ訪れたい新しい都市、国、モニュメントをブレインストーミングして、ファイルツリーに追加しましょう。

これで、これで、コンピュータの言語を話せるようになりました。さらに一歩進んでみましょう。拡張機能について説明します。

拡張機能

  1. すべてのファイルを再び混ぜ合わせ、任意の都市に移動します。その都市に滞在しながら、ファイルを再度整理します。
  2. 以下のリンク先の楽しいコマンドライン ゲームをお試しください。
    Terminus Game
    Advanced Game(Google で検索する準備をしてください)
  3. スター・ウォーズの大ファンですか?コマンドラインで telnet towel.blinkenlights.nl を実行して Enter キーを押してみてください。(なお、最近のバージョンの MacOS では telnet コマンドはデフォルトでインストールされなくなっています。この場合は、代わりに nc towel.blinkenlights.nl 23 コマンドを使用できます)。

このラボのコードは、GitHub からダウンロードした生徒用リポジトリ内の次のフォルダにあります。command-line/labs/bashing-away-repetition

コマンドラインの日常的な使用で繰り返される操作を減らす準備はできましたか?私もです。

背景

プログラマーが最も嫌うのは、繰り返しです。コンピュータ サイエンティストの仕事は、コンピュータにできるだけ多くの作業をさせることです。bash スクリプトを作成すると、コマンドラインの使用を効率化できます。

まず、bash スクリプトとは何でしょうか?

素晴らしい質問です。幸いなことに、コマンドライン チュートリアルを見つけるのに最適な場所の Ryan Chadwick が、この質問に答えてくれました。

Bash スクリプトを使用すると、一連のアクションを定義できます。これにより、コマンドを自分で入力しなくても、コンピュータがアクションを実行します。特定のタスクが頻繁に行われる場合や、 繰り返し行われる場合、スクリプトは便利なツールになります。

繰り返しがない場合それこそが私が言っていることです。

チュートリアル

まず、スクリプトを実行できるようにするには、パソコンに権限を付与する必要があります。これを行うには、次のコマンドを実行します。

chmod 755 myScript.sh

それでは、最初のプログラムを作成しましょう。myScript.sh に移動します(コマンドラインからファイルを開けるかどうかを確認します)。ファイルの末尾に次を追加します。

echo "Hello World"

次に以下のコマンドを実行します。

./myScript.sh

ターミナルで実行します。** TA DA ** ターミナルに「Hello World」と表示されます。

お祝い

bash スクリプトに記述した内容は、ターミナルに入力したかのように実行されます。拡張機能の説明に入る前に、もう 1 つ例を見てみましょう。まず、スクリプトのファイルを作成します。ファイル名は任意ですが、拡張子は .sh にする必要があります。次に、ターミナルで chmod 755 とスクリプトの名前を入力して Enter キーを押し、スクリプトの実行権限を付与します。新しい bash スクリプトを開始するたびに、必ずこの 2 つの手順を完了してください。

入門チャレンジ

それでは、新しいフォルダを作成するスクリプトを書いてみましょう。新しいフォルダを作成するコマンドは何ですか?m で始まり kdir で終わる単語を思い浮かべているなら、正解です。新しいフォルダを作成してクールな名前を付けるコマンドを新しい .sh ファイルに記述し、ターミナルで実行します。

問題が解決した場合は、以下に記載されている他のチャレンジに進みます。まだ少し混乱している場合は、世界一周ラボを振り返り、新しい国と都市のフォルダをどのように作成したかを考えてみてください。

上記のチュートリアルを参考にしながら、Google 検索のスキルを駆使して、次の処理を行うスクリプトを作成して実行します。

メインクエスト

  1. 作成したファイルに、作成するフォルダに移動するコマンドを追加します。(ディレクトリを変更するにはどのコマンドを使用しますか?)
  • 新しいフォルダ名に日付スタンプを追加します。たとえば、プログラムは「2017-12-07my_super_cool_folder」という名前のフォルダを作成する必要があります。
  1. 「My current directory is: 」に続いて作業ディレクトリが表示され、「Here is a list of everything in this directory! 」に続いてディレクトリ内のすべてのリストが表示されます。" の後に現在のディレクトリの内容が表示されます。
  2. bash スクリプトに入力を指定し、その入力文字列に基づいてファイルを作成する方法を考えます。このラボの前半でリンクしたチュートリアルの変数セクションに、優れた例がいくつかあります。
  3. ユーザーの名前を尋ね、「はじめまして、ここに名前を挿入」と出力する
  • お客様に追加情報を求め、カスタマイズしたメッセージを作成してみてください。

コンテキスト

コマンドライン(またはターミナル)を使用すると、コンピュータのオペレーティング システム(OS)を直接操作できます。グラフィカル ユーザー インターフェース(GUI)で行う操作(ナビゲーション、新しいファイルの作成、スクリプトの実行など)をすべてテキスト コマンドで行うことができます。コマンドラインは、ファイルのオープンや、Google App Engine の使用時の開発環境の開始に使用されます。

コマンドラインの動作

ターミナルへのアクセス

Mac のショートカット:

  • Command + スペースキーで Spotlight を開きます。
  • Spotlight 検索で「ターミナル」と入力します。
# See your current location - abbreviation for 'print working directory'.
pwd

# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads

# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory

# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..

# Return home.
cd

# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```

#### File Path Shorthand `~`

The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.

This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.

### <a id="view"></a>Viewing the Contents of Folders

```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls

ファイルとフォルダの作成

ファイルの作成

# Make a file - this will create a file in the current folder.
touch my_text_file.txt

# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css

# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

フォルダの作成

# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder

# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder

# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three

ファイルとフォルダの移動

ファイルの移動

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist.  Read below for more details on renaming.

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder

フォルダの移動

# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder

# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder

移動は名前の変更

mv は、ファイルやフォルダの名前変更にも使用されるコマンドです。

# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt

ファイルとフォルダのコピー

ファイルのコピー

# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt

フォルダのコピー

# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy

# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy

ファイルとフォルダの削除

ファイルの削除

# Delete a file in the current working directory.
rm unwanted_file.txt

# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt

フォルダの削除

# Delete an empty folder.
rmdir empty_directory

# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty

ヒントとアドバイス

  • 必要ないと思っても、コマンドラインの使用を練習してください。時間が経つにつれて、上達していきます。
  • tab キーを押すと、ファイル名またはフォルダ名が自動補完されます(大文字と小文字が区別される場合があります)。
  • 一致するファイルまたはフォルダが 1 つだけ残っている場合は、自動補完されます。
  • 一致するファイルまたはフォルダが複数ある場合は、Tab キーを 2 回押すと、残りの一致結果のリストが表示されます。
  • 上矢印キーと下矢印キーでコマンド履歴を切り替えることができるため、コマンドを再入力する必要はありません。
  • clear コマンドを使用して、ターミナル ウィンドウをクリアします。これにより、以前の作業がすべて保持されます。上にスクロールして確認してください。
  • reset を使用してターミナルを再起動します。これにより、以前の作業が画面に表示されなくなりますが、ターミナルが予測できない動作をする場合は、いくつかの問題を解決できます。
  • option+arrow キーを押して、カーソルを単語単位で移動します

ベスト プラクティスの概要

  • cdcd ..、または cd <folder name> を使用してターミナルを操作します。
  • ls を使用してフォルダの内容を表示します。
  • touch を使用してファイルを作成し、mkdir を使用してフォルダを作成します。
  • mv <item to move> <destination> を使用してファイルとフォルダを移動します。
  • cp <item to copy> <destination> を使用してファイルとフォルダをコピーします。
  • rm <item to remove> を使用してファイルとフォルダを削除します。

問題 1

現在の作業ディレクトリを特定するには、何を使用しますか?

  1. pwd
  2. ls
  3. cd
  4. mkdir
  5. touch

問題 2

現在の作業ディレクトリから 2 つ上のレベルに移動するにはどうすればよいですか?

  1. mv ~
  2. cd ../..
  3. mv up/up
  4. cd ^(2)

問題 3

ファイルの名前を変更するには、どのコマンドを使用しますか?

  1. mv
  2. cd
  3. ls
  4. python
  5. rename

問題 4

コマンド mv script.py がエラーをスローするのはなぜですか?

  1. script.py」は無効なファイル名であるため。
  2. mv コマンドの後に他の情報を指定することはできません。
  3. これはひっかけ問題です。エラーは発生しません。
  4. ファイルを移動するには、少なくとも 2 つの引数(ターゲットと宛先)が必要であるためです。

問題 5

コマンド cd ~ は何を行いますか?

  1. 作業ディレクトリをホーム ディレクトリに変更します。
  2. 前のコマンドを繰り返します。
  3. アルゴリズムを使用して、現時点で最も有用なコマンドを決定します。
  4. エラーをスローします。

問題 6

次のうち、タブキーを使用してファイル名を自動補完する理由として適切でないものはどれですか?

  1. 時間を節約できるからです。
  2. スペルミスをなくすのに役立つからです。
  3. 処理能力が少なくて済むためです。

問題 7

新しいデベロッパーが「my script.py」というファイルを作成しようとすると、コマンド touch my script.py が機能しないのはなぜですか?

  1. touch は新しいファイルを作成できないためです。
  2. .py は有効なファイル拡張子ではないため。
  3. 1 つではなく、「my」と「script.py」という 2 つのファイルが作成されるためです。
  4. コマンドラインから新しいファイルを作成することはできないためです。

問題 1

現在の作業ディレクトリを特定するには、何を使用しますか?

pwd

問題 2

現在の作業ディレクトリから 2 つ上のレベルに移動するにはどうすればよいですか?

cd ../.. を使用すると、2 つ上のレベルに移動します(各 .. は 1 つ上のレベルを表します)。

問題 3

ファイルの名前を変更するには、どのコマンドを使用しますか?

mv は、ファイルをある場所から別の場所に移動するために使用され、ファイル名の変更にも使用できます。

問題 4

コマンド mv script.py がエラーをスローするのはなぜですか?

mv コマンドには、ソースファイルと宛先ファイルの 2 つの引数が必要です。

問題 5

コマンド cd ~ は何を行いますか?

作業ディレクトリがホーム ディレクトリに変更されます。特殊文字 ~ は、現在のユーザーのホーム ディレクトリを識別するために使用されます。別のユーザー名と組み合わせて使用することもできます。たとえば、~user2 はそのユーザーのホーム フォルダを指します。

問題 6

次のうち、タブキーを使用してファイル名を自動補完する理由として適切でないものはどれですか?

処理能力が少なくて済むため不正解です。tab は、フォルダをスキャンしてファイル名を自動補完するために、わずかな処理能力を必要としますが、時間を節約し、スペルミスを回避できます。

問題 7

新しいデベロッパーが「my script.py」というファイルを作成しようとすると、コマンド touch my script.py が機能しないのはなぜですか?

1 つではなく 2 つのファイルが作成されます。touch コマンドは新しいファイルを作成します。ターミナルでは、スペースは区切り文字であり、ファイル名に含める文字ではありません。これらの文字は完全に避けるのが最善ですが、どうしても使用する必要がある場合は、ファイル名を二重引用符で囲む必要があります。

touch "my script.py"

問題 1

ディレクトリを変更するターミナル コマンドは次のとおりです。

  1. move
  2. mkdir
  3. pwd
  4. cd

問題 2

現在の作業ディレクトリの親フォルダに移動するには、どのコマンドを実行しますか?

  1. cd up
  2. cd .
  3. cd ..
  4. cd ~

問題 3

ファイルの作成に使用されるコマンドはどれですか?

  1. touch
  2. mkdir
  3. create
  4. pwd

問題 4

次のコマンドのうち、index.htmlstyle.css という 2 つのファイルを作成するものはどれですか?

  1. touch index.html, touch style.css
  2. touch index.html, style.css
  3. touch index.html style.css
  4. touch index.html + style.css

問題 5

ファイルまたはフォルダの名前を変更するには、どのコマンドを使用しますか?

  1. rename
  2. move
  3. mv
  4. rm

問題 6

rm コマンドと cp コマンドがフォルダで動作するために必要なフラグは何ですか?

  1. -f
  2. -r
  3. -x
  4. -d

問題 7

projects ~/Documents に移動して Projects に名前を変更するには、空白にどのコマンドを入力する必要がありますか?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
  1. pwd
  2. cd projects
  3. mv ~ projects
  4. cd ~/Documents
  5. ls

問題 8

次のコマンドは何を行いますか?

rm -r projects

  1. projects というファイルを削除する
  2. projects というフォルダを削除する
  3. projects というファイルの名前を変更する
  4. 現在のディレクトリのコンテンツで projects を検索する

問題 1

ディレクトリを変更するターミナル コマンドは次のとおりです。

ディレクトリを変更するターミナル コマンドは cd です。このコマンド自体は「change directory」の略称です。

問題 2

現在の作業ディレクトリの親フォルダに移動するには、どのコマンドを実行しますか?

親フォルダに移動するコマンドは cd .. です。

問題 3

ファイルの作成に使用されるコマンドはどれですか?

ファイルを作成するコマンドは touch です

問題 4

次のコマンドのうち、index.htmlstyle.css という 2 つのファイルを作成するものはどれですか?

コマンド touch index.html style.css を実行すると、2 つのファイルが作成されます。カンマは不要で、スペースで区切って任意の数のファイルを作成できます。

問題 5

ファイルまたはフォルダの名前を変更するには、どのコマンドを使用しますか?

mv は「移動」を意味し、ファイルやフォルダの移動に使用できますが、ファイルやフォルダの名前の変更にも使用できます

問題 6

rm コマンドと cp コマンドがフォルダで動作するために必要なフラグは何ですか?

rm コマンドと cp コマンドは、フォルダで動作するために -r フラグを必要とします。-r

問題 7

projects ~/Documents に移動して Projects に名前を変更するには、空白にどのコマンドを入力する必要がありますか?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects

ホーム ディレクトリから開始するため、正しいディレクトリで実行される最終的なコマンドを取得するには、cd ~/Documents を実行する必要があります。

問題 8

次のコマンドは何を行いますか?

rm -r projects

このコマンドは、-r(再帰)フラグを指定して呼び出されるため、projects というファイルまたはフォルダのいずれかを削除します。 このフラグがないと、このコマンドは同じ名前のファイルを削除する場合にのみ機能します。