我們常常使用 xargs , awk 與 grep 來組合複合式的command,但是,要怎麼使用同一個 arguments 再不同的 command中呢 ?
xargs - build and execute command lines from standard input
-I replace-str Replace occurrences of replace-str in the initial-arguments with names read from standard input. Also, unquoted blanks do not terminate input items; instead the separator is the newline character. Implies -x and -L 1.
舉一個例子,想要刪除git 不需要的branch 還有刪除遠端的 branch。
先使用grep 與 awk 濾出這些 branch 名稱
$ git branch | grep fix fix/ios_poster_zip fix_langs_admin fix_langs_key fix_poster_counts
使用 xargs -I 來 產生參數 (-I 後面可以使用能使用的字,來當作替代)
$ git branch | grep fix | awk '{print $1}' | xargs -I {} git push origin :{}
刪除本地 branch
$ git branch | grep fix | awk '{print $1}' | xargs -I {} git branch -d {}
如果我們想刪除本地與遠端branch呢?
先看看怎麼在單個 xargs 使用多個command 。
$ git branch | grep fix | awk '{print $1}' | xargs -I {} sh -c 'echo {};echo {}'fix/ios_poster_zipfix/ios_poster_zipfix_langs_adminfix_langs_adminfix_langs_keyfix_langs_keyfix_poster_countsfix_poster_counts
$ git branch | grep fix | awk '{print $1}' | xargs -I {} sh -c 'git push origin :{}; git branch -d {}'
這樣在單一 xargs 中多個指令使用同一個變數
bash - xargs with multiple commands as argument - Stack Overflowhttps://stackoverflow.com/questions/6958689/xargs-with-multiple-commands-as-argument
沒有留言:
張貼留言