我正在使用平铺窗口管理器,并从gnome-terminal
使用多个选项卡切换到urxvt
由窗口管理器管理的多个实例。我怀念的功能之一是能够打开一个新终端,默认为上一个终端的工作目录。
简而言之:我需要一种方法来打开一个新的 urxvt (bash),默认为上次使用的 $PWD。
我想到的唯一解决方案是保存每个路径的当前路径,cd
如下所示:
echo $PWD > ~/.last_dir
并以这种方式恢复新终端上的路径:
cd `cat ~/.last_dir`
我可以获取第二个命令,.bashrc
但我不知道如何在每次目录更改时执行第一个命令:)
欢迎任何不涉及screen
或使用的更简单的解决方案。tmux
答案1
我目前正在使用#1 解决方案的这个版本
# save path on cd
function cd {
builtin cd $@
pwd > ~/.last_dir
}
# restore last saved path
if [ -f ~/.last_dir ]
then cd `cat ~/.last_dir`
fi
在我里面.zshrc
答案2
这实际上是很微不足道的;如果您urxvt
从现有urxvt
窗口中运行,新窗口将位于同一目录中。为此,我使用了dup
别名。urxvt &
如果你想将它绑定到热键,你可以使用 bash 的bind
命令。例如,将其绑定到F1:
$ bind '"\e[11~": "urxvt &\n"'
答案3
我看到三种使用.last_dir
.您可以放置echo $PWD > ~/.last_dir
:
在一个特殊的函数中,它是以下内容的包装器
cd
:function cd_ { [[ -d "$@" ]] || return 1 echo "$@" > ~/.last_dir cd "$@" }
将其放入您的目录中
~/.bashrc
,然后cd_
在每次您想要存储新工作目录时使用它来代替 cd。在你的
$PROMPT_COMMAND
(不建议):PROMPT_COMMAND="$PROMPT_COMMAND; pwd > ~/.last_dir"
您可以直接从终端测试它或将其放入
~/.bashrc
.然而,此解决方案每次出现提示时都会触发磁盘写入,这可能会导致麻烦 - 但另一方面,.last_dir
无论您如何到达那里,都会包含当前目录。在一个定制的Perl 扩展脚本为了
rxvt
。我自己从未创建过,但您可以在网上找到很多示例。