别名与variables在bash中

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

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

因此,如果有人types:

 tail_ls /etc/ 

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

$1似乎不适合我。 有没有什么办法可以在bash中引入variables。

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

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

注意-f切换到export :它告诉它你正在导出一个函数。 把这个放在你的.bashrc ,你很好。

@ maxim-sloyko的解决scheme不起作用,但如果出现以下情况:

  1. 在〜/ .bashrc中添加:

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

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

     $ sendpic filename.jpg 

原始来源: http : //www.linuxhowtos.org/Tips%20and%20Tricks/command_aliases.htm

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

如果你正在使用Fish shell(来自http://fishshell.com )而不是bash,他们写的function有点不同。

你会想要添加这样的东西到你的~/.config/fish/config.fish里面~/.bashrc

 function tail_ls ls -l $1 | tail end 

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

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

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