有什么方法可以为命令的选项设置别名吗?例如,我经常使用选项-mindepth
和-maxdepth
with 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 ,则可以使其工作,但正如评论中提到的,您不知道如何改变标准程序的行为。