コマンドラインの教材

コマンドラインは、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 よりも大きなメリットがあります。これは、旅行などでデベロッパーが頻繁に行う作業です。

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

学習目標

生徒は

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

Google Cloud

ターミナルへのアクセス

セクション内の構成と目的

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

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

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

ターミナルの中ではディレクトリフォルダと同じです(このディレクトリは「ディレクトリ」と呼ばれることもあります)。

ディレクトリの変更

セクション内の構成と目的

ターミナルでパソコンに話しかけて、目的の操作を伝えるには、共通の言語を使用する必要があります。コマンドラインは、bash スクリプト言語で記述されたコマンドについて理解します。コマンドは、英単語の略語や略語です。

端末でナビを利用する場合は、現在地を正確に把握することが重要です(これは実際の生活に直接反映されます。どこかに行くには、まず現在地を把握する必要があります)。

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

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

作業ディレクトリ内には、アクセスできるファイルが複数あるはずです。通常は、利用可能なアイテムを判断するにはアイコンなどの視覚的な合図を使用しますが、ファイルやフォルダの場所を推測しているだけでは、パソコンの操作は困難です。コマンドラインでは、特定のコマンドを使用して、特定の作業ディレクトリや任意の場所からアクセスできるものを一覧表示します。

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

# 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 を使用してホームフォルダの内容を表示します。
  • ホーム ディレクトリ内にあるいずれかのフォルダの名前を選択して、この新しいフォルダに移動します。
  • list コマンドを使用すると、内部の内容を確認できます。

ヒント: 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_a はその後、directory_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 コマンド(move の略)を使用します。
  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 構文と非常によく似ています。

ファイルのコピー

copy コマンドは次の 3 つの部分から構成されます。

  1. コマンド cp - コピーの略語
  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 -Rcopy 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 でコピーしたディレクトリに配置します。

ファイルおよびフォルダの削除

セクション内の構成と目的

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

ファイルを削除する

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

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

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

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

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

# delete an empty folder
rmdir empty_directory

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

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

空でないフォルダを削除するには、フォルダ内のコンテンツを削除するようコンピュータに指示する rm コマンドの後に、フラグ -Rrecursive の略)を設定する必要があります。簡単な方法としては、すべてのデベロッパーが強制的にフラグ -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. 出力先: 現在のディレクトリ: " の後に作業ディレクトリが続き、さらにこのディレクトリ内の全リストを表示" に続けて現在のディレクトリの内容を入力します。
  2. bash スクリプトに入力を行い、その入力文字列に基づいてファイルを作成します。ラボで先ほどリンクしたチュートリアルで、[変数] セクションに優れた例をいくつか紹介しています。
  3. ユーザーに名前を尋ねて印刷した後、「はじめまして」こちらに名前を挿入
  • ユーザーに詳細情報の提供を求め、それに合わせたカスタム メッセージを作成します。

コンテキスト

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

コマンドラインの実際の動作

ターミナルへのアクセス

Mac のショートカット:

  • Command+Space キーを押して Spotlight を開きます。
  • スポットライト検索で「Terminal」と入力します。
# 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. エラーをスローします。

Question 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」をホームフォルダを指定することもできます。

Question 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

Question 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

Question 8

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

rm -r projects

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

問題 1

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

ディレクトリを変更するためのターミナル コマンドは cd です。コマンド自体は &change の略です。

問題 2

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

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

問題 3

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

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

問題 4

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

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

問題 5

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

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

Question 6

フォルダに対して機能する必要がある rm コマンドと cp コマンドは何ですか。

rm および cp のコマンドでは、フォルダに対して機能するための -r フラグが必要です-r フラグは「recursive」を表し、その中のファイルとフォルダに対してコマンドを再実行します。

問題 7

projects ~/Documents に移動して Projects に変更するには、空白のままにする必要があるコマンドはどれですか。

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

最初にホーム ディレクトリに移動するため、最終的なコマンドを正しいディレクトリで実行するには、cd ~/Documents を実行する必要があります。

Question 8

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

rm -r projects

このコマンドはファイルまたは projects というフォルダを削除します。これは -r または再帰フラグで呼び出されるためです。このフラグがない場合、このコマンドは該当する名前のファイルのみを削除します。