この投稿では、ファイルとディレクトリの操作方法について説明します。これには、ディレクトリ構造内での位置の特定、ファイル コンテンツの表示、ファイルとディレクトリのコピーと移動、ファイルとディレクトリの作成と削除、ファイルとディレクトリの検索などのタスクが含まれます。
ディレクトリの表示
ディレクトリはオブジェクトへの参照のリストであり、ファイル、サブディレクトリ、およびシンボリック リンクを含めることができます。各リファレンスは 2 つのコンポーネントで構成されています:
- 名前 :オブジェクトの名前は、オブジェクトの識別とアクセスに使用されます。
- 数字 :番号は、オブジェクトに関する情報が格納されている inode を指定します。
さまざまなコマンドを使用して、現在のディレクトリを表示したり、ディレクトリの内容を表示したり、ディレクトリを変更したりできます。
i ノードとは
inode は、ファイル、ディレクトリ、シンボリック リンクなど、特定のオブジェクトに関連する情報のリストです。 inode が保持する情報には、inode が情報を保持するオブジェクトのタイプ、権限、所有権情報、およびデータが保存される場所が含まれます。
現在のディレクトリの決定
pwd コマンドは、現在の作業ディレクトリの完全パス名または絶対パス名を識別します。
$ pwd /home/user
ディレクトリ コンテンツの表示
ls コマンドは、ディレクトリの内容を表示します。 ls コマンドの構文は次のとおりです:
$ ls [-options] [filename]
以下は、ls コマンドを使用してディレクトリの内容を一覧表示する例です。
1. 現在のディレクトリ (/export/home/student) 内のファイルとディレクトリを一覧表示するには、ls コマンドを引数なしで入力します。
$ ls file1 file2 file3
2. 現在の作業ディレクトリ内の特定のディレクトリの内容を表示するには、ls コマンドに続けてディレクトリ名を入力します。
$ ls dir1 textfile1 textfile2 textfile3
3. 現在の作業ディレクトリにないディレクトリの内容を表示するには、そのディレクトリへの完全なパスを指定して ls コマンドを入力します。
$ ls /var/tmp/test test1 test2 test3
オプションを使用してディレクトリの内容を表示する
ls -l コマンドは、ファイル情報の長いリストを表示します。
以下は、上の図に表示されている長いリストの各部分の簡単な説明です:
- 最初の文字はファイルの種類です。ファイル(-)、ディレクトリ(d)、シンボリックリンク(l)などです
- 次の 9 桁はファイルのアクセス許可を示します。r は読み取り可能、w は書き込み可能、x は実行可能、– は拒否を意味します。
- 3 番目のセクション (数字 1 つ) はリンク数です。
- 4 番目のセクションは所有者 (ユーザー) です。
- 5 番目のセクションはグループ (ユーザー) です。
- 6 番目のセクションはファイル サイズです。
- 7 番目のセクションは日付です。
- 8 番目のセクションはファイル名です。
ls コマンドを使用すると、一部のファイルが非表示になります。隠しファイルには、多くの場合、作業環境をカスタマイズする情報が含まれています。 「ls -la」コマンドは、隠しファイルを含む、ディレクトリ内のすべてのファイルを一覧表示します。
$ ls -la total 1296 dr-xr-x---. 8 root root 4096 May 12 15:25 . drwxr-xr-x. 23 root root 4096 May 12 15:25 .. -rw-r--r-- 1 root root 139 Apr 14 13:01 a -rw-r--r-- 1 root root 3564 May 12 12:53 .bash_history -rw-r--r-- 1 root root 18 Mar 12 21:32 .bash_logout -rw-r--r-- 1 root root 176 Mar 12 21:32 .bash_profile -rw-r--r-- 1 root root 176 Mar 12 21:32 .bashrc注意 :単一のピリオド (.) は、現在の作業ディレクトリを表します。二重ピリオド (..) は、現在の作業ディレクトリを含む親ディレクトリを表します。
ls -ld コマンドは、ディレクトリの内容を表示せずに、ディレクトリに関する詳細情報を表示します。
$ ls -ld directory name
たとえば、dir1 ディレクトリの詳細なディレクトリ情報を取得するには、ls -ld コマンドを入力します。
$ ls -ld dir1 drwxr-xr-x 2 root root 4096 May 12 15:32 dir1
たとえば、dir1 ディレクトリの内容の再帰的なリストを表示するには、ls -R dir1 コマンドを入力します。
$ ls -R dir1 dir1: file1 file2 file3 testdir dir1/testdir: textfile1 textfile2 textfile3Linux コマンド ラインの基本 – コマンド ラインからのコマンドの実行
ファイル タイプの表示
ファイルの種類がわかると、ファイルの読み取りに使用するコマンドまたはプログラムを決定するのに役立ちます。 ls -F コマンドまたは file コマンドは、ファイルの種類を表示します。例:
$ ls -F dir1/ dir2/ dir3/ file1 file2 file3
次の表は、「ls –F」コマンド出力で使用される記号または指標を示しています。
指標 | ファイルの種類 |
---|---|
* | 実行可能 |
/ | ディレクトリ |
#エラー! | ソケット |
@ | シンボリック リンク |
| | 先入れ先出し (FIFO) |
file コマンドは、特定のファイル タイプの判別にも役立ちます。 file コマンドの構文は次のとおりです。
$ file filename
たとえば、ファイル「test」のファイル タイプを表示するには、file コマンドを入力し、ファイルの名前を指定します。
$ file test test: ASCII text
file コマンドからの出力は、次のいずれかです:
- テキスト :テキスト ファイルには、American Standard Code for Information Interchange (ASCII) テキスト、英語テキスト、コマンド テキスト、および実行可能なシェル スクリプトが含まれます。
- データ :データファイルはプログラムによって作成されます。 file コマンドは、FrameMaker ドキュメントなどのデータ ファイルのタイプがわかっている場合、そのタイプを示します。 file コマンドは、タイプが不明な場合、ファイルがデータ ファイルであることを示します。
- 実行可能またはバイナリ :実行可能ファイルには、32 ビットの実行可能ファイルと拡張リンク形式 (ELF) コード ファイル、およびその他の動的にリンクされた実行可能ファイルが含まれます。実行可能ファイルはコマンドまたはプログラムです。
ディレクトリの変更
ディレクトリ階層内で作業する場合、常に現在の作業ディレクトリがあります。システムに最初にログインすると、現在のディレクトリはホーム ディレクトリに設定されます。 cd コマンドを使用して、現在の作業ディレクトリをいつでも変更できます。たとえば、ディレクトリを学生ディレクトリから dir1 ディレクトリに変更するには、cd コマンドを使用します:
$ pwd /home/user $ cd dir1 $ pwd /home/user/dir1 $
オプションや引数を指定せずに cd コマンドを使用すると、現在の作業ディレクトリがホーム ディレクトリに変更されます。コマンド ラインでは、パス名の省略形を使用して、ディレクトリを簡単にナビゲートまたは参照できます。この表は、パス名の略語を示しています。
シンボル | パス名 |
---|---|
. | 現在または作業中のディレクトリ |
.. | 親ディレクトリ、現在の作業ディレクトリのすぐ上のディレクトリ |
たとえば、dir1 の親ディレクトリに移動するには、cd .. コマンドを入力します。
$ pwd /home/user/dir1 $ cd ..
pwd コマンドを使用して、現在の作業ディレクトリを確認します。
$ pwd /home/user注意 :cd .. コマンドに続けてスラッシュ (/) を使用すると、ディレクトリ階層の複数のレベルを上に移動できます。たとえば、「cd ../../..」
相対および絶対パス名
相対パス名または絶対パス名のいずれかを使用して、ディレクトリ階層内を移動できます。相対パス名は、現在の作業ディレクトリからの相対パス内のディレクトリを一覧表示します。絶対パス名は、ルート (/) ディレクトリから始まる、パス内のすべてのディレクトリを一覧表示します。
たとえば、相対パス名を使用してディレクトリを変更するには、現在の作業ディレクトリである Student から始まるパス名を指定して cd コマンドを入力します。
$ cd $ cd dir1 $ pwd /home/user/dir1
$ cd ../dir2 $ pwd /home/user/dir2
$ cd $ cd dir1/coffee $ pwd /home/user/dir1/coffee
たとえば、絶対パス名を使用してディレクトリを変更するには、ルート (/) ディレクトリからの完全なパス名を指定して cd コマンドを入力します。
$ cd $ cd /home/user/dir1/coffee $ pwd /home/user/dir1/coffee
ホーム ディレクトリ
通常のユーザーのホーム ディレクトリは、ユーザーがログインした後に配置される場所です。ユーザーは、ホーム ディレクトリにファイルを作成して格納できます。多くの場合、ユーザーのホーム ディレクトリの名前は、ユーザーのログイン名と同じです。たとえば、ユーザーのログイン名が john の場合、ホーム ディレクトリは /home/john になります。
ホーム ディレクトリに戻る
次の 2 つの方法のいずれかを使用して、ホーム ディレクトリに戻ることができます。
1.引数なしで cd コマンドを使用してください。
$ cd $ pwd /home/user
2. ホーム ディレクトリへの絶対パス名を指定して cd コマンドを使用します。
$ cd /home/user
ユーザー名の前にチルダ (~) 文字を付けて cd コマンドを使用して、ユーザーのホーム ディレクトリに移動することもできます。 チルダ (~) 文字は、ユーザーの絶対パス名に相当する省略形です。
$ cd ~user $ pwd /home/user
注意 :チルダ (~) 文字はシェル機能であり、すべてのシェルで使用できるわけではありません。
チルダ (~) 文字を使用して、ホーム ディレクトリを相対パスで表すこともできます。次の例のチルダ (~) は、学生のホーム ディレクトリを表します。
$ cd ~/dir1/coffee
チルダ (~) 文字を使用して、別のユーザーのホーム ディレクトリに移動することもできます。
$ cd ~user2 $ pwd /home/user2 $ cd $ pwd /home/user1