我想在bash
中创建一个别名,如下所示:
alias tail_ls="ls -l $1 | tail"
因此,如果有人输入:
tail_ls /etc/
它只会显示目录中的最后10个文件。
但$1
似乎对我不起作用。有什么方法可以在bash中引入变量。
答案 0 :(得分:159)
我为它创建了一个函数,而不是别名,然后将其导出,如下所示:
function tail_ls { ls -l "$1" | tail; }
export -f tail_ls
注意-f
切换到export
:它告诉您正在导出一个函数。把它放在你的.bashrc
中你就可以了。
答案 1 :(得分:29)
@ maxim-sloyko的解决方案不起作用,但如果如下:
在〜/ .bashrc中添加:
sendpic () { scp "$@" mina@foo.bar.ca:/www/misc/Pictures/; }
保存文件并重新加载
$ source ~/.bashrc
并执行:
$ sendpic filename.jpg
原始来源: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