在大多数情况下,别名可以很好地工作,但是有时命令是由其他程序执行的,他们会在PATH中找到它,在这种情况下,别名不能像真实文件那样工作。
例如
我有以下别名:
alias ghc='stack exec -- ghc'
我想将其转换为可执行文件,以便依赖于它的程序可以正确找到它。文件将像别名一样工作,包括如何处理其参数。
那么,有没有工具或脚本可以帮助您做到这一点?
答案 0 :(得分:2)
这是我的解决方案,我创建了一个名为ghc
的文件,如下所示:
#!/bin/sh
stack exec -- ghc "$@"
在$@
周围加双引号的原因在这里说明:Propagate all arguments in a bash shell script
答案 1 :(得分:0)
那么,有没有工具或脚本可以帮助您做到这一点?
一个简单问题的 lazy 问题...这是一个函数:
alias2script() {
if type "$1" | grep -q '^'"$1"' is aliased to ' ; then
alias |
{ sed -n "s@.* ${1}='\(.*\)'\$@#\!/bin/sh\n\1 \"\${\@}\"@p" \
> "$1".sh
chmod +x "$1".sh
echo "Alias '$1' hereby scriptified. To run type: './$1.sh'" ;}
fi; }
让我们尝试使用常见的bash
别名 ll
:
alias2script ll
输出:
Alias 'll' hereby scriptified. To run type: './ll.sh'
ll.sh
里面是什么:
cat ll.sh
输出:
#!/bin/sh
ls -alF "${@}"