代码之家  ›  专栏  ›  技术社区  ›  luochen1990

如何将别名转换为真实文件?

  •  0
  • luochen1990  · 技术社区  · 6 年前

    大多数情况下,别名工作正常,但有时,命令由其他程序执行,它们会在路径中找到它,在这种情况下,别名的工作效果不如真实文件。

    例如

    我有以下别名:

    alias ghc='stack exec -- ghc'
    

    我想把它翻译成一个可执行文件,这样依赖它的程序就能正确地找到它。该文件的工作方式与别名相同,包括如何处理其参数。

    那么,有什么工具或脚本可以帮助实现这一点吗?

    0 回复  |  直到 6 年前
        1
  •  2
  •   luochen1990    6 年前

    这是我的解决方案,我创建了一个名为 ghc 具体如下:

    #!/bin/sh
    stack exec -- ghc "$@"
    

    为什么会有双引号 $@ 这里解释如下: Propagate all arguments in a bash shell script

        2
  •  0
  •   agc Blair Houghton    6 年前

    那么,有什么工具或脚本可以帮助实现这一点吗?

    A. 懒惰的 问一个简单的问题。。。这里有一个函数:

    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 "${@}"