“屏幕”的隐藏function

由于我整天使用* nix命令screen ,并且我找不到任何人开始这个问题,我认为它应该开始。 你知道演习:社区wiki,每个function一个答案,所以我们都可以投票。

喜欢用它来连接到串行控制台,即

 screen /dev/ttyS0 19200 

这个命令只是打开一个串口0(ttyS0)的连接,波特率为19200

screen的最大特点是自从Jaunty以来默认随Ubuntu一起提供的Byobu(原屏幕configuration文件): https : //launchpad.net/byobu

这是一个configurationpipe理器,具有非常好的默认值,吨状态通知和有用的键盘快捷键(即新的屏幕f2,前/后等f3 – f4)

我真的不去没有它了:)

从KTamas的amswer:不止一个人可以使用相同的屏幕,即如果你的朋友ssh到你的电脑,然后他可以连接到你的屏幕。 有两三个人在同一个项目上工作,这真是太好了。

不完全是一个“隐藏的function”; 但正确设置.screenrc文件可以使一个世界的不同。 其中一个更好的例子可以通过googlesearchscreenrc和“brad sims”find – 他有一个很好的文件来修补。

那说,我最喜欢的设置将是bindkey:

 # bind F7 to detach screen session from this terminal # bind F8 to kill current screen window. # bind F9 to create a new screen # bind F10 to rename current screen window # bind F11 to move to previous window # bind F12 to move to next window bindkey -k k7 detach bindkey -k k8 kill bindkey -k k9 screen bindkey -kk; title bindkey -k F1 prev bindkey -k F2 next 

我不记得是谁偷了这个(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=$1 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,它将使用ssh主机名重命名屏幕标题。

干杯z0mbix

有一点我觉得有用的是,屏幕可以模拟比你的terminal更大的宽度。 我觉得这很有用,如果我使用less到真正的日志文件,我不希望行换行。 使用:

Ctrl-A width -w 999

我可以设置screen比我的terminal更宽,并且less日志行将不会包装。

在启动屏幕时可以更改控制键。 我使用它,所以我可以嵌套在对方的屏幕会话。 例如:“screen -e ^ w ^ x”使控制关键字ctr-w。

一个不错的function:您可以使用backtick来添加额外的信息以显示在标题中。 例如,我有一个脚本,可以在不同的文件夹中输出新的邮件数量的单行摘要,如果我的屏幕会话与主机名一起显示,如下所示:

 backtick 1 15 15 /home/waltermundt/bin/newmail caption always caption string "%{.kW}%1` example.com %{.bW}%-w%{.rW}%n %t%{-}%+w %{.gW}%h%{-}" 

关键是%1`位,它是指反向作业1的输出。

(我使用hardstatus作为xterm标题string,并设置不同,因此使用caption而不是hardstatus alwayslastline 。)

不是“隐藏”function,但与其他活动用户共享屏幕会话的function非常有用。

设置屏幕共享的方法很复杂,包括访问控制权限和用户名称pipe理。 我和同事经常做的事情要快得多和肮脏:

  1. 在新窗口中login相关机器。
  2. 允许任何人写入我的terminal: chmod 777 $(tty)
  3. Sudo到他们的帐户: sudo su <username>
  4. 分享他们的屏幕: screen -x <session>

这不需要任何高级configuration或密码共享。

我自己打印了一张小小的备忘单;

(注意:一切都以Ctrl-A为前缀)

 答:重命名一个窗口   
 “:显示一个窗口列表   
 d:detatch会话 

screen -D -R去附着和重新连接一个正在运行的会话(万一你以某种方式失去了访问你的会话)。

这些都不是真正的隐藏function,但这些是我发现最有用的function。

这是一个核心function,但最好的是Ctrl-A 直接与屏幕对话。 : screen -t title ssh hostname