如何让“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"'

相关内容