默认情况下,当您在GNU Screen中创建一个新窗口时,它将从调用屏幕的目录开始.我想在我目前所在窗口的当前工作目录中的GNU Screen中启动一个新窗口.怎么做?谢谢!
Dan*_*ood 31
请参阅gnu screen chdir命令.在屏幕中创建的所有新窗口都将此作为其初始目录使用.使用它你可以做类似的事情
chdir /home/dan/newscreendir
screen
Run Code Online (Sandbox Code Playgroud)
您的新窗口(以及任何将来创建的窗口)将位于set目录中.如果它总是成为当前正在运行的目录,那么您可以在自己的设置中进行设置screenrc.
请参阅gnu屏幕手册页,它非常全面.
Screen无法访问您的shell变量,也无法执行反向命令.我能在一次点击中最接近这一点就是使用像这样的小型bash脚本
screen -X setenv currentdir `pwd`
screen -X eval 'chdir $currentdir' screen
Run Code Online (Sandbox Code Playgroud)
或者更紧凑
screen -X eval "chdir $PWD"
Run Code Online (Sandbox Code Playgroud)
screen -X将命令发送到当前运行的屏幕会话.第一行创建一个名为的变量currentdir.第二行发送currentdir到chdir命令,然后创建一个新的屏幕窗口.
Mik*_*ike 10
简单的解决方案是将以下字符串放在〜/ .screenrc中,然后使用Cx打开新窗口:
绑定^ x
绑定^ x东西"屏幕-X chdir\$ PWD;屏幕^ M"
http://www.michaelkelleher.info提供了有关中级/高级屏幕用户的更多提示.
由于该网站似乎已经消失,您可以在此处找到它的存档:Michael Kelleher在Archive.org上的个人网站
小智 8
当你已经在窗口中运行进程时,我没有找到任何可行的解决方案,所以我想出了自己的想法.我在.bash_profile中添加了以下行:
scr_cd()
{
cd $1
screen -X chdir $PWD
}
if [ "$TERM" == 'screen' ]; then
alias cd=scr_cd
fi
Run Code Online (Sandbox Code Playgroud)
每次更改目录时都会更新屏幕的工作目录.有人可能不喜欢这种方法,但它就像一个魅力.
要使 Screen 在当前目录中打开新选项卡/窗口,您可以将以下代码添加到文件中.screenrc:
bind c stuff "screen bash^M"
Run Code Online (Sandbox Code Playgroud)
这将导致Ctrl+a c命令在当前窗口/选项卡的目录中打开新选项卡/窗口。
注意:您必须确保 Screen 默认情况下不会启动登录shell,因为这将导致 shell 在登录 shell 的默认目录而不是当前目录中启动。这意味着在您的.screenrc文件中,您的shell命令不能包含破折号(“-”)字符。
例如,这是错误的(即,它将启动登录 shell):
shell -$SHELL
Run Code Online (Sandbox Code Playgroud)
但这是正确的(即,它不会启动登录 shell):
shell $SHELL
Run Code Online (Sandbox Code Playgroud)
注 2:不幸的是,此方法的行为与 Screen 中默认的新窗口/选项卡命令并不完全相同。相反,它将命令写入当前窗口并执行它以创建新窗口/选项卡,因此在某些长时间运行的 shell 进程中它将不起作用。换句话说,只有在可以执行普通 shell 命令时才能执行此键盘快捷键。
注3:如果您希望Screen在当前目录中打开新的窗口/选项卡并打开登录shell,您可以将以下代码添加到您的.screenrc文件中:
bind c stuff "screen bash -l^M"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19138 次 |
| 最近记录: |