我想在 bash中创建一个这样的别名:
bash
alias tail_ls="ls -l $1 | tail"
因此,如果有人打字:
tail_ls /etc/
它将只显示目录中的最后10个文件。
但是 $1似乎对我不起作用。有没有什么办法我可以在 bash 中引入变量。
$1
tail_ls() { ls -l "$1" | tail; }
我会为它创建一个函数,而不是别名,然后像这样导出它:
function tail_ls { ls -l "$1" | tail; } export -f tail_ls
注意,-f切换到 export: 它告诉它您正在导出一个函数。把这个放进你的 .bashrc,你就可以开始了。
-f
export
.bashrc
@ maxim-sloyko 的解决方案不起作用,但如果:
在 ~/. bashrc 中添加:
sendpic () { scp "$@" mina@foo.bar.ca:/www/misc/Pictures/; }
Save the file and reload
$ source ~/.bashrc
And execute:
$ sendpic filename.jpg
original source: http://www.linuxhowtos.org/Tips%20and%20Tricks/command_aliases.htm
如果您使用 Fish shell (来自 http://fishshell.com)而不是 bash,那么它们编写函数的方式稍有不同。
你会想要把这样的东西加到你的 ~/.config/fish/config.fish中,它相当于你的 ~/.bashrc
~/.config/fish/config.fish
~/.bashrc
function tail_ls ls -l $1 | tail end
alias tail_ls='_tail_ls() { ls -l "$1" | tail ;}; _tail_ls'
您可以使用 set定义 $1,然后按预期使用别名:
set
$ alias tail_ls='ls -l "$1" | tail' $ set mydir $ tail_ls