Linuxコマンドを勉強~mv、cp、rm、tar~

mv

mvコマンドは、ファイルやディレクトリの移動を行います。

mvコマンドはsourceをdestに移動します。
sourceの部分はファイル名の並びでもいいし、ディレクトリを指定してもいいです。
destの部分がディレクトリの場合、sourceに指定した複数のファイルやディレクトリを一括してdestに移動できます。
sourceとdestの部分が両方とも1つのファイルの場合、移動先ファイル名のファイル名に変更され、移動します。
※ファイルのリネーム機能ということです。知ってると便利です。

mvコマンドのオプションは、以下のとおりです。

-i 移動先に同名ファイルがあった場合、強制的に移動するかどうか確認メッセージが出る
-f 移動先に同名ファイルがあった場合、強制的に削除してから移動する

cp

cpコマンドは、ファイルやディレクトリのコピーを行います。

cpコマンドはsourceをdestにコピーします。
sourceの部分はファイル名の並びでもいいし、ディレクトリを指定してもいいです。
destの部分がディレクトリの場合、sourceに指定した複数のファイルやディレクトリを一括してdestで指定したディレクトリの下にコピーできます。
※ただし、複数のファイルを1つのファイルにコピーはできません。

cpコマンドのオプションは、以下のとおりです。

-i コピー先に同名ファイルがあった場合、上書きするかどうか確認メッセージが出る
-f コピー先に同名ファイルがあった場合、強制的に上書きする
-p コピー元のタイムスタンプやアクセス権などの情報もコピーする
-r(または-R) ディレクトリをその中まで再帰的にコピーする

rm

rmコマンドは、ファイルやディレクトリの削除を行います。

rmコマンドのオプションは、以下のとおりです。

-i 削除するかどうか確認メッセージが出る
-f 強制的に削除する
-r(または-R) ディレクトリをその中まですべて削除する

この辺りは嫌というほど触っているので特に勉強することもなく・・・

ワイルドカード

上記3つのコマンドの共通点は、ファイルを複数指定できることです。
他にもlsなど、ファイルやディレクトリを複数指定できるコマンドがあります。

その時、簡単な記述で、ある共通のルールに従ったファイル名やディレクトリ名をひとまとめに括って指定することができます。
それをワイルドカードといいます。

? 任意の1文字
* 0文字以上の任意の文字
[…] ある1文字が、[]で囲まれた文字のうちどれかと一致する
[!…] ある1文字が、[]で囲まれた文字のうちどの文字にも一致しない

以下、ワイルドカードを使用した複数ファイルの指定例です。

使用例 指定されるファイルの内容
abc.??? abcというファイルのうち、拡張子が3文字のもの
abc* abcから始まるものすべて
/tmp/* /tmpディレクトリの下のものすべて
[a-z] 小文字のアルファベット1文字
[A-Z][a-z0-9] 先頭1文字が大文字のアルファベット、その後ろが小文字のアルファベットと数字でできているもの

tar

linuxでは、複数のファイルをまとめて1つのファイルとして管理することができます。
これをアーカイブファイルと言います。

tarコマンドは、アーカイブファイルの作成・展開、また、それと同時にファイルの圧縮・解凍を行うことができます。また、アーカイブファイルの内容を表示することもできます。

後述しますがtarコマンドはオプションが複雑。なので、もう形で覚えるしかない!!

アーカイブファイルの作成:

アーカイブファイルの圧縮:

アーカイブファイルの展開:

アーカイブファイルの解凍:

アーカイブファイルの表示:

圧縮アーカイブファイルの表示:

アーカイブファイルへファイルを追加:

これだけでいいです。”-C”オプションを使って展開・解凍先のパスを指定しない場合はカレントディレクトリに展開・解凍されます。
大事なのはすべてのオプションにfが付いていること、先頭のオプションが操作の内容を表していること、それと拡張子.tar.gzがある場合はオプションにzが付いていること、です(vはあってもなくてもいいです)。

オプションは順序関係ないので上記のオプションとは別の並びで出題されることもあるでしょう。

tarコマンド詳細

ここからは蛇足です。
tarコマンドのマニュアルにはこうあります。
「Tar stores and extracts files from a tape or disk archive.」
テープやディスク書庫に対してファイルの格納・抽出を行う、と。

tarはTape ARchiveの略です。本来、テープデバイスのために使います。
ファイルシステムはHDD上でファイル管理するためのものですが、tarはHDD等のテープデバイスを直接アーカイブするものということです。ファイルシステム上のファイル相手では普通に使えないんですね。もちろんファイルを使うためのオプションがあります。

で、次にtarコマンドの書式は以下となっています。

tarコマンドはオプション必須です。オプションに”-“(ハイフン)は付けなくてもよいです。
ファイルのパスは、オプションによって意味が変わりますが、パスを指定する分には変わりません。表示する際は不要です。

なので、何はともあれオプションの説明からです。

c アーカイブファイルの作成
x アーカイブファイルの展開
t アーカイブファイルの内容を表示
r アーカイブファイルにファイルを追加する(ただし、zオプションと使用できない。つまり圧縮ファイルにファイルの追加はできない)

この4つのオプションはアーカイブファイルの操作を表す大事なオプションです。必ず付けます。

残りのオプションも重要です。

f ファイル名を指定します。このオプションがない場合は、デバイスを指定します。
v 操作したファイルの一覧や情報を詳細表示します。
z gzipを通して操作を行います。ファイルの圧縮・解凍を行う際に使用します。拡張子は.gzです。
j bzip2を通して操作を行います。gzipとは別の圧縮形式で圧縮・解凍を行います。拡張子は.bz2です。

では、まずはアーカイブファイルを作ってみます。

今回はa.txtとb.txtをまとめてアーカイブファイルとします。ファイル名の手前の数字はファイルサイズです。

vオプションを指定すると、アーカイブにまとめたファイル一覧が表示されます。
そして、作成したc.tarファイルは、2つのファイルサイズの合計よりサイズが多くなってます。tarファイルの情報があるからだと思います。

次に、圧縮してみます。

tar.gzファイルのサイズが2つのファイルサイズの合計より小さくなりました。
ddd.tar.gzファイルは、gzipという圧縮形式で圧縮されています。

次はアーカイブファイルの内容を表示します。

vオプションを指定しない場合は、ファイル名のみ表示されます。

次はアーカイブファイルにファイルを追加してみます。

ただし圧縮ファイルにファイルの追加はできません。エラーが発生します。

最後にアーカイブファイルの展開・解凍です。
カレントディレクトリにファイルを展開する場合は、展開先のパスは要りません。

気を付けるのは、展開したtarファイルが残ることと、展開されたディレクトリに同名のファイルがあった場合は上書きされるということです。

今度は圧縮ファイルを指定したディレクトリに解凍します。
展開・圧縮先を指定する場合は、-Cオプション(こっちは”-“必要です)を使用します。

ファイルの圧縮を行うコマンドには、gzip、bzip2コマンドがあります。
ファイルの解凍には、gunzip、bunzip2というコマンドを使います。

また、tarと同様にアーカイブを作成するcpioというコマンドがあります。
こちらはtarとちょっと使い方が違います。
アーカイブの作成:

アーカイブの内容表示:

アーカイブの展開:

といった具合です。

次はファイル表示とリダイレクトなどについて勉強しようと思います。

広告
  • LINEで送る