左から右へ処理する

linuxコマンドの引数の処理順は、左から右への法則性があります。コマンドだけでなく、コマンドラインも、左から右へパイプでつなげて、フィルタリングできるようになっています。

今回は、cpコマンドを、左→右を意識して使ってみます(cpコマンドの第1引数を左、第2引数を右、と考えてください)。

まずは実験用でファイルを作っておきます。

~$ echo AAAAA > a
~$ cat a
AAAAA

単純なファイルのコピーから。

~$ cp a b
~$ cat b
AAAAA
~$ 

左から右にコピーされました。
bを削除し、もう一度やってみます。今度はverboseオプションを指定して確認します。

~$ cp -v a b
`a' -> `b'
~$ cat b
AAAAA
~$ 

記号の->はコピーの方向を表しています。
左から右へコピーされましたね。

次は左のファイルを削除してcpを使ってみましょう。

~$ rm a
~$ cp a b
cp: `a' を stat できません: そのようなファイルやディレクトリはありません
~$ ls
b 

ファイルaは存在しないので、当然コピーできません。つまり左から右へコピーを試みたということです。

コピー先をディレクトリにしてみましょう。

~$ mkdir dir1
~$ cp -v b dir1
`b' -> `dir1/b'
~$ cat dir1/b
AAAAA
~$ 

これも左から右へコピーされました。

順序を変えたい場合は、オプションを指定します。-tオプションで、コピー先ディレクトリを指定できます。

~$ rm dir1/b
~$ cp -vt dir1 b
`b' -> `dir1/b'
~$ cat dir1/b
AAAAA
~$ 

右から左になりました。tarコマンドがこのようなタイプですね(例 tar cf 先ファイル.tar 元ファイル …)。

2 responses to “左から右へ処理する

  1. Pingback: 実写のガミラス星人はハードリンクで作れると思った(ln) | コマンドの達人

  2. What a joy to find such clear thgnikni. Thanks for posting!

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA