关于linux:在bash中使用变量的别名

Alias with variable in bash

本问题已经有最佳答案,请猛点这里访问。

我想在bash中创建一个别名,如下所示:

1
alias tail_ls="ls -l $1 | tail"

因此,如果有人输入:

1
tail_ls /etc/

它只会显示目录中的最后10个文件。

$1似乎对我不起作用。 有什么办法可以在bash中引入变量。


我为它创建了一个函数,而不是别名,然后导出它,如下所示:

1
2
3
function tail_ls { ls -l"$1" | tail; }

export -f tail_ls

注意-f切换到export:它告诉它您正在导出一个函数。 把它放在你的.bashrc中就可以了。


@ maxim-sloyko的解决方案不起作用,但如果如下:

  • 在?/ .bashrc中添加:

    1
    sendpic () { scp"$@" mina@foo.bar.ca:/www/misc/Pictures/; }
  • 保存文件并重新加载

    1
    $ source ~/.bashrc
  • 并执行:

    1
    $ sendpic filename.jpg
  • 原始资料来源:http://www.linuxhowtos.org/Tips%20and%20Tricks/command_aliases.htm


    1
    alias tail_ls='_tail_ls() { ls -l"$1" | tail ;}; _tail_ls'


    您可以使用set定义$1,然后按预期使用别名:

    1
    2
    3
    $ alias tail_ls='ls -l"$1" | tail'
    $ set mydir
    $ tail_ls

    如果您使用Fish shell(来自http://fishshell.com)而不是bash,他们会以不同的方式编写函数。

    您需要在~/.config/fish/config.fish中添加类似于~/.bashrc的内容

    1
    2
    3
    function tail_ls
      ls -l $1 | tail
    end

    tail_ls() { ls -l"$1" | tail; }