bash alias with argument and autocompletion

前端 未结 2 1575
青春惊慌失措
青春惊慌失措 2021-02-02 01:30

I have a bunch of scripts in directory that exists on the path, so I can access each wherever I am. Sometime those are very simple util scripts that \"vims\" the file. From tim

相关标签:
2条回答
  • 2021-02-02 02:20

    For the alias with argument, use function instead of aliases :

    a() { cat `which $1` ;}
    

    Or if you do it on more than one line, skip th semicolon :

    a() {
        cat `which $1`
    }
    

    You can enter it interactively at the shell prompt :

    shell:>a() {
    >cat `which $1`
    >}
    shell:>
    
    0 讨论(0)
  • 2021-02-02 02:21

    If your function is called "foo" then your completion function could look like this:

    If you have the Bash completion package installed:

    _foo () { local cur; cur=$(_get_cword); COMPREPLY=( $( compgen -c -- $cur ) ); return 0; }
    

    If you don't:

    _foo () { local cur; cur=${COMP_WORDS[$COMP_CWORD]}; COMPREPLY=( $( compgen -c -- $cur ) ); return 0; }
    

    Then to enable it:

    complete -F _foo foo
    

    The command compgen -c will cause the completions to include all commands on your system.

    Your function "foo" could look like this:

    foo () { cat $(type -P "$@"; }
    

    which would cat one or more files whose names are passed as arguments.

    0 讨论(0)
提交回复
热议问题