别名与bash中的变量

时间:2010-12-14 10:29:03

标签: linux bash

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

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

因此,如果有人输入:

tail_ls /etc/ 

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

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

6 个答案:

答案 0 :(得分:159)

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

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

export -f tail_ls

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

答案 1 :(得分:29)

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

  1. 在〜/ .bashrc中添加:

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

    $ source ~/.bashrc
    
  3. 并执行:

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

答案 2 :(得分:12)

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

如果您使用的是Fish shell(来自http://fishshell.com)而不是bash,那么它们的功能会有所不同。

您希望在~/.config/fish/config.fish中添加类似于~/.bashrc

的内容
function tail_ls
  ls -l $1 | tail
end