创建带参数的别名的最短方法是什么?

时间:2017-11-28 16:15:05

标签: linux bash unix alias

我有一个命令

lsof -i :3000

当我运行它时,我得到了这个

⚡️lsof -i :3000                                                                                                             
COMMAND  PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME                                                              
node    6803 bheng   13u  IPv6 0xa757c4ba1a0bf589      0t0  TCP *:hbci (LISTEN)                                                   

我想创建一个这个命令的别名,它将一个参数作为我的端口号。

我不打算为此创建一个函数或任何东西。

我试过

alias checkport='lsof -i :$1'

我想像这样使用它

checkport 3000

结果

⚡️checkport 3000                                                                                                            
lsof: unacceptable port specification in: -i :                                                                                    
lsof 4.89                                                                                                                         
 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/                                                                 
 latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ                                                                   
 latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man                                                         
 usage: [-?abhlnNoOPRtUvV] [+|-c c] [+|-d s] [+D D] [+|-f[cgG]]                                                                   
 [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+|-M] [-o [o]] [-p s]                                                                     
 [+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]                                                     
Use the ``-h'' option to get more help information.                                                                               

1 个答案:

答案 0 :(得分:3)

别名不带参数。改为定义一个函数。

checkport () {
    lsof -i ":$1"
}

但是,因为别名的“参数”只是附加到别名扩展的末尾,所以你也可以定义

alias checkport='lsof -i :'

两者的使用方式相同:checkpoint 3000