使用提供给另一个命令的参数为命令设置别名

使用提供给另一个命令的参数为命令设置别名

即:我想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将引用正在定义的函数,从而导致无限循环)。

相关内容