如何讓「dirs」列出腳本中的整個 DIRSTACK?

如何讓「dirs」列出腳本中的整個 DIRSTACK?

我的測試腳本:

#!/bin/bash
dirs -p >> work_note.txt

在 10 個目錄的堆疊中,我只能返回頂部的 1 個目錄dirs -pdirs -v

任何有關我所缺少內容的提示或知識將不勝感激。

筆記 我的主要目標是建立一個註銷過程,將 DIRSTACK 寫入文件,以便我可以回憶起我在終端中所做的工作。我通常有多個終端運行。

答案1

DIRSTACK是一個局部變量,不會傳遞到腳本、子 shell、子進程等。我建議使用加載到您的函數.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
}

透過別名重載你的buitin 'cd'

alias cd='stackd "$1"'

相關內容