GNU屏幕生存指南
人们认为,关于优质的Screen实用程序,我们不仅需要了解基本知识,而且还需要从根本上教给初学者的知识?
我刚刚向屏幕介绍了一位朋友,他们很难适应它。因此,记住绑定等的类比和方便的技巧会很棒。
解决方案
回答
如果朋友习惯按" ^ A"以bash到达行的开头,则他/她会有些意外,因为" ^ A"是屏幕命令键绑定。通常我最终会死机,可能是因为我在^ A
之后按下了一些随机键:-)
在那种情况下,我尝试
^ A s
和^ A q
阻止/取消阻止终端滚动
解决这个问题。要转到屏幕内一行的开头,按键顺序为^ A a
。
回答
Ctrl + a是一个特殊键。
按下ctrla
d` [d],将程序(irssi?)留在后台,然后返回。
ctrl
+a
c[c]创建一个新窗口
ctrl+
a``0-9`在窗口之间按数字切换
屏幕-r返回到分离的会话
这涵盖了90%的用例。不要试图一次显示所有功能。
回答
Ctrl + A是基本命令
Ctrl + A N =转到*** N ***下一屏
Ctrl + A P =转到*** P ***上一个屏幕
Ctrl + A A C = *** C ***创建新屏幕
Ctrl + A + D = *** D ***到达屏幕
回答
我使用屏幕已有10多年了,可能只使用了不到一半的功能。因此,绝对没有必要立即学习其所有功能(我不建议尝试)。我的日常命令是:
^A ^W - window list, where am I ^A ^C - create new window ^A space - next window ^A p - previous window ^A ^A - switch to previous screen (toggle) ^A [0-9] - go to window [0-9] ^A esc - copy mode, which I use for scrollback
我想就是这样。我有时会使用分屏功能,但肯定不是每天使用。另一个提示是,如果屏幕似乎因意外击中某些随机键而被锁定,请同时执行^ Q和^ A ^ Q来尝试将其解锁。
回答
Ctrl + A显示帮助屏幕!
回答
我直到习惯于在屏幕底部找到一种设置"状态栏"的方法来显示屏幕时,该状态栏才能显示我们正在使用的"标签"或者"虚拟屏幕"以及存在的其他屏幕。这是我的设置:
[roel@roel ~]$ cat .screenrc # Here comes the pain... caption always "%{=b dw}:%{-b dw}:%{=b dk}[ %{-b dw}%{-b dg}$USER%{-b dw}@%{-b dg}%H %{=b dk}] [ %= %?%{-b dg}%-Lw%?%{+b dk}(%{+b dw}%n:%t%{+b dk})%?(%u)%?%{-b dw}%?%{-b dg}%+Lw%? %{=b dk}]%{-b dw}:%{+b dw}:" backtick 2 5 5 $HOME/scripts/meminfo hardstatus alwayslastline "%{+b dw}:%{-b dw}:%{+b dk}[%{-b dg} %0C:%s%a %{=b dk}]-[ %{-b dw}Load%{+b dk}:%{-b dg}%l %{+b dk}] [%{-b dg}%2`%{+b dk}] %=[ %{-b dg}%1`%{=b dk} ]%{-b dw}:%{+b dw}:%<" sorendition "-b dw" [roel@roel ~]$ cat ~/scripts/meminfo #!/bin/sh RAM=`cat /proc/meminfo | grep "MemFree" | awk -F" " '{print }'` SWAP=`cat /proc/meminfo | grep "SwapFree" | awk -F" " '{print }'` echo -n "${RAM}kb/ram ${SWAP}kb/swap" [roel@roel ~]$
回答
我们可以将ctrl-A中的转义键重新映射为我们选择的另一个键,因此,如果我们将其用于其他用途,例如要以bash转到该行的开头,只需在〜/ .screenrc文件中添加一行即可。要使其变为^ b或者^ B,请使用:
escape ^bB
在命令行中,使用名称会话来控制多个会话。我为每个任务使用一个会话,每个会话都有多个选项卡:
screen -ls lists your current screen sessions screen -S <name> creates a new screen session called name screen -r <name> connects to the named screen sessions
使用屏幕时,我们只需要几个命令:
^A c create a new shell ^A [0-9] switch shell ^A k kill the current shell ^A d disconnect from screen ^A ? show the help
此处提供了出色的快速参考。值得收藏。
回答
^ A A切换回我们刚来自的屏幕。
回答
不仅仅与屏幕无关,而是在终端中启用256种颜色,GNU Screen和Vim极大地改善了我的屏幕体验(尤其是因为我每天在Vim中编写代码的时间约为8小时,所以有一些很棒的对眼睛友好的色彩设计)。
回答
我想为屏幕设置一个带有描述性名称的屏幕会话。 ^ a A将为我们提供当前窗口的名称,而^ a"将为我们提供窗口列表。
完成后,用^ a d拆开屏幕,然后用屏幕-R重新连接
回答
http://www.debian-administration.org/articles/34
我是几年前写的,但是它仍然是一个很好的介绍,得到了很多积极的反馈。
回答
我"必须"添加此内容:添加
bind s
到.screenrc
中,如果我们以前喜欢我使用拆分窗口,因为C-a S'拆分了实际窗口,但是
C-a s冻结了它。所以我只是禁用了冻结快捷方式。
回答
在下一版本的Ubuntu Server中,默认情况下会进行一些有趣的工作以获取良好的GNU屏幕设置,其中包括使用屏幕底部显示所有窗口以及其他有用的计算机详细信息(例如可用的更新)以及计算机是否需要重新启动)。我们可能可以抓住他们的.screenrc
并根据需要对其进行自定义。
我在.screenrc中拥有的最有用的命令如下
shelltitle "$ |bash" # make screen assign window titles automatically hardstatus alwayslastline "%w" # show all window titles at bottom line of term
这样,我总是知道打开了哪些窗口,以及当前正在其中正在运行的窗口。
回答
我对.screenrc所做的第一个修改是更改转义命令。与你们中的许多人一样,我不喜欢默认的Ctrl-A序列,因为它在几乎所有其他情况下都会干扰基本功能。在我的.screenrc文件中,添加:
逃脱`e
那是反击-e。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
这使我可以将反引号用作转义键(例如,创建一个新屏幕,我按backtick-c,detach是backtick-d,backtick-?是帮助,backtick-backtick是上一个屏幕,等等)。干扰的唯一方法(我不得不戒掉习惯)是在命令行上使用反引号捕获执行输出,或者粘贴任何包含反引号的内容。对于前者,我通过使用BASH $(command)约定来改变了习惯。对于后者,我通常只是弹出另一个xterm或者与屏幕分离,然后粘贴包含反引号的内容。最后,如果要插入文字反引号,只需按backtick-e。
回答
针对那些熟悉屏幕但又不记得在手册页中阅读的内容的人的一些提示:
- 更改屏幕窗口的名称非常简单:Ctrl + A Shift + A。
- 我们是否错过了屏幕上的最后一条消息? ctrl + a a ctrl + m将再次为我们显示。
- 如果我们想运行某些内容(例如尾随文件)并在有更改时让屏幕告诉我们,请在目标窗口上使用ctrl + A Shift + M警告:如果有任何变化,它将通知我们。
- 是否要直接选择窗口15?在.screenrc文件中尝试这些:
bind ! select 11 bind @ select 12 bind \# select 13 bind $ select 14 bind % select 15 bind \^ select 16 bind & select 17 bind * select 18 bind ( select 19 bind ) select 10
这为Windows 10至19分配了ctrla
shift+ 0至9
。
回答
我不记得我是谁偷的(dotfile.org上的某人)。我为ssh做了一些修改:
#!/bin/sh # scr - Runs a command in a fresh screen # # Get the current directory and the name of command wd=`pwd` cmd= shift # We can tell if we are running inside screen by looking # for the STY environment variable. If it is not set we # only need to run the command, but if it is set then # we need to use screen. if [ -z "$STY" ]; then $cmd $* else # Screen needs to change directory so that # relative file names are resolved correctly. screen -X chdir $wd # Ask screen to run the command if [ $cmd == "ssh" ]; then screen -X screen -t ""${1##*@}"" $cmd $* else screen -X screen -t "$cmd $*" $cmd $* fi fi
然后设置以下bash别名:
vim() { scr vim $* } man() { scr man $* } info() { scr info $* } watch() { scr watch $* } ssh() { scr ssh $* }
它使用ssh打开上述别名和iff的新屏幕,并使用ssh主机名重命名屏幕标题。
干杯z0mbix
回答
有人在"服务器故障"上发布了与此类似的问题。