如何解决使用$...创建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)"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。