概要
Linux で日常的に使用する、ファイルやディレクトリを操作するための基本的なコマンドについて解説します。 これらのコマンドは、ファイルシステムを操作する上で最も重要な基礎となります。
pwd
: カレントディレクトリの表示
pwd
コマンドは、現在の作業ディレクトリ(カレントディレクトリ)の絶対パスを表示するために使用されます。作業ディレクトリとは、現在ユーザーが作業しているディレクトリのことを指します。コマンドラインやプログラムがファイルやディレクトリを扱う際の基準となる位置です。
基本的な使い方
$ pwd
/home/ubuntu
このコマンドを実行すると、現在の作業ディレクトリの絶対パスが表示されます。
オプション
pwd
コマンドには、以下のオプションがあります。
オプション | 説明 |
---|---|
-P (–physical) | シンボリックリンクを解決して物理的なパスを表示します。 |
-L (–logical) | シンボリックリンクをそのまま表示します(デフォルトの動作)。 |
# シンボリックリンクを作成し、そのリンクに移動した場合
$ cd /tmp
$ ln -s /home/username symlink
$ cd symlink
# デフォルトの動作(論理パスの表示)
$ pwd
/tmp/symlink
# 物理パスの表示
$ pwd -P
/home/username
この例では、/tmp/symlink
は /home/username
へのシンボリックリンクです。pwd
コマンドはデフォルトでシンボリックリンクをそのまま表示しますが、-P
オプションを使用するとリンクを解決して物理的なパス /home/username
を表示します。
cd
: カレントディレクトリを変更する
cd
コマンドは、カレントディレクトリ(現在の作業ディレクトリ)を変更するために使用されます。これにより、ファイルシステム内の異なるディレクトリに移動できます。
基本的な使い方
cd <directory>
<directory>
には移動したいディレクトリのパスを指定します。
パスの指定方法
ファイルやディレクトリを指定する際には、絶対パスと相対パスのどちらかを使用します。以下に、パスの指定方法について詳しく説明します。
パス | 説明 |
---|---|
/path/to/move | 絶対パス。ルートディレクトリからのフルパスを指定します。 |
path/to/move | 相対パス。現在のディレクトリからの相対的なパスを指定します。 |
/ | ルートディレクトリ。 |
. | 現在のディレクトリ。 |
.. | 親ディレクトリ。現在のディレクトリの一つ上のディレクトリを指します。 |
~ | ホームディレクトリ。現在のユーザーのホームディレクトリを指します。 |
– | 前のディレクトリ。直前にいたディレクトリを指します。 |
絶対パス 絶対パスは、ルートディレクトリ(
/
)から始まるフルパスです。例えば、/path/to/move
はルートディレクトリからpath
ディレクトリ、次にto
ディレクトリ、そしてmove
ディレクトリへと進むパスを表します。絶対パスは、どのディレクトリにいても同じ場所を指すため、パスの一意性が保証されます。相対パス 相対パスは、現在の作業ディレクトリからの相対的なパスを使用します。例えば、
path/to/move
は現在のディレクトリからpath
ディレクトリ、次にto
ディレクトリ、そしてmove
ディレクトリへと進むパスを表します。相対パスは、現在の作業ディレクトリが変わると指す場所も変わるため、柔軟にファイルやディレクトリを指定することができます。現在のディレクトリ
.
は現在のディレクトリを指します。例えば、./script.sh
は現在のディレクトリにあるscript.sh
を指します。親ディレクトリ
..
は親ディレクトリを指します。例えば、cd ../script.sh
は親ディレクトリにあるscript.sh
を指します。ホームディレクトリ
~
はホームディレクトリを指します。ホームディレクトリは、現在のユーザーの個人用ディレクトリであり、/home/username
のようなパスになります。例えば、~/script.sh
はホームディレクトリにあるscript.sh
を指します。前のディレクトリ
-
は直前にいたディレクトリを指します。例えば、cd -
コマンドは、直前にいたディレクトリに戻ります。
touch
: タイムスタンプの更新および新しいファイルの作成
touch
コマンドは、ファイルのタイムスタンプ (更新日時およびアクセス日時) を変更するために使用されますが、指定したファイルが存在しない場合には新しい空のファイルを作成することもできます。
基本的な使い方
touch <filename>
<filename>
には作成したいファイルの名前や、タイムスタンプを変更したいファイルの名前を指定します。
オプション
touch
コマンドには、以下のオプションがあります。
オプション | 説明 |
---|---|
-a | アクセス日時のみを変更します。 |
-m | 更新日時のみを変更します。 |
–time=WORD | 更新対象を指定します。 |
-c, –no-create | ファイルが存在しない場合、作成しません。 |
-r, –reference=FILE | FILE のタイムスタンプを現在の日時の代わりに使用します。 |
-t STAMP | STAMP を解析して現在の日時の代わりに使用します。 |
-d, –date=STRING | STRING を解析して現在の日時の代わりに使用します。 |
-h, –no-dereference | シンボリックリンク自体のタイムスタンプを変更します。 |
–help | このヘルプを表示して終了します。 |
–version | バージョン情報を表示して終了します。 |
補足
--time
オプションの WORD はaccess, atime, use
なら-a
と同等、modify, mtime
なら-m
と同等です。-t
オプションのSTAMP
の書式は、[[CC]YY]MMDDhhmm[.ss]
になります。CC
: 西暦上 2 桁、YY
: 西暦下 2 桁、MM
: 月、DD
: 日、hh
: 時(24 時間)、mm
: 分、ss
: 秒
-d
オプションのSTRING
は、date
コマンドで使用できる形式と同様です。いくつか例を示します。YYYY-MM-DD HH:MM:SS
YYYY-MM-DD
MM/DD/YY
DD.MM.YYYY
next Monday
tomorrow
yesterday
now
last week
2 days ago
2025-01-28 15:25:03
例
新しい空のファイルを作成する:
touch newfile.txt
このコマンドを実行すると、
newfile.txt
が存在しない場合、newfile.txt
という名前の新しい空のファイルが作成されます。既存のファイルのタイムスタンプを更新する:
touch existingfile.txt
複数のファイルを一度に作成または更新する:
touch file1.txt file2.txt file3.txt
このコマンドを実行すると、
file1.txt
、file2.txt
、file3.txt
の各ファイルが作成またはタイムスタンプが更新されます。日時を指定して更新する (
-t
オプション):touch -t 202501260914.30 file.txt
このコマンドを実行すると、
file.txt
のタイムスタンプが2025年1月26日09時14分30秒
に更新されます。
mkdir
: ディレクトリを作成する
mkdir
コマンドは、新しいディレクトリを作成するために使用されます。以下に mkdir
コマンドの使い方を説明します。
基本的な使い方
mkdir <directory_name>
<directory_name>
には作成したいディレクトリの名前を指定します。
オプション
オプション | 説明 |
---|---|
-m, –mode=MODE | ディレクトリの権限。 |
-p, –parents | 既存の場合はエラーを出さず、必要に応じて親ディレクトリを作成します。 |
-v, –verbose | 作成された各ディレクトリに対してメッセージを表示します。 |
例
単一のディレクトリを作成する:
mkdir new_directory
このコマンドを実行すると、
new_directory
という名前のディレクトリが現在のディレクトリ内に作成されます。親ディレクトリも一緒に作成する (
-p
オプション):-p
オプションを使用すると、指定したパスの親ディレクトリが存在しない場合でも、一緒に作成することができます。 また、ディレクトリがすでに存在する場合にエラーにしない場合にも使用できます。mkdir -p /path/to/new_directory
このコマンドを実行すると、
/path/to
が存在しない場合でも、/path/to/new_directory
を作成します。権限を指定して作成する (
-m
オプション)mkdir -m 755 new_directory
このコマンドを実行すると、
new_directory
が作成され、ディレクトリの権限が755
に設定されます。
rmdir
: 空のディレクトリを削除する
rmdir
コマンドは、空のディレクトリを削除するために使用されます。このコマンドは、指定したディレクトリが空でない場合にはエラーを返します。
基本的な使い方
rmdir <directory_name>
<directory_name>
には削除したいディレクトリの名前を指定します。
オプション
オプション | 説明 |
---|---|
–ignore-fail-on-non-empty | ディレクトリが空でない場合にエラーにしません。 |
-p, –parents | ディレクトリとその上位のディレクトリを削除します。 |
-v, –verbose | 処理されたすべてのディレクトリに対してメッセージを出力します。 |
例
空のディレクトリを削除する:
rmdir empty_directory
このコマンドを実行すると、
empty_directory
が削除されます。empty_directory
が空でない場合、エラーが表示されます。複数のディレクトリを一度に削除する:
rmdir dir1 dir2 dir3
このコマンドを実行すると、
dir1
、dir2
、dir3
という名前の空のディレクトリが削除されます。これらのディレクトリが空でない場合、エラーが表示されます。上位のディレクトリを一度に削除する (
-p
オプション):-p
オプションを使用すると、指定したディレクトリとその上位のディレクトリを一緒に削除することができます。ただし、上位のディレクトリも空である必要があります。rmdir -p a/b/c
このコマンドは、
rmdir a/b/c a/b a
と同じです。これらのディレクトリが空でない場合、エラーが表示されます。
rm
: ファイルやディレクトリを削除する
rm
コマンドは、ファイルやディレクトリを削除するために使用されます。以下に rm
コマンドの使い方を説明します。
基本的な使い方
rm <file_name>
<file_name>
には削除したいファイルの名前を指定します。
オプション
オプション | 説明 |
---|---|
-f, –force | 存在しないファイルや引数を無視し、プロンプトを表示しません。 |
-i | 削除する前に毎回確認します。 |
-I | 3 つ以上のファイルを削除する場合、または再帰的に削除する場合に 1 回だけ確認します。 |
–interactive[=WHEN] | WHEN に応じてプロンプトを表示します。never, once (-I), always (-i) が指定できます。WHEN が指定されていない場合は常にプロンプトを表示します。 |
–one-file-system | 階層を再帰的に削除する際に、コマンドライン引数と異なるファイルシステム上のディレクトリをスキップします。 |
–no-preserve-root | / を特別扱いしません。 |
–preserve-root[=all] | / を削除しません(デフォルト)。all を指定すると、親ディレクトリと異なるデバイス上のコマンドライン引数を拒否します。 |
-r, -R, –recursive | ディレクトリとその中身を再帰的に削除します。 |
-d, –dir | 空のディレクトリを削除します。 |
-v, –verbose | 実行される操作を説明します。 |
例
単一のファイルを削除する:
rm file.txt
このコマンドを実行すると、
file.txt
が削除されます。確認プロンプトなしで強制的に削除する (
-f
オプション):-f
オプションを使用すると、確認プロンプトなしで強制的にファイルを削除できます。rm -f file.txt
このコマンドは、ファイルが存在しない場合でもエラーメッセージを表示せずに処理を続行します。
ディレクトリを再帰的に削除する (
-r
または-R
オプション):-r
または-R
オプションを使用すると、ディレクトリとその中のすべてのファイルやサブディレクトリを再帰的に削除できます。rm -r directory_name
このコマンドを実行すると、
directory_name
とその中のすべての内容が削除されます。確認プロンプトを表示する (
-i
オプション):重要なファイルやディレクトリを削除する際には、確認プロンプトを表示する
-i
オプションを使用することをお勧めします。rm -i important_file.txt
このコマンドを実行すると、削除前に確認プロンプトが表示されます。
cp
: ファイルやディレクトリをコピーする
cp
コマンドは、ファイルやディレクトリをコピーするために使用されます。以下に cp
コマンドの使い方を説明します。
基本的な使い方
cp <source> <destination>
<source>
にはコピーしたいファイルやディレクトリの名前を、<destination>
にはコピー先のファイル名やディレクトリ名を指定します。
オプション
例
単一のファイルをコピーする:
cp file1.txt file2.txt
このコマンドを実行すると、
file1.txt
の内容がfile2.txt
にコピーされます。file2.txt
が存在しない場合は新しく作成されます。ディレクトリの再帰的コピー (
-r
オプション):ディレクトリを再帰的にコピーする場合は、
-r
オプションを使用します。cp -r source_directory destination_directory
このコマンドを実行すると、
source_directory
とその中のすべてのファイルとサブディレクトリがdestination_directory
にコピーされます。上書き確認のプロンプトを表示する (
-i
オプション):-i
オプションを使用すると、コピー先に同じ名前のファイルが存在する場合に上書きするか確認するプロンプトが表示されます。cp -i file1.txt file2.txt
コピーの進行状況を表示する (
-v
オプション):-v
オプションを使用すると、コピーの進行状況が表示されます。cp -v file1.txt file2.txt
コピー先のファイルを強制的に上書きする (
-f
オプション):-f
オプションを使用すると、コピー先のファイルを強制的に上書きします。cp -f file1.txt file2.txt
ディレクトリの末尾の /
の有無による挙動の差異
スラッシュなし:
cp -r /src /dest
/src
ディレクトリ自体を/dest
ディレクトリにコピーします。結果として、/dest/src
が作成されます。
スラッシュあり:
cp -r /src/ /dest
/src
ディレクトリ内の内容を/dest
ディレクトリにコピーします。結果として、/dest
内に/src
の内容が直接配置されます。
mv
: ファイルやディレクトリを移動または名前変更する
mv
コマンドは、ファイルやディレクトリを移動するために使用されます。また、ファイルやディレクトリの名前を変更することもできます。
基本的な使い方
mv <source> <destination>
<source>
には移動または名前を変更したいファイルやディレクトリの名前を、<destination>
には移動先のパスまたは新しい名前を指定します。
例
ファイルを別のディレクトリに移動する:
mv file.txt /path/to/destination/
このコマンドを実行すると、
file.txt
が/path/to/destination/
ディレクトリに移動されます。ファイルの名前を変更する:
mv oldname.txt newname.txt
このコマンドを実行すると、
oldname.txt
の名前がnewname.txt
に変更されます。ディレクトリを別の場所に移動する:
mv /path/to/source_directory /path/to/destination/
このコマンドを実行すると、
source_directory
が/path/to/destination/
に移動されます。複数のファイルを一度に別のディレクトリに移動する:
mv file1.txt file2.txt /path/to/destination/
このコマンドを実行すると、
file1.txt
とfile2.txt
が/path/to/destination/
ディレクトリに移動されます。上書き確認のプロンプトを表示する (
-i
オプション):-i
オプションを使用すると、移動先に同じ名前のファイルが存在する場合に上書きするか確認するプロンプトが表示されます。mv -i file.txt /path/to/destination/
コピー先のファイルを強制的に上書きする (
-f
オプション):-f
オプションを使用すると、移動先のファイルを強制的に上書きします。mv -f file.txt /path/to/destination/
コメント