星期五, 4月 27, 2018

alias 無法使用多個指令串接解決方法

因為練習Docker, 想要把以下指令串寫成一個alias 命令來一次刪除所有的container
docker ps -a|awk '{print $1}'|grep -v CONTAINER|xargs -n 1 docker rm
但發現bash會認為語法不對, 在stackoverflow 發現以下解法, 將其寫成function (.bashrc)

docrmall() {
docker ps -a|awk '{print $1}'|grep -v CONTAINER|xargs -n 1 docker rm
}

以後只要呼叫 docrmall就可以了!

Syntax error when trying to pipe multiple commands in an alias definition

***
xargs -n 1 : 代表一次用一個值傳給後面的命令當輸入值

Linux 系統 xargs 指令範例與教學


*** update: 發現另外方式更快, 主要是 -q 這個選項可以只輸出id, 不需再去grep

(1) docker rm -f  $(docker ps -aq)
或是
(2) docker ps -aq|xargs docker rm

***

$(    )   --->  取得( ) 內的指令輸出內容

沒有留言: