基本
xargsコマンド
標準入力やファイルからリストを読み込んで,実行したいコマンドの引数として渡せる!
ちなみに読み方は「エックスアーギュス」とが一般的。argumentsの略なので、アーギュメンツからアーギュをとっている(多分)
オプション
- -p : 実行前に確認する
- -L : 指定した数の引数で実行する
- -I : 指定した位置に引数を渡せる
(他にもあるが、覚えるのはこれだけで十分)
appendix
- -Iオプションでは必ず一つずつ実行されるので-Lは使えない
- backquoteでも同じようなことができる
sample サンプルコマンド
- ls | xargs wc
- find . -name "*.txt" | xargs wc
- ls | xargs -L 1 wc
- ls | xargs -L 3 wc
- ls | xargs -p -L 3 wc
- ls | xargs -I{} wc {}
- wc `ls`
- wc aaa.txt
- ls | wc
- ls | cat
実際にコマンドを打ってみる
二つのファイルを用意する。
[bitnami@ /tmp/com_xargs]$ ls
aaa.txt bbb.txt
中身はこんなかんじ
[bitnami@ /tmp/com_xargs]$ cat aaa.txt bbb.txt
asdf
qwer
34
qweriu
qweuf
werpoi
たとえばこんな感じでコマンドを打ってみる。
[bitnami@ /tmp/com_xargs]$ ls | xargs wc
4 3 14 aaa.txt
3 3 20 bbb.txt
7 6 34 total
これは、aaa.txtとbbb.txtに対してwcコマンドを打ったのと同等。
つまり、「lsの結果をwcコマンドに渡すことができる」
一応-pオプションでどういうコマンドが実行されているのか確認してみる。
[bitnami@ /tmp/com_xargs]$ ls | xargs -p wc
wc aaa.txt bbb.txt ?...
見ての通り、「wc aaa.txt bbb.txt ?...」と書かれている。たしかにwcコマンドの引数としてlsの結果を渡せていることがわかる。ここでyを入力してenterを押すと、実行される。
(-pオプションはデバッグに便利なのでぜひ覚えたいところ)
ちなみに、もしxargsを使わずにうつと、こうなってしまう。
[bitnami@ /tmp/com_xargs]$ ls | wc
2 2 16
これはどういうことかというと、以下の結果を直で(つまりaaa.txtとbbb.txtと書かれたファイルと考えるとわかりやすい)wcコマンドに渡しているとかんがえることができる。
(ちなみにwcコマンドの意味は左から、行数、単語数、バイト数)
[bitnami@ /tmp/com_xargs]$ ls | cat
aaa.txt
bbb.txt