将 ls -a 映射到 ls -A

将 ls -a 映射到 ls -A

我尝试制作一个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 

相关内容