使'pushd'目录堆栈持久化

索洛萨

好的,这是一个简短的问题。我只是偶然知道,通过pushd命令,我们可以在列表中添加更多工作目录,这很方便。但是,有没有一种方法可以使此列表永久存在,从而使其在重新启动或注销后仍然可以生存?

库萨兰达

~/.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

使用-npushd实际上不会更改工作目录,而只是将给定目录添加到堆栈中。

如果愿意,可以将DIRSTACK数组的值(此处为大写变量名)存储为当前目录堆栈,数组的值来自中的文件~/.bash_logout,然后~/.bashrc使用而不是使用预定义的数组读取该文件

~/.bash_logout

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

~/.bashrc

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

我不知道在使用多个终端的情况下这种方法的效果如何。如果该.dirstack文件bash作为登录shell运行,则每次终端退出时文件都将被覆盖

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章