如何在打开新终端时维护“旧”终端中的“dirs -v”目录列表?

如何在打开新终端时维护“旧”终端中的“dirs -v”目录列表?

我刚刚玩了 dirs、pushd 和 popd。使用 pushd 添加/浏览目录,使用 dirs -v 显示目录“堆栈”的垂直列表,使用 popd 从列表中删除条目。当我打开新终端并使用 dir 或 dir -v 列出目录时,新终端仅显示当前目录。打开新终端时,有没有办法传输列表?我在 Debian Stretch 上使用 xfce4-terminal。

答案1

您可以将目录列表保存在一个文件中,每行一个,然后通过pushd在每一行上重复执行操作在新 shell 中恢复它们。这假设您没有名称中包含换行符的目录。

bash 确实有一个内置变量DIRSTACK来保存目录列表,但遗憾的是它没有多大用处,因为你不能向这个数组中添加新元素(尽管你可以更改现有条目)。

因此,要保存列表,只需执行

dirs -p >~/mydirs

恢复它们有点复杂。首先,我们将文件读入数组v,然后以相反的顺序遍历它,直到条目索引 1。我停在索引 1 而不是 0,因为第 0 个条目就是您执行此操作时的当前目录dirs -p。您可以选择是否要这样做。

dirs -c # clear
IFS=$'\n' read -r -d '' -a v <~/mydirs
for ((i=${#v[*]}-1; i>=1; i--))
do pushd -n "${v[i]}" >/dev/null
done

将此代码保存在 Bash 函数中并从中调用它是有意义的~/.bashrc

相关内容