web-dev-qa-db-ja.com

'pushd'ディレクトリスタックを永続化する

わかりました、これは短い質問です。たまたまpushdコマンドを使用すると、作業ディレクトリをリストに追加できるので便利です。しかし、このリストを永続的にして、再起動やログオフに耐えられるようにする方法はありますか?

4
Sollosa

必要に応じて、~/.bashrcファイルにディレクトリスタックを事前に入力できます。

for dir in "$HOME/dir" /usr/src /usr/local/lib; do
    pushd -n "$dir" >/dev/null
end

または、ディレクトリを配列に配置し、代わりにそこから使用する場合は、次のようにします。

dirstack=( "$HOME/dir"
           /usr/src
           /usr/local/lib )

for dir in "${dirstack[@]}"; do
    pushd -n "$dir" >/dev/null
end

unset dirstack

-nを使用すると、pushdは実際には作業ディレクトリを変更せず、代わりに指定されたディレクトリをスタックに追加します。

必要に応じて、currentディレクトリスタックであるDIRSTACK配列(ここでは大文字の変数名)の値を~/.bash_logoutからファイルに格納できます。 、次に、事前定義された配列を使用するのではなく、~/.bashrcでそのファイルを読み取ります。

~/.bash_logout

declare -p DIRSTACK >"$HOME/.dirstack"

~/.bashrc

if [ -f "$HOME/.dirstack" ]; then
    source "$HOME/.dirstack"
fi

複数の端末を使用している状況で、これがどの程度うまく機能するかはわかりません。ログインシェルとしてbashを実行した場合、端末が終了するたびに.dirstackファイルが上書きされます。

5
Kusalananda