我不知道是否有一种有效的方法可以做到这一点.但是,一直想看看它是否可能.
我知道pushd,popd和dirs对于你最近访问过的目录之间的复制很有用.
但是,有没有一种方法可以保持全局堆栈?因此,如果我在一个终端中推送一些东西(使用pushd),它会反映在另一个终端中(可能只是该登录会话中的终端).
您应该能够使用一对shell函数和一个临时文件来执行此操作。
您的临时文件将被命名为“ /home/me/.directory_stack”,并且仅包含目录列表:
/home/me
/etc
/var/log
Run Code Online (Sandbox Code Playgroud)
您的“ push_directory”功能只会将当前目录添加到列表中。“ pop_directory”功能将从列表中提取最新的内容并切换到该目录。将堆栈存储在这样的文件中可确保信息在所有打开的终端(甚至在重新启动期间)都存在。
以下是一些示例函数(警告:仅经过轻微测试)
directory_stack=/home/me/.directory_stack
function push_dir() {
echo $(pwd) >> $directory_stack
cd $1
}
function pop_dir() {
[ ! -s $directory_stack ] && return
newdir=$(sed -n '$p' $directory_stack)
sed -i -e '$d' $directory_stack
cd $newdir
}
Run Code Online (Sandbox Code Playgroud)
将其添加到您的目录中.bashrc,它们将在您每次登录Shell时自动定义。