私のテストスクリプト:
#!/bin/bash
dirs -p >> work_note.txt
10 個のディレクトリのスタックでは、先頭の 1 つだけが返されます。コマンド ラインでdirs -p
またはを実行すると、スタック全体が返されます。dirs -v
私が見逃しているものについてのヒントや知識があれば、ぜひ教えてください。
注記 私の主な目標は、ターミナルで実行していた作業を思い出せるように、DIRSTACK をファイルに書き込むログアウト プロセスを作成することです。通常、複数のターミナルが稼働しています。
答え1
はDIRSTACK
ローカル変数であり、スクリプト、サブシェル、子プロセスなどに渡されません。.bashrc
スクリプトの代わりに、 にロードされた関数を使用することをお勧めします。
答え2
このトリックを使って、セッションごとにディレクトリスタックを取得しました。以前はファイルに保存していました。他の端末にインポート/エクスポートすることもできます。
この関数を.bashrcで定義します
stackd ()
{
SAVEIFS=$IFS;
IFS=$(echo -en "\n\b");
builtin cd $@ && builtin pushd "$PWD" > /dev/null;
dirs -l -p >> $HOME/.iostackd/dirstack && sort -u -o $HOME/.iostackd/dirstack $HOME/.iostackd/dirstack > /dev/null;
IFS=$SAVEIFS
}
エイリアスでビルトイン「cd」をオーバーロードする
alias cd='stackd "$1"'