别名命令选项

别名命令选项

有什么方法可以为命令的选项设置别名吗?例如,我经常使用选项-mindepth-maxdepthwith find,但它们都很长,每个有 9 个字符,并且没有相应的缩写形式。我想将它们别名为可以更快键入的名称,例如-mn-mx。当然,人们总是可以使用新选项名称构建自定义二进制文件,但我对提供这种行为的 shell 内置程序/实用程序感兴趣(类似于如何alias允许命令使用别名)。

答案1

编写 shell 函数或脚本。唯一的问题是你对极端情况的关心程度。如果你根本不关心的话

 #!/bin/bash
 args=()
 while (($# > 0))
 do
      case "$1" in
      ("-mn") args=("${args[@]}" "-mindepth") ;;
      ("-mx") args=("${args[@]}" "-maxdepth") ;;
      (*) args=("${args[@]}" "$1") ;;
      esac
      shift
 done
 exec find "${args[@]}"

如果你更关心一点,那么使用

      ("-mn") args=("${args[@]}" "-mindepth" "$2") ; shift ;;

并为所有其他带有参数的查找选项添加类似的情况,这样您就不会转换

  find / -name -mn -print

进入

  find / -name -mindepth -print

不要调用此脚本find,可能是fnd因为它需要比 find 或 更短的选项myfind。如果您称其为 find ,则可以使其工作,但正如评论中提到的,您不知道如何改变标准程序的行为。

相关内容