如何在 Linux 中自动执行 `cd` 然后* `ls`?

如何在 Linux 中自动执行 `cd` 然后* `ls`?

我发现自己已经cd some_dir在相当长的一段时间内一直在快速地做ls这件事,并且一直在尝试编写一个 bash 别名来让我做到这一点,例如:

alas cd="cd $@; ls";

问题在于你不能有输入参数在别名的中间(如果我错了请纠正我)。

我也尝试按照以下建议定义自己的 shell 函数这一页

cd() { cd "$@"; ls; }

但问题是,如果我尝试像这样使用它:

cd Documents

shell 以 退出[Process completed],导致 shell 变得无用...那么我该如何解决这个问题?

答案1

尝试这个:

cd() { builtin cd "$@" && ls; }

builtin使cd函数内部调用内置cd命令而不是尝试递归调用该函数。

答案2

ls我使用 Bash 函数在之后自动执行cd

# Automatically do an ls after each cd
cd() {
  if [ -n "$1" ]; then
    builtin cd "$@" && ls --group-directories-first
  else
    builtin cd ~ && ls --group-directories-first
  fi
}

只需将以上内容添加到您的~/.bashrc

我个人将其添加到我的~/.bash_functions(来源于我的~/.bashrc

答案3

在 GNU Bash 中,

PROMPT_COMMAND=ls

相关内容