Answers:
的击文档状态“对于几乎所有目的,壳功能优于别名”。这是一个Shell函数,如果参数由(only)组成,它将替换ls
并导致输出通过管道传递到。more
-la
ls() {
if [[ $@ == "-la" ]]; then
command ls -la | more
else
command ls "$@"
fi
}
作为单线:
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
自动管道输出:
ls -la
command
防止递归调用该函数。
在别名手册页中:
如果没有引号,则检查每个简单命令的第一个单词,以查看其是否具有别名。如果是这样,该词将被替换为别名文本。别名和替换文本可以包含任何有效的shell输入,包括shell元字符,但别名不能包含“ =”。
因此,仅检查第一个单词的别名是否匹配,这使得不可能使用多单词的别名。您可能可以编写一个shell脚本来检查参数,如果参数匹配则调用您的命令,否则仅调用普通命令ls
(请参阅@Dennis Williamson的答案)
丹尼斯的答案采用了稍微改进的方法:
function ls() {
case $* in
-la* ) shift 1; command ls -la "$@" | more ;;
* ) command ls "$@" ;;
esac
}
或单线:
function ls() { case $* in -la* ) shift 1; command ls -la "$@" | more ;; * ) command ls "$@" ;; esac }
例如,这允许在命令后附加其他选项/参数,例如 ls -la -h
ls -lat
被排除在这种治疗方式之外,该如何处理?我需要在案件上方放一个案件处理-la*
,是吗?
alias lsm='ls -la | more'