ファイルとディレクトリのナビゲーション

最終更新日:2024-11-22 | ページの編集

所要時間: 40分

概要

質問

  • コンピュータ上をどのように移動できますか?
  • 自分の持っているファイルやディレクトリをどのように確認できますか?
  • コンピュータ上のファイルやディレクトリの場所をどのように指定しますか?

目的

  • ファイルとディレクトリの類似点と相違点を説明する。
  • 絶対パスを相対パスに、またはその逆に変換する。
  • 特定のファイルやディレクトリを識別する絶対パスと相対パスを構築する。
  • シェルコマンドの動作を変更するためにオプションと引数を使用する。
  • タブ補完の使用方法を実演し、その利点を説明する。

シェルでファイルシステムを紹介しナビゲートすること (ファイルとディレクトリのナビゲーション セクションでカバー) は混乱を招くことがあります。学習者がターミナルとGUIファイルエクスプローラーの両方を 並べて開き、ターミナルを使用してシステムをナビゲートする間にコンテンツやファイル構造を確認できるようにすることをお勧めします。

ファイルとディレクトリを管理するオペレーティングシステムの部分はファイルシステムと呼ばれます。 これはデータをファイル(情報を保持するもの)と、 ディレクトリ(「フォルダ」とも呼ばれる。ファイルや他のディレクトリを保持するもの)に整理します。

ファイルやディレクトリを作成、確認、名前変更、削除するために頻繁に使用されるコマンドがいくつかあります。 これらを探求し始めるために、開いているシェルウィンドウを使用します。

まず、自分がどこにいるかを確認するために、pwdというコマンドを実行します (これは「print working directory」の略です)。ディレクトリは場所のようなもので、 シェルを使用している間、常に現在の作業ディレクトリと呼ばれる1つの場所にいます。 コマンドは主に現在の作業ディレクトリ、つまり「ここ」でファイルを読み書きするので、 コマンドを実行する前に自分がどこにいるのかを知ることが重要です。 pwdを実行すると現在の場所が表示されます。

BASH

$ pwd

出力

/Users/nelle

ここで、 コンピュータの応答は/Users/nelleとなっており、 これはNelleのホームディレクトリです。

ホームディレクトリのバリエーション

ホームディレクトリのパスは、オペレーティングシステムによって異なります。 Linuxでは、/home/nelleのように見えるかもしれませんし、 WindowsではC:\Documents and Settings\nelleC:\Users\nelleに似ているかもしれません。 (Windowsのバージョンによって少し異なる場合があります。) 今後の例では、Macの出力をデフォルトとして使用していますが、 LinuxやWindowsの出力も若干異なる可能性がありますが、概ね似ています。

また、pwdコマンドがユーザーのホームディレクトリを返すと仮定します。 pwdが異なるものを返す場合、cdを使用してそこに移動する必要があり、 このレッスンの一部のコマンドはそのままでは機能しない場合があります。 cdコマンドの詳細については他のディレクトリの探索を参照してください。

「ホームディレクトリ」が何であるかを理解するために、 ファイルシステム全体がどのように構成されているかを見てみましょう。 この例のために、科学者Nelleのコンピュータのファイルシステムを例に示します。 この後、自分のファイルシステムを探索するためのコマンドを学びます。 自分のファイルシステムは同様に構築されていますが、完全には一致しません。

Nelleのコンピュータのファイルシステムは次のようになっています。

ファイルシステムは、bin、data、users、tmpといったサブディレクトリを含むルートディレクトリで構成されています

ファイルシステムは逆さの木のように見えます。 最上位のディレクトリはルートディレクトリで、 それ以外のすべてを保持します。 これはスラッシュ文字/単独で表されます。 この文字は、/Users/nelleの先頭にあるスラッシュでもあります。

そのディレクトリの中には、他にもいくつかのディレクトリがあります: bin(いくつかの組み込みプログラムが格納されている場所)、 data(様々なデータファイル用)、 Users(ユーザーの個人ディレクトリが格納されている場所)、 tmp(長期保存が必要でない一時ファイル用)などです。

現在の作業ディレクトリ/Users/nelle/Usersの中に格納されていることは、 その名前の最初の部分が/Usersであることから分かります。 同様に、 /Usersがルートディレクトリ/の中に格納されていることは、 その名前が/で始まっていることから分かります。

スラッシュ

/文字には2つの意味があることに注意してください。 ファイルやディレクトリ名の先頭に現れるときはルートディレクトリを指します。 パスの内部に現れるときは、単なる区切り文字です。

/Usersの下には、 Nelleのマシンのアカウントを持つ各ユーザーのための1つのディレクトリがあります。 彼女の同僚imhoteplarryも含まれます。

/Usersの下に、"/Users/imhotep"、"/Users/larry"、"/Users/nelle"のようなサブディレクトリとして、ホームディレクトリが存在します

ユーザーimhotepのファイルは/Users/imhotepに格納され、 ユーザーlarryのファイルは/Users/larryに格納されています。 そして、Nelleのファイルは/Users/nelleに格納されています。 ここでの例ではNelleがユーザーです。 そのため、ホームディレクトリとして/Users/nelleを取得します。 通常、新しいコマンドプロンプトを開くと、 ホームディレクトリにいる状態から始まります。

次に、自分のファイルシステムの内容を確認するコマンドを学びます。 ホームディレクトリの内容を確認するには、lsを実行します:

BASH

$ ls

出力

Applications Documents    Library      Music        Public
Desktop      Downloads    Movies       Pictures

(オペレーティングシステムやファイルシステムのカスタマイズ方法によって、 結果が若干異なる場合があります。)

lsは、現在のディレクトリ内のファイルやディレクトリの名前を表示します。 -F オプションを使用すると、 出力に分類記号を追加して、よりわかりやすくすることができます。

  • 末尾の/は、ディレクトリであることを示します。
  • @はリンクを示します。
  • *は実行可能ファイルを示します。

シェルのデフォルト設定によっては、 ファイルやディレクトリかどうかを示すために色分けが使用される場合もあります。

BASH

$ ls -F

出力

Applications/ Documents/    Library/

      Music/        Public/
Desktop/      Downloads/    Movies/       Pictures/

ここで、 ホームディレクトリにはサブディレクトリのみが含まれていることがわかります。 出力に分類記号が付いていない名前は、 現在の作業ディレクトリ内のファイルです。

ターミナルのクリア

画面が混雑しすぎた場合は、clearコマンドを使用してターミナルをクリアできます。 以前のコマンドには、およびキーで 1行ずつ移動するか、ターミナル内でスクロールすることでアクセスできます。

ヘルプの取得

lsには多くのオプションがあります。コマンドの使い方や受け付けるオプションを知る方法は2つあり、環境によってはどちらか一方しか動作しない場合があります。

  1. コマンドに--helpオプションを付ける(LinuxやGit Bashで利用可能)、例:

BASH

$ ls --help
  1. マニュアルを読むためにmanを使用する(LinuxやmacOSで利用可能):

BASH

$ man ls

次に、それぞれの方法について説明します。

組み込みコマンドのヘルプ

一部のコマンドは、ファイルシステム上の個別のプログラムではなく、Bashシェルに組み込まれています。例としてcd(ディレクトリを変更するコマンド)があります。No manual entry for cdというメッセージが表示された場合は、代わりにhelp cdを試してください。 helpコマンドを使用すると、 Bashの組み込みコマンド の使用情報を取得できます。

--helpオプション

ほとんどのbashコマンドやbash内で実行するために作成されたプログラムは、 --helpオプションをサポートしており、コマンドやプログラムの使用方法に関する詳細情報を表示します。

BASH

$ ls --help

出力

Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if neither -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options, too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
      --block-size=SIZE      scale sizes by SIZE before printing them; e.g.,
                               '--block-size=M' prints sizes in units of
                               1,048,576 bytes; see SIZE format below
  -B, --ignore-backups       do not list implied entries ending with ~
  -c                         with -lt: sort by, and show, ctime (time of last
                               modification of file status information);
                               with -l: show ctime and sort by name;
                               otherwise: sort by ctime, newest first
  -C                         list entries by columns
      --color[=WHEN]         colorize the output; WHEN can be 'always' (default
                               if omitted), 'auto', or 'never'; more info below
  -d, --directory            list directories themselves, not their contents
  -D, --dired                generate output designed for Emacs' dired mode
  -f                         do not sort, enable -aU, disable -ls --color
  -F, --classify             append indicator (one of */=>@|) to entries
...        ...        ...

短いオプションと長いオプションの使い分け

短いオプションと長いオプションが両方存在する場合:

  • コマンドを直接シェルに入力する場合は、入力を最小限にして作業を迅速に進めるために短いオプションを使用します。
  • スクリプト内では長いオプションを使用し、読みやすさを重視します。 これにより、何度も読み返すスクリプトを簡単に理解できます。

サポートされていないコマンドラインオプション

サポートされていないオプションを使用しようとすると、lsやその他のコマンドは通常次のようなエラーメッセージを出力します:

BASH

$ ls -j

エラー

ls: invalid option -- 'j'
Try 'ls --help' for more information.

manコマンド

lsについて学ぶもう一つの方法は、次のように入力することです:

BASH

$ man ls

このコマンドはターミナルをlsコマンドとそのオプションについての説明が記載されたページに切り替えます。

manページをナビゲートするには、 およびキーを使用して1行ずつ移動するか、 bおよびSpacebarを使用して1ページ分上または下にスキップします。 manページ内で文字や単語を検索するには、 /を押し、その後検索したい文字や単語を入力します。 検索結果が複数ある場合、 N(前方への移動)や Shift+N(後方への移動)を使って結果間を移動できます。

終了するには、qを押します。

ウェブでのマニュアルページ

コマンドのヘルプにアクセスするもう一つの方法は、 ウェブブラウザを使用してインターネットで検索することです。 検索クエリに「unix man page」というフレーズを含めると、 関連する結果を見つけやすくなります。

GNUは、 マニュアルGNUコアユーティリティ へのリンクを提供しており、 このレッスンで紹介した多くのコマンドが含まれています。

より多くのlsオプションの探求

2つのオプションを同時に使用することもできます。-lオプションを使用するとlsコマンドはどう動作しますか? また、-lオプションと-hオプションの両方を使用するとどうなりますか?

出力にはこのレッスンで取り扱わないプロパティ(例えば、ファイルのパーミッションや所有権)に関するものも含まれますが、それ以外の部分は役立つはずです。

-lオプションを使用すると、ls長いリスト形式で出力され、 ファイルやディレクトリ名だけでなく、ファイルサイズや最終変更時間などの追加情報も表示されます。 -hオプションと-lオプションの両方を使用すると、 ファイルサイズが「人間が読みやすい」形式になり、例えば5.3Kのように表示されます。

逆時系列順でのリスト表示

デフォルトでは、lsはディレクトリ内の内容を名前のアルファベット順にリストします。 ls -tコマンドは、名前のアルファベット順ではなく、最終変更時刻順に項目をリストします。 また、ls -rコマンドはディレクトリの内容を逆順でリストします。 -tオプションと-rオプションを組み合わせた場合、どのファイルが最後に表示されますか? ヒント:最終変更日の確認には、-lオプションを使用する必要があるかもしれません。

-rtオプションを使用すると、最後に表示されるのは最も最近変更されたファイルです。 これは、最新の編集内容を見つけたり、新しい出力ファイルが書き込まれたかを確認する際に非常に便利です。

他のディレクトリを探索する

lsは現在の作業ディレクトリだけでなく、 別のディレクトリの内容をリストするためにも使用できます。 Desktopディレクトリを例にしてみましょう。 ls -F Desktop、つまりlsコマンドに-F オプション引数 Desktopを付けて実行します。 引数Desktopは、 現在の作業ディレクトリ以外のリストを取得したいことをlsに伝えます:

BASH

$ ls -F Desktop

出力

shell-lesson-data/

現在の作業ディレクトリにDesktopという名前のディレクトリが存在しない場合、 このコマンドはエラーを返します。通常、Desktopディレクトリはホームディレクトリ内に存在します。 ホームディレクトリが現在のbashシェルの作業ディレクトリであると仮定しています。

出力は、Desktopディレクトリ内のすべてのファイルやサブディレクトリをリストします。 これには、このレッスンのセットアップ時にダウンロードしたshell-lesson-dataディレクトリも含まれます。 (ほとんどのシステムでは、シェル内でのDesktopディレクトリの内容が、すべての開いているウィンドウの背後にあるグラフィカルユーザーインターフェースでアイコンとして表示されます。 これはあなたの環境でも同じかどうか確認してみてください。)

階層的に整理することで、作業を把握しやすくなります。ホームディレクトリに数百のファイルを置くことも可能ですが、 ちょうど机の上に数百枚の紙を積み上げるようなもので、意味のある名前のサブディレクトリに整理されているほうが見つけやすくなります。

shell-lesson-dataディレクトリがDesktopディレクトリ内にあることがわかったので、2つのことができます。

1つ目は、先ほどと同じ方法で、ディレクトリ名をlsに渡してその内容を確認することです:

BASH

$ ls -F Desktop/shell-lesson-data

出力

exercise-data/  north-pacific-gyre/

2つ目は、実際に別のディレクトリに移動して、ホームディレクトリ以外の場所に作業ディレクトリを変更することです。

場所を変更するコマンドはcdで、その後にディレクトリ名を指定して作業ディレクトリを変更します。 cdは「ディレクトリを変更する」(change directory)を意味しますが、少し誤解を招きます。 このコマンドはディレクトリそのものを変更するわけではなく、 シェルの現在の作業ディレクトリを変更します。 言い換えれば、シェルの設定として現在いるディレクトリを変更するのです。 cdコマンドは、グラフィカルインターフェースでフォルダをダブルクリックしてその中に入る操作に似ています。

先ほど見たexercise-dataディレクトリに移動したいとします。この場合、次の一連のコマンドを使用します:

BASH

$ cd Desktop
$ cd shell-lesson-data
$ cd exercise-data

これらのコマンドにより、ホームディレクトリからDesktopディレクトリ、次にshell-lesson-dataディレクトリ、 最後にexercise-dataディレクトリへと移動します。 cdは何も出力しないことに気づくでしょう。これは正常です。 多くのシェルコマンドは、成功した場合には何も画面に表示しません。 ただし、pwdを実行すれば、 現在の場所が/Users/nelle/Desktop/shell-lesson-data/exercise-dataであることが確認できます。

現在、引数なしでls -Fを実行すると、 /Users/nelle/Desktop/shell-lesson-data/exercise-dataの内容がリストされます。 これは、現在いる場所だからです:

BASH

$ pwd

出力

/Users/nelle/Desktop/shell-lesson-data/exercise-data

BASH

$ ls -F

出力

alkanes/  animal-counts/  creatures/  numbers.txt  writing/

これで、ディレクトリツリーを下に移動する方法(つまり、サブディレクトリに入る方法)がわかりましたが、 上に移動するにはどうすればよいでしょうか(つまり、ディレクトリを出て親ディレクトリに移動する方法)? 以下を試してみるかもしれません:

BASH

$ cd shell-lesson-data

エラー

-bash: cd: shell-lesson-data: No such file or directory

しかし、エラーになります!これはなぜでしょうか?

これまでの方法では、 cdは現在のディレクトリ内のサブディレクトリしか認識できません。 現在の場所の上位ディレクトリを見るにはいくつかの方法がありますが、まずは最も簡単な方法から始めます。

シェルには1つ上のディレクトリに移動するためのショートカットがあります。この方法は次のとおりです:

BASH

$ cd ..

..は「このディレクトリを含むディレクトリ」、つまり現在のディレクトリのを意味する特別なディレクトリ名です。 実際に、cd ..を実行した後にpwdを実行すると、/Users/nelle/Desktop/shell-lesson-dataに戻っていることがわかります:

BASH

$ pwd

出力

/Users/nelle/Desktop/shell-lesson-data

特別なディレクトリ..は通常lsを実行しても表示されません。表示させるには、ls -F-aオプションを追加します:

BASH

$ ls -F -a

出力

./  ../  exercise-data/  north-pacific-gyre/

-aは「すべてを表示」(hiddenファイルを含む)を意味します; これにより、...など、.で始まるファイルやディレクトリ名を表示させることができます。 たとえば、../Users/nelle内にいる場合、/Usersディレクトリを指します)。 また、 .と呼ばれるもう1つの特別なディレクトリも表示されます。 これは「現在の作業ディレクトリ」を意味します。 冗長に思えるかもしれませんが、すぐにこれを使用する場面がわかるでしょう。

ほとんどのコマンドラインツールでは、複数のオプションを1つの-でスペースを入れずに組み合わせることができます。 たとえば、ls -F -als -Faと同等です。

他の隠しファイル

隠しディレクトリの...に加えて、.bash_profileというファイルが表示される場合もあります。 このファイルには通常、シェルの設定が含まれています。他にも.で始まるファイルやディレクトリが見えることがあります。 これらは通常、コンピュータ上のさまざまなプログラムの設定に使用されるファイルやディレクトリです。 接頭辞.は、標準のlsコマンドを使用したときにこれらの設定ファイルが端末を煩雑にしないようにするために使用されます。

これで、コンピュータ上のファイルシステムをナビゲートするための基本コマンド、 pwdlscdがわかりました。 これらのコマンドのいくつかのバリエーションを探りましょう。 引数を指定せずにcdと入力した場合、どうなるでしょうか?

BASH

$ cd

何が起きたのかを確認するには?pwdが答えを教えてくれます!

BASH

$ pwd

出力

/Users/nelle

引数なしのcdはホームディ

レクトリに戻ることがわかります。 これは、自分のファイルシステムで迷子になったときに便利です。

先ほどのexercise-dataディレクトリに戻ってみましょう。前回は3つのコマンドを使いましたが、 実際には、ディレクトリのリストをまとめて指定して1回でexercise-dataに移動することもできます:

BASH

$ cd Desktop/shell-lesson-data/exercise-data

pwdls -Fを実行して、正しい場所に移動したことを確認してください。

データディレクトリから1つ上のレベルに移動したい場合は、cd ..を使用できます。 しかし、現在の場所に関係なく任意のディレクトリに移動する別の方法もあります。

これまでディレクトリ名やディレクトリパスを指定する際に使用してきたのは相対パスでした。 lscdのようなコマンドで相対パスを使用すると、現在の場所からその場所を探します。

しかし、ルートディレクトリから始まる絶対パスを指定することで、 そのファイルシステム上のどこからでも1つのディレクトリを指定できます。 先頭のスラッシュ(/)はファイルシステムのルートからパスをたどることをコンピュータに指示するため、 コマンドを実行する場所に関係なく、常に正確に1つのディレクトリを指します。

これにより、shell-lesson-dataディレクトリにどこからでも移動できます(たとえば、exercise-data内からでも)。 探している絶対パスを見つけるには、pwdを使用して必要な部分を抽出します:

BASH

$ pwd

出力

/Users/nelle/Desktop/shell-lesson-data/exercise-data

BASH

$ cd /Users/nelle/Desktop/shell-lesson-data

pwdls -Fを実行して、期待通りのディレクトリにいることを確認してください。

もう2つのショートカット

シェルは、パスの先頭にあるチルダ(~)文字を 「現在のユーザーのホームディレクトリ」を意味するものとして解釈します。 たとえば、Nelleのホームディレクトリが/Users/nelleの場合、~/data/Users/nelle/dataと同等です。これは、パスの最初の文字として使用される場合にのみ機能します。 例えば、here/there/~/elsewherehere/there/Users/nelle/elsewhereを意味しません。

もう1つのショートカットは-(ハイフン)文字です。cd-を 「以前にいたディレクトリ」として解釈します。 これにより、完全なパスを覚えて入力する必要がなくなり、 非常に効率的に2つのディレクトリ間を 行き来することができます。 たとえば、cd -を2回実行すると、元のディレクトリに戻ります。

cd ..cd -の違いは、 前者は「上に移動」するのに対し、後者は「戻る」ことです。


試してみましょう! まず、~/Desktop/shell-lesson-dataに移動します(すでにそこにいるはずです)。

BASH

$ cd ~/Desktop/shell-lesson-data

次に、exercise-data/creaturesディレクトリにcdします。

BASH

$ cd exercise-data/creatures

次に、以下を実行すると

BASH

$ cd -

~/Desktop/shell-lesson-dataに戻ります。 さらにもう一度cd -を実行すると、 ~/Desktop/shell-lesson-data/exercise-data/creaturesに戻ります。

絶対パスと相対パス

/Users/nelle/dataから開始して、 Nelleがホームディレクトリ(/Users/nelle)に移動するために使用できるコマンドは次のうちどれでしょうか?

  1. cd .
  2. cd /
  3. cd /home/nelle
  4. cd ../..
  5. cd ~
  6. cd home
  7. cd ~/data/..
  8. cd
  9. cd ..
  1. いいえ:.は現在のディレクトリを意味します。
  2. いいえ:/はルートディレクトリを意味します。
  3. いいえ:Nelleのホームディレクトリは/Users/nelleです。
  4. いいえ:このコマンドは2レベル上に移動し、/Usersで終了します。
  5. はい:~はユーザーのホームディレクトリを意味し、この場合は/Users/nelleです。
  6. いいえ:このコマンドは、現在のディレクトリ内に存在する場合にhomeディレクトリに移動します。
  7. はい:複雑すぎますが正解です。
  8. はい:ユーザーのホームディレクトリに戻るショートカットです。
  9. はい:1レベル上に移動します。

相対パスの解決

以下のファイルシステム図を使用して、pwd/Users/thingを表示している場合、 ls -F ../backupはどのような出力を表示しますか?

  1. ../backup: No such file or directory
  2. 2012-12-01 2013-01-08 2013-01-27
  3. 2012-12-01/ 2013-01-08/ 2013-01-27/
  4. original/ pnas_final/ pnas_sub/
Usersディレクトリ以下のディレクトリツリー。"/Users"には"backup"と"thing"ディレクトリがあり、"/Users/backup"には"original"、"pnas_final"、"pnas_sub"が含まれ、"/Users/thing"には"backup"があり、"/Users/thing/backup"には"2012-12-01"、"2013-01-08"、"2013-01-27"が含まれる
  1. いいえ:/Users内にbackupディレクトリがあります。
  2. いいえ:これは/Users/thing/backupの内容ですが、 ..を使用したため、1レベル上のものを要求しています。
  3. いいえ:先ほどの説明を参照してください。
  4. はい:../backup//Users/backup/を指します。

lsのリーディングテスト

以下のファイルシステム図を使用して、 pwd/Users/backupを表示している場合、 -rオプションはlsに逆順で表示するよう指示します。 以下の出力を得るにはどのコマンドを実行しますか?

出力

pnas_sub/ pnas_final/ original/
Usersディレクトリ以下のディレクトリツリー。"/Users"には"backup"と"thing"ディレクトリがあり、"/Users/backup"には"original"、"pnas_final"、"pnas_sub"が含まれ、"/Users/thing"には"backup"があり、"/Users/thing/backup"には"2012-12-01"、"2013-01-08"、"2013-01-27"が含まれる
  1. ls pwd
  2. ls -r -F
  3. ls -r -F /Users/backup
  1. いいえ:pwdはディレクトリの名前ではありません。
  2. はい:ディレクトリ引数なしのlsは現在のディレクトリ内のファイルとディレクトリをリストします。
  3. はい:絶対パスを明示的に使用しています。

シェルコマンドの一般的な構文


これまでにコマンド、オプション、引数を見てきましたが、 用語を体系的に整理するのが役立つかもしれません。

以下のコマンドを一般的な例として考え、 その構成要素に分解してみます:

BASH

$ ls -F /
シェルコマンドの一般的な構文

lsコマンドで、-Fオプション/引数です。 これまでに、1つのダッシュ(-)で始まるもの(短いオプション)や、 2つのダッシュ(--)で始まるもの(長いオプション)を見てきました。 [オプション]はコマンドの動作を変更し、 [引数]はコマンドが操作する対象(例:ファイルやディレクトリ)を指定します。 オプションや引数は、パラメータと呼ばれることもあります。 コマンドは複数のオプションや引数を持つことができますが、 常に必要というわけではありません。

オプションは特に引数を取らない場合、スイッチフラグと呼ばれることもあります。 このレッスンでは用語としてオプションを使用します。

各部分はスペースで区切られています。ls-Fの間のスペースを省略すると、 シェルはls-Fというコマンドを探そうとしますが、これは存在しません。 また、大文字と小文字も重要です。 たとえば、ls -sはファイルやディレクトリの名前とともにサイズを表示しますが、 ls -Sはサイズ順に並べ替えます。以下に例を示します:

BASH

$ cd ~/Desktop/shell-lesson-data
$ ls -s exercise-data

出力

total 28
 4 animal-counts   4 creatures  12 numbers.txt

   4 alkanes   4 writing

なお、ls -sで返されるサイズはブロック単位です。 これはオペレーティングシステムによって定義が異なるため、 例と同じ数値が得られない場合があります。

BASH

$ ls -S exercise-data

出力

animal-counts  creatures  alkanes  writing  numbers.txt

これらをすべてまとめると、先ほどのls -F /コマンドは、 ルートディレクトリ/内のファイルとディレクトリをリストします。 このコマンドから得られる出力例を以下に示します:

BASH

$ ls -F /

出力

Applications/         System/
Library/              Users/
Network/              Volumes/

Nelleのパイプライン:ファイルの整理

ファイルやディレクトリについてこれだけの知識を持ったNelleは、 タンパク質アッセイマシンが作成するファイルを整理する準備ができました。

彼女はnorth-pacific-gyreというディレクトリを作成します (データの出所を思い出せるようにするためです)。 このディレクトリには、アッセイマシンのデータファイルと データ処理スクリプトが含まれます。

彼女の物理サンプルは、それぞれ彼女の研究室の慣例に従って 「NENE01729A」のようなユニークな10文字のIDでラベル付けされています。 このIDは、サンプルの場所、時間、深さ、およびその他の特性を記録するために 収集ログに使用されたものであり、 彼女はこれを各データファイルのファイル名に使用することにしました。 アッセイマシンの出力がプレーンテキストであるため、 ファイル名はNENE01729A.txtNENE01812A.txtのようになります。 すべての1520個のファイルは同じディレクトリに保存されます。

現在のディレクトリshell-lesson-dataで、 Nelleは次のコマンドを使用してどのファイルがあるかを確認できます:

BASH

$ ls north-pacific-gyre/

このコマンドは入力するのに少し長いですが、 シェルで「タブ補完」と呼ばれる機能を使用することで、 ほとんどの作業をシェルに任せることができます。 次のように入力してみてください:

BASH

$ ls nor

そしてTab(キーボードのタブキー)を押すと、 シェルはディレクトリ名を自動的に補完します:

BASH

$ ls north-pacific-gyre/

Tabをもう一度押すと何も起こりません。 候補が複数ある場合は、Tabを2回押すとすべてのファイルがリストされます。

次にNelleがGを押してからTabを再度押すと、 シェルは「goo」を追加します。これは「g」で始まるすべてのファイルが 「goo」という最初の3文字を共有しているためです。

BASH

$ ls north-pacific-gyre/goo

これらのファイルすべてを確認するには、さらにTabを2回押します。

BASH

ls north-pacific-gyre/goo
goodiff.sh   goostats.sh

これは「タブ補完」と呼ばれるもので、 以降のツールでもたびたび目にすることになるでしょう。

まとめ

  • ファイルシステムはディスク上の情報を管理する役割を果たします。
  • 情報はファイルに保存され、ファイルはディレクトリ(フォルダ)に保存されます。
  • ディレクトリは他のディレクトリを保存することもでき、それによってディレクトリツリーを形成します。
  • pwdはユーザーの現在の作業ディレクトリを表示します。
  • ls [path]は特定のファイルやディレクトリのリストを表示します;lsだけを実行すると現在の作業ディレクトリをリストします。
  • cd [path]は現在の作業ディレクトリを変更します。
  • 多くのコマンドは単一の-で始まるオプションを取ります。
  • パス内のディレクトリ名はUnixでは/で区切られますが、Windowsでは\で区切られます。
  • /単独では、ファイルシステム全体のルートディレクトリを意味します。
  • 絶対パスは、ファイルシステムのルートからの位置を指定します。
  • 相対パスは、現在の場所から始まる位置を指定します。
  • .は現在のディレクトリを、..は現在のディレクトリの1つ上のディレクトリを意味します。