📘

なぜmvコマンドでファイル名やディレクトリ名を変えられるのかを考察します

2023/05/03に公開

記事を書くきっかけ

Linuxについて学んでいるときに、なぜmv(moveの略)コマンドでファイル名やディレクトリ名を変更できるのかが気になったので、改めてmvコマンドについて調べたことを記事にまとめました。

mvコマンドの使い方

mv --helpで使い方を確認する。

usage: mv [-f | -i | -n] [-hv] source target
       mv [-f | -i | -n] [-v] source ... directory

ファイルをディレクトリに移動する

例として、foo.txtというファイルをdirというディレクトリに移動する場合

mv foo.txt dir

複数のファイルやディレクトリをまとめてひとつのディレクトリに移動する

例として、foo.txt, bar.txt, baz.txtというファイルをまとめてdirというディレクトリに移動する場合

mv foo.txt bar.txt baz.txt dir/.

ファイル名やディレクトリ名を変更する

例として、foo.txtというファイルをbar.txtというファイル名に変更する場合

mv foo.txt bar.txt

なんでmoveという名前のコマンドでファイル名やディレクトリ名を変更できるのかで戸惑いました。

なぜmvコマンドでファイル名やディレクトリ名を変更できるかの考察

私の結論は、/や/homeなどといったパスをmoveしているからです。
Linuxのファイルシステムでは、実際のデータとファイル名やディレクトリ名を分けて管理しています。ファイルやディレクトリといった実際のデータはi-node番号という識別番号を用いて管理されています。これはひとつのファイルシステム内ではユニークな値です。ファイル名やディレクトリ名はi-node番号に別で与えられたパスとなっています。ファイル移動というのは、i-node番号はそのままでパスを移動するという動作です。このことからmvコマンドはファイル名を変更できるようになっているのだと考えました。

Discussion