我的问题非常类似于:How to pass command line arguments to a shell alias?
我想创建接受参数的别名。上述问题中的人提出了功能,实际上这是解决方案。
然而,我正在使用鱼(Friendly Interactive SHell)和bash。我将所有自定义别名保存在单个文件中,无论我是使用fish还是bash,我都会加载。
我知道如何在bash中创建别名/函数,我知道如何在fish中创建别名/函数。我不知道,如何为鱼和bash立刻创建别名/功能。
它不必是别名/功能(它可以是前卫黑客),只是最终效果应该像预期的那样工作。
alias rmi =" function _rmi(){docker ps -a | grep $ 1 | awk' {print $ 1}' | xargs --no-run-if-empty docker rm -f;码头图片| grep $ 1 | awk' {print $ 3}' | xargs --no-run-if-empty docker rmi -f}; _rmi()"
上面的一个被bash接受,但不是鱼。
功能去吧 sudo服务$ argv重启 端
上面被鱼接受,但现在是bash。
alias apts =" aptitude search"
如上所述的普通别名被bash和fish接受,但是参数不能在里面(必须在最后)。
如何统一它?
答案 0 :(得分:2)
没有适当的通用解决方案,鱼与bash不兼容。
此外,alias something="function"
是不必要的。您可以直接定义函数。
如果您希望执行的内容不会改变shell的内部状态,则可以改为编写脚本。
E.g。创建一个名为“rmi”的文件,其中包含
#!/bin/bash
docker ps -a | grep $1 | awk '{print $1}' | xargs --no-run-if-empty docker rm -f
docker images | grep $1 | awk '{print $3}' | xargs --no-run-if-empty docker rmi -f
在$ PATH(在bash和fish中)的某处。