![使用提供给另一个命令的参数为命令设置别名](https://linux22.com/image/62173/%E4%BD%BF%E7%94%A8%E6%8F%90%E4%BE%9B%E7%BB%99%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E7%9A%84%E5%8F%82%E6%95%B0%E4%B8%BA%E5%91%BD%E4%BB%A4%E8%AE%BE%E7%BD%AE%E5%88%AB%E5%90%8D.png)
即:我想tail -f
使用别名less +F
,但让 tail 与提供的任何其他参数以与以前相同的方式工作。
答案1
这稍微超出了 shell 别名提供的能力(假设是 bash)。您可以定义一个函数:
function tail() {
if [ "$1" == '-f' ]; then
shift
less +F "$@"
else
command tail "$@"
fi
}
当您键入 时tail
, this 现在将引用上面定义的函数,该函数检查其第一个参数(如果有)是否与 相等
-f
,如果匹配,则less +F
对其余原始参数运行(shift
删除第一个原始参数,
-f
) 。否则,它会使用所有原始参数调用命令tail
(调用内置函数command
是避免无限循环所必需的;如果没有它,tail
将引用正在定义的函数,从而导致无限循环)。