回答編集履歴
2
誤記訂正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
1つのコマンドしか書けないところに、複数のコマンドを`;`や`|`等でつないで書くとか、その他シェルの機能を使いたい場合。
|
2
2
|
|
3
|
-
例:`
|
3
|
+
例:`xargs`で複数コマンドを実行したい。
|
4
4
|
(リストアップしたファイルに対して、`sed`でバックアップ取りつつ書き換えて、バックアップを移動)
|
5
5
|
```sh
|
6
6
|
find ~~~~ | xargs -I@ bash -c "sed -i.bak 's/xx/yy/' @ && mv @.bak BKUP/"
|
1
補足
answer
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
1つのコマンドしか書けないところに、複数のコマンドを`;`や`|`等でつないで書くとか、その他シェルの機能を使いたい場合。
|
2
2
|
|
3
3
|
例:`args`で複数コマンドを実行したい。
|
4
|
+
(リストアップしたファイルに対して、`sed`でバックアップ取りつつ書き換えて、バックアップを移動)
|
4
5
|
```sh
|
5
6
|
find ~~~~ | xargs -I@ bash -c "sed -i.bak 's/xx/yy/' @ && mv @.bak BKUP/"
|
6
7
|
```
|
7
|
-
(リストアップしたファイルに対して、`sed`でバックアップ取りつつ書き換えて、バックアップを移動)
|
8
8
|
|
9
9
|
あと、プログラムからプログラムを起動する場合。例えばC等で使う`system()`や、Pythonでいうとsubprocessパッケージで`shell=True`でコマンドを起動した場合は、内部的に`-c`が使われています。
|
10
10
|
このように、「コマンドラインで実行する時と同じように書いておくと、期待通り実行してくれる」という機能は内部的に`-c`を使っています。このとき使うシェルは`/bin/sh`決め打ちだったり、環境変数`SHELL`を見たり等いろいろでしょう。
|