如何将参数传递给 bash 中的 alias/function 并立即钓鱼
How to pass argument to alias/function in bash and fish at once
我的问题非常类似于:How to pass command line arguments to a shell alias?
我想创建接受参数的别名。上面问题中的人提出了功能,这确实是解决方案。
但是,我正在同时使用 fish(Friendly Interactive SHell)和 bash。我将所有自定义别名保存在单个文件中,无论我使用的是 fish 还是 bash.
,我都会加载该文件
我知道如何在 bash 中创建 alias/functions,我知道如何在鱼中创建 alias/functions。我不知道如何同时为鱼和 bash 创建 alias/function。
它不一定是 alias/function(它可以是前卫的 hack),只是最终效果应该像预期的那样。
别名 rmi="function _rmi() { docker ps -a | grep | awk '{print }' | xargs --no-run-if-empty docker rm -f ; docker images | grep | awk '{print }' | xargs --no-run-if-empty docker rmi -f }; _rmi()"
上面一个被bash接受,但鱼不接受。
函数去
sudo 服务 $argv 重新启动
结束
以上被鱼接受,但现在bash。
别名 apts="aptitude search"
bash 和 fish 都接受上面的普通别名,但参数不能在里面(必须在最后)。
如何统一呢?
对此没有合适的通用解决方案,fish 与 bash 不兼容。
此外,alias something="function"
是不必要的。你可以直接定义函数。
如果您希望执行的操作不会改变 shell 的内部状态,您可以制作一个脚本。
例如创建一个名为 "rmi" 的文件,其中包含
#!/bin/bash
docker ps -a | grep | awk '{print }' | xargs --no-run-if-empty docker rm -f
docker images | grep | awk '{print }' | xargs --no-run-if-empty docker rmi -f
$PATH 中的某处(在 bash 和 fish 中)。
我的问题非常类似于:How to pass command line arguments to a shell alias?
我想创建接受参数的别名。上面问题中的人提出了功能,这确实是解决方案。
但是,我正在同时使用 fish(Friendly Interactive SHell)和 bash。我将所有自定义别名保存在单个文件中,无论我使用的是 fish 还是 bash.
,我都会加载该文件我知道如何在 bash 中创建 alias/functions,我知道如何在鱼中创建 alias/functions。我不知道如何同时为鱼和 bash 创建 alias/function。
它不一定是 alias/function(它可以是前卫的 hack),只是最终效果应该像预期的那样。
别名 rmi="function _rmi() { docker ps -a | grep | awk '{print }' | xargs --no-run-if-empty docker rm -f ; docker images | grep | awk '{print }' | xargs --no-run-if-empty docker rmi -f }; _rmi()"
上面一个被bash接受,但鱼不接受。
函数去 sudo 服务 $argv 重新启动 结束
以上被鱼接受,但现在bash。
别名 apts="aptitude search"
bash 和 fish 都接受上面的普通别名,但参数不能在里面(必须在最后)。
如何统一呢?
对此没有合适的通用解决方案,fish 与 bash 不兼容。
此外,alias something="function"
是不必要的。你可以直接定义函数。
如果您希望执行的操作不会改变 shell 的内部状态,您可以制作一个脚本。
例如创建一个名为 "rmi" 的文件,其中包含
#!/bin/bash
docker ps -a | grep | awk '{print }' | xargs --no-run-if-empty docker rm -f
docker images | grep | awk '{print }' | xargs --no-run-if-empty docker rmi -f
$PATH 中的某处(在 bash 和 fish 中)。