Shell
使用不同的參數重新執行相同的命令
我知道我可以執行以下命令
ls Some{File,Folder}
它相當於執行這個:
ls SomeFile SomeFolder
(我也經常用它來做類似的事情
mv place_{a,b}
)但是,我想知道是否有不同的捷徑可以做這樣的事情:
run-command --a --whole --lot --of --flags parameter a; \ run-command --a --whole --lot --of --flags parameter b
我只需要打字
run-command --a --whole --lot --of --flags parameter {a,b}
或類似的東西。
假設您使用的是 GNU
bash
或類似的東西:也許是一個
for
循環?for x in a b do run-command --a --whole --lot --of --flags parameter $x done
也可以寫成一行
for x in a b; do run-command --a --whole --lot --of --flags parameter $x ; done
如果您沒有編寫腳本而只是想在命令行上輕鬆執行它,那麼該
xargs
命令可能就是您正在尋找的。xargs 將從標準輸入中獲取一堆內容,並將其用作命令的參數,並在需要時多次執行該命令。
嘗試以下操作:
echo -n parameter a,parameter b | xargs -n 1 -d , run-command --a --whole --lot --of --flags
Echo 的
-n
標誌避免列印尾隨的換行符(在傳遞參數時導致某些命令出現問題)。在此範例中,您只是為 xargs 提供了您希望它執行的排列。
-n 1
告訴 xargs 每次執行只使用 1 個參數的標誌。該
-d ,
標誌告訴 xargs 在輸入中查找“,”作為要執行的參數之間的分隔符。(請注意,如果參數中包含“,”,則需要將其更改為其他內容。如果參數中沒有空格,則可以完全省略此標誌。)有關
man xargs
更多資訊,請參閱。