Bash 脚本替换两个步骤: cd ./some_dir, ls -al?

Bash 脚本替换两个步骤: cd ./some_dir, ls -al?

我想编写一个 bash scipt,它将更改为目标目录并列出新目录的内容,所有这些都一步完成。它将取代我经常连续使用的两个命令:

  • cd ./some_directory
  • ls-al

执行脚本后,我的当前目录将发生变化,并且 ls -al 将显示目录列表。

cdl ./some_directory

这可能吗?

答案1

您无法使用 shell 脚本执行此操作,因为脚本在新 shell 中运行,退出脚本会退出 shell 并“忘记”目录更改。看更改当前目录的脚本(cd、pwd)例如(网站上的某个地方可能有更详细的答案)。

您需要使用一个函数来代替:

cd1() {
    cd "$@"
    ls -al
}

答案2

另一种选择(在你的 .bashrc 中):

PROMPT_COMMAND='if [[ "$PWD" != "$_promptPWD" ]]; then ls -al; _promptPWD=$PWD; fi'
_promptPWD=$PWD

ls如果您更改了目录,它会与 bash 的 PROMPT_COMMAND 功能挂钩,让它为您运行。缺点是:

  • 需要修补到任何现有的 PROMPT_COMMAND(如果有)中
  • 用另一个变量扰乱环境 ( _promptPWD)

好处是您可以继续cd正常输入,而不需要输入不同的内容来获得ls行为。

相关内容