ファイルとディレクトリのコピー、移動、および名前変更

ここまでで、ファイルシステムの構造について若干の知識を得、ファイルおよびディレクトリの作成についても学んでいます。

しかし、ファイルおよびディレクトリの作成方法がわかっても、行った変更を処理できることにはなりません。ファイルおよびディレクトリの名前変更や移動を行いたいときはどうすればよいでしょうか。

コピーコマンドから見ていきましょう。

ファイルのコピー

多くの Linux 機能と同様、ファイルおよびディレクトリの操作にもさまざまなオプションがあります。コピーおよびディレクトリのコピー、移動、または削除ではワイルドカードも使用できます。

基本的には、コピーコマンドは以下のように入力するだけです。

cp<コピー元>
<コピー先>

したがって、ファイル sneakers.txt をログインディレクトリ内の tigger ディレクトリにコピーするには、以下のように入力します。

cp sneakers.txt tigger

ファイルのコピーには相対パス名を使用していることにも注意してください。cp では相対パス名と絶対パス名の両方が使用できます。ログインディレクトリはディレクトリ tigger の親、すなわち tigger はログインディレクトリの 1 つ 下のディレクトリ、ということです。

cp で使用できるオプションの一覧については、cp man ページ (man cp) をお読みください。cp で使用できるオプションのうち、いくつかのものを挙げれば以下のようなものがあります。

cp だけを使用するのでは、コマンドが実行されてもあまりわかりません。-i などのオプションを使用すると、たとえば同名のファイルがある場所にファイルをコピーする場合に、そこにあるファイルを上書きしても本当によいか尋ねられるなど、もっと便利な処理にできます。

今、ファイル sneakers.txttigger ディレクトリにありますので、cp -i を使用してもう一度同じ場所にファイルをコピーしてみましょう。

[newuser@localhost newuser]$cp -i sneakers.txt tigger
cp: overwrite 'tigger/sneakers.txt'?

コピー先にすでにあるファイルを上書きする場合は、[Y] を押してからさらに [Enter] を押します。ファイルを上書きしたくない場合は?その場合は、[N][Enter] を押します。

ファイルの移動

ファイルを移動するには、mv コマンド (man mv) を使用します。これは cp コマンドと似ていますが、cp ではファイルの複製が作成されるのに対し、mv ではファイルは物理的にある場所から別の場所に移動します。

mv でよく使用されるオプションには以下のようなものがあります。

ファイルをホームディレクトリから別のディレクトリに移動するには、たとえば次のように入力します。

mv sneakers.txt tigger

または、絶対パス名を使用した場合は、mv sneakers.txt /home/newuser /home/newuser/tigger と入力します。

ファイルの名前変更

実は、名前変更については、すでに半分網羅したことになります。ファイルのコピーまたは移動でも名前変更はできるからです。

ログインディレクトリから tigger サブディレクトリに sneakers.txt をコピーする場合は、以下のように入力します。

cp sneakers.txt tigger

そのファイルをコピーして sneakers.txt から piglet.txt に名前変更するには、以下のように入力します。

cp sneakers.txt tigger/piglet.txt

ファイルを移動して名前変更する場合は、上記の例の cpmv に代えるだけです。

cdtigger にディレクトリを変えて ls を使用するとファイル名 piglet.txt が表示されます。

ファイルの名前変更だけを行って場所はそのままにしたい場合は、mv を現行ディレクトリに使用します。

mv sneakers.txt piglet.txt

ファイルおよびディレクトリの削除

Chapter 15」では、touch コマンドとリダイレクトを使用してファイルを作成する操作を説明しました。また、mkdir を使用してディレクトリ tigger を作成しました。

しかし、ファイルとディレクトリを削除する方法についてはまだ説明していませんでした。

rm コマンド (man rm) でファイルおよびディレクトリを削除するのが、端的な処理方法です。

名前変更で作成した新規ファイル piglet.txt を使用して、これを rm コマンドで tigger ディレクトリから削除します。

rm piglet.txt

この時点で、このファイルを本当は削除したくなかったらどうすればよいのでしょうか。手遅れです!ここでも、-i (対話) オプションが便利です。ファイルを本当に捨ててよいかどうか再考できるからです。

[newuser@localhost newuser]$rm -i piglet.txt
rm: remove 'piglet.txt'?

また、ワイルドカード * を使用してファイルを削除することもできますが、削除するつもりはなかったファイルまで簡単に削除されてしまいかねませんから十分注意してください。

ワイルドカードを使用してファイルを使用する場合、たとえば以下のように入力します。

rm pig*

また、以下のようにすれば複数のファイルを 1 つのコマンドで削除することもできます。

rm piglet.txt sneakers.txt

ファイルおよびディレクトリの削除オプションには、以下のようなものがあります。

rm でディレクトリを削除する場合、-r オプションを指定しなければなりません。

たとえば、ディレクトリ tigger を再帰的に削除するには、以下のように入力します。

rm -r tigger

複数のオプションを連結するには、たとえば強制的、再帰的削除を行うには、以下のように入力します。

rm -rf tigger

注意!

rm は強力なコマンドで、システム全体を削除することもできます!ユーザが root になっていて、rm -rf / という単純なコマンドを入力してしまったらもうおしまいです。ヘビが自分のしっぽを食べるように、このコマンドが再帰的にシステムのすべてを削除してしまいます。

ディレクトリを削除する方法として rm より安全な方法は、rmdir コマンドです。このコマンドでは、再帰的削除はできませんから、中にファイルのあるディレクトリは削除されません。

このコマンドについての詳細は、man rmdir と入力してrmdir man ページをお読みください。