ここまでの説明で、ファイルシステムの構造や、ファイルやディレクトリの作成方法についてある程度理解できたと思います。
しかし、ファイルやディレクトリの作成方法を知っているだけでは、十分とは言えません。そこで、このセクションでは、ファイルやディレクトリのコピー、移動、名前変更、削除方法について学習しましょう。
多くのLinux機能と同様に、ファイルやディレクトリの操作にもさまざまなオプションがあります。ファイルやディレクトリのコピー、移動、削除ではワイルドカードも使用できます。
基本的には、コピーコマンドは以下のように入力するだけです。
cp <コピーするファイル> <コピー先> |
sneakers.txt というファイルをログインディレクトリ内の tigger ディレクトリにコピーするには、ログインディレクトリに移動して以下のように入力します。
cp sneakers.txt tigger |
ここでは相対パスを使用していることにも注意してください。cp では相対パス名と絶対パス名の両方が使用できます。現在入っているログインディレクトリは tigger ディレクトリの親ディレクトリであり、tigger と指定すると、現在入っているログインディレクトリの中にあるtiggerディレクトリを指定したことになります。
cp で使用できるオプションの一覧については、cpのmanページ( man cp )を参照してください。cp で使用できるオプションの例を以下にいくつか示します。
-i (interactive)—対話モード。コピーするファイルがコピー先のファイルを上書きする場合に確認メッセージが出されます。これはミスを防げるので便利なオプションです。
-r (recursive)— ファイルやディレクトリをすべてコピーするだけでなく、ディレクトリツリー全体(サブディレクトリとサブディレクトリに含まれるファイルすべて)を他の場所にコピーします。
-v (verbose)— ファイルコピーの進行状況を表示します。
オプションを指定しないで cp を使うと、コマンドを実行しても多くは得られません。-i などのオプションを指定することで、より有効なコピーを行えます。ファイルのコピー先にすでに同名のファイルが存在する場合は、そのファイルを上書き(または置換)してもよいかどうかをたずねるメッセージが表示されます。
すでにファイル sneakers.txt が tigger ディレクトリにありますので、cp -i を使用してもう一度同じ場所にファイルをコピーしてみましょう。
[newuser@localhost newuser]$ cp -i sneakers.txt tigger cp: overwrite 'tigger/sneakers.txt'? |
コピー先にすでにあるファイルを上書きする場合は、Yキーを押してからEnterキーを押します。ファイルを上書きしたくない場合は、N キーを押して Enter キーを押します。
ファイルを移動するには、mv コマンドを使用します。mvコマンドの使い方は、cp と似ていますが、cpではファイルの複製が作成されるのに対し、mvではファイルは物理的にある場所から別の場所に移動します。mv の詳細については、mv のmanページ( man mv と入力すると表示されます)を参照してください。
mv でよく使用されるオプションには以下のようなものがあります。
-i (interactive)—対話モード。選択したファイルが移動先ディレクトリにある既存ファイルを上書きするかどうか尋ねるプロンプトが出されます。これは、cpの-iオプションと同様、既存のファイルを本当に置換してよいか確認する機会が与えられるため、便利なオプションです。
-f (force)— 対話モードを無視し、プロンプトを出さずにファイルを移動します。操作をよく理解していない限り、このオプションはあまり好ましくありません。システムによく慣れるまでは、このオプションの使用は慎重に行ってください。
-v (verbose)— 移動されるファイルの一覧を表示します。
ファイルをホームディレクトリから別のディレクトリに移動するには、たとえば次のように入力します(このコマンドはホームディレクトリから実行する必要があります)。
mv sneakers.txt tigger |
同じコマンドで絶対パス名を使用する場合は、次のように入力します。mv sneakers.txt /home/newuser /home/newuser/tigger .
実は、名前変更については、すでに半分解説しています。というのも、ファイルの名前変更には、コピーや移動を使うからです。
ログインディレクトリからtiggerサブディレクトリにsneakers.txtをコピーする場合は、以下のように入力しました。
cp sneakers.txt tigger |
同じファイルを、piglet.txtという名前に変更して、tiggerディレクトリにコピーするには、以下のように入力します。
cp sneakers.txt tigger/piglet.txt |
同じファイルを、piglet.txtという名前に変更して、tiggerディレクトリに移動するには、先ほどのコマンドのcpをmvに変更するだけです。
ディレクトリtiggerに移動して、lsと入力すると、ファイルpiglet.txtが表示されます。
場所を変更せずにファイルの名前のみ変更するには、カレントディレクトリでmvを使います。
mv sneakers.txt piglet.txt |
Chapter 10では、touchコマンドやリダイレクトを使用してファイルを作成する操作を説明しました。また、mkdirコマンドを使用してディレクトリtiggerを作成しました。
このセクションでは、ファイルとディレクトリを削除する方法について説明します。ファイルやディレクトリを削除するには、rmコマンド(詳細はman rmで表示されるmanページを参照)を使います。ファイルやディレクトリの削除オプションには、以下のようなものがあります。
-i (interactive)— 対話モード。削除を確認するプロンプトが出されます。既存のファイルを本当に削除してよいか確認する機会が与えられるため、便利なオプションです。
-f (force)— 対話モードを無視し、プロンプトを出さずにファイルを削除します。これは、操作をよく理解していない限りあまり勧められません。
-v (verbose)— 削除したファイルの一覧が表示されます。
-r (recursive)— ディレクトリを削除する場合、指定されたディレクトリ内のすべてのファイルとサブディレクトリを削除します。空のディレクトリも削除されます。
rmコマンドを使ってディレクトリtiggerからファイル piglet.txtを削除する場合、次のように入力します。
rm piglet.txt |
この場合、コマンドを実行してしまってから、間違ったファイルを削除してしまったことに気づいても手遅れです。そのような事態を防ぐには、-i(対話モード)オプションを指定して、本当にそのファイルを削除してよいか確認できるようにします。
[newuser@localhost newuser]$ rm -i piglet.txt rm: remove 'piglet.txt'? |
また、ワイルドカード(*など)を使用してファイルを削除することもできますが、削除するつもりはなかったファイルまで簡単に削除されてしまいかねないので十分注意してください。
たとえば、ワイルドカードを使って、ディレクトリ内にある、ファイル名が「pig」で始まるファイルをすべて削除するには、次のように入力します。
rm pig* |
また、1つのrmコマンドで複数のファイル(piglet.txt、sneakers.txt)を削除する場合には、次のように入力します。
rm piglet.txt sneakers.txt |
ファイルやディレクトリの削除オプションには、以下のようなものがあります。
(たとえば、rmdir fooのように)rmdirを使ってディレクトリを削除することができます。ただし、ディレクトリは空の状態でなければ削除できません。このため、rmを使う場合には再帰的に削除する-rオプションを指定します。
ディレクトリtiggerを、再帰的に削除するには、次のように入力します。
rm -r tigger |
複数のオプションを連結する(たとえば強制的に再帰的削除を行う)には、以下のようにします。
rm -rf tigger |
rmコマンドの使用上の注意 | |
---|---|
rmは強力なコマンドで、システム全体を削除することもできます。rootとしてログインして、rm -rf /というコマンドを入力すると、システム上の一切のものが削除されるという、取り返しのつかない事態が生じてしまいます。 |
rmdirコマンドを使うと、rmコマンドより安全にディレクトリを削除できます。rmdirコマンドでは、再帰的な削除はできないので、ファイルを含んでいるディレクトリは削除できないことになります。
このコマンドについての詳細は、man rmdirと入力してrmdirのmanページを参照してください。