我尝试制作一个alias ls -a = ls -A
,最终得到:
bash: alias: `ls -a': invalid alias name
我想要ls -a
没有.
和..
。我怎样才能得到它?
答案1
你不能这样使用别名。别名是单个名称,无需任何参数即可调用(所有参数都直接传递给别名命令,无需修改)。
我解决您面临的问题的建议是使用一个函数,然后将其别名为ls
,如下所示:
_ls() {
if [[ "$1" == "-a" ]]; then
shift
ls -A "$@"
else
ls "$@"
fi
}
alias ls=_ls
请注意,这种方式只会ls -a
受到影响(-a
需要单独放在第一个位置),因此您仍然可以-a
通过将其放在其他位置或与其他选项收集来访问“标准”:
ls -a # modified '-a'
ls -a -l /tmp # modified '-a'
ls -al # not modified
ls -l -a /tmp # not modified