メインコンテンツまでスキップ

Linuxのコマンドに慣れる

ファイルシステム

Linux のファイルシステムは、ルートディレクトリと呼ばれる特殊なディレクトリを頂点とする木構造で表現され、この木構造の中の特定の要素を一意に表現するための表記をパスと呼びます。Linux においてパスの区切り文字は/で、それが単体で利用された際はルートディレクトリを表します。例えば、ルートディレクトリの中のhomeディレクトリの中のutcodeという名前のディレクトリは/home/utcodeという形で表現されます。

ディレクトリの木構造

また、PC は複数のユーザーで使用されることを前提に設計されているため、各ユーザーが使用できる個人的な領域として「ホームディレクトリ」が作成されます。Ubuntu をはじめとした標準的な Linux では、ホームディレクトリは「/home/ユーザー名」にあります。

Linux には、最初から存在しているrootと呼ばれる特殊なユーザーがあります。rootユーザーは、コンピューター内の全てのファイルやディレクトリにアクセスできる権限を持っています。Ubuntu では、root ユーザーのホームディレクトリは/rootにあります。

相対パスと絶対パス

現在作業対象となっているディレクトリをカレントディレクトリと呼びます。すべてのファイルやディレクトリは、ルートディレクトリを基準とした絶対パスで表される他、カレントディレクトリからの相対パスで表すことができます。例えば、カレントディレクトリが/home/utcodeのとき、/home/utcode/pictures/xxx.jpgpictures/xxx.jpgと表されます。

Ubuntu の場合は、標準状態でカレントディレクトリがターミナル上に表示される場合が多いです。以下の例の場合は~/projects/sampleがカレントディレクトリです。

カレントディレクトリの確認

ヒント

ターミナル上で動作し、ユーザーの入力を受け取って実際に実行するソフトウェアをシェルと呼びます。コマンドを入力する場所(プロンプト)にカレントディレクトリを表示させるか否かはシェルの設定に依存しますが、Ubuntu のデフォルトであるbashや macOS のデフォルトであるzshでは、標準で表示されるようになっています。

パスを表現するとき、様々な記号を用いることで、より複雑な関係を表現することができます。

カレントディレクトリ目標のディレクトリ相対パス
/foo/bar/foo/bar/bazbaz 又は ./baz
/foo/bar/foo/bar/baz/foobarbaz/foobar 又は ./baz/foobar
/foo/bar/baz/foo/bar.. 又は ./..
/foo/bar/baz/foo../.. 又は ./../..
どこでも/home/[ユーザー名]/foo~/foo

カレントディレクトリは「.」、親ディレクトリは「..」、ホームディレクトリは「~」と表されることが分かります。

コマンドの入力方法

コマンドはスペース区切りで入力し、最初がコマンド名、それ以降をそのコマンドの「引数」と呼びます。コマンド名や引数にスペース文字が含まれる場合は、値全体を""(ダブルクォーテーション)で囲むことでスペースが区切り文字として認識されることを防ぐことができます。以下にコマンドの一例を示します。

コマンド名機能
pwdカレントディレクトリを表示
lsディレクトリの中身を一覧表示
cd [移動先]カレントディレクトリを移動
mkdir [名前]新しいディレクトリを作成
touch [名前]新しいファイルを作成

課題

ホームディレクトリ内に以下のディレクトリ・ファイル構造を作成してください。

[ホームディレクトリ]
└── secret
├── pictures
│ └── xxx.txt
└── videos
├── yyy.txt
└── zzz.txt