使用$(..)创建Unix别名无效



我有以下可用的Unix命令:

docker container stop $(docker container ls -a | awk 'NR>1 {print $1}')

我想把它分配给一个别名,比如sc(停止容器(,但这个命令不起作用:

alias sc="docker container stop $(docker container ls -a | awk 'NR>1 {print $1}')"

在将表达式添加到别名而不是仅分配它时,表达式似乎正在以某种方式进行评估

我怎样才能让它工作?

---更新---

此命令也可以作为命令正常工作:

docker container ls -a | awk 'NR>1 {print $1}' | xargs docker container stop

结果:

49b947bb6d61
cb25909f1d58
99bd5a3690c8
147f554934c8

但如果我把它分配给别名是不起作用的:

alias sc="docker container ls -a | awk 'NR>1 {print $1}' | xargs docker container stop"

结果:

49b947bb6d61
weblogic-admin-server
cb25909f1d58
oracle-db
99bd5a3690c8
weblogic-managed-server-1
147f554934c8
weblogic-managed-server-2
Error response from daemon: No such container: xxxxxxxxxxxxxxxxxx
Error response from daemon: No such container: bin/sh -c '$ORACLE…
Error response from daemon: No such container: 46
Error response from daemon: No such container: hours
Error response from daemon: No such container: ago
Error response from daemon: No such container: Exited
Error response from daemon: No such container: (137)
Error response from daemon: No such container: 45
Error response from daemon: No such container: hours
Error response from daemon: No such container: ago

您真的应该使用一个函数:

sc() { docker container stop $(docker container ls -a | awk 'NR>1 {print $1}'); }

但是你也可以通过去掉awk:来简化别名的构造

alias sc='docker container stop $(docker container ls -a -q)'

您需要在.bashrc文件中转义$

试试这个:

alias sc="docker container stop $(docker container ls -a | awk 'NR>1 {print $1}')"

alias sc="docker container stop $(docker container ls -aq)"

最新更新