2つのステップを置き換えるBashスクリプト:cd ./some_dir、ls -al?

2つのステップを置き換えるBashスクリプト:cd ./some_dir、ls -al?

ターゲットディレクトリに変更し、新しいディレクトリの内容を一覧表示するbash sciptを1段階で作成したいと思います。これは私が頻繁に連続して使用する2つのコマンドを置き換えます。

  • CD ./some_directory
  • ls - 卵

スクリプトを実行すると、現在のディレクトリが変更され、ls -alがディレクトリのリストを表示します。

cdl ./some_directory

可能ですか?

答え1

スクリプトが新しいシェルで実行され、シャットダウンスクリプトがシェルを終了し、ディレクトリの変更を「忘れる」ため、シェルスクリプトではこれを実行できません。バラより現在のディレクトリを変更するスクリプト(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

関連情報