工具控 Terminal + Screen + ...

1272729223 · 发布于 2016年05月29日 · 最后由 msg7086 回复于 2016年06月16日 · 2170 次阅读
2909

打开您的Terminal。也可以control + command + f最大化,当然这仅是个人喜好而已。

输入screen命令:

you@yourMacBook: screen

这时候,会出现一个界面,你按照底部的提示,按return键(也叫enter键)就可以了。进来之后,就可以开始你的工作了。

当然,可能你需要一个窗口实时看服务器log,然后一个窗口操作数据库,然后一个窗口写代码,或许还要一个窗口敲git等其他命令行。

这样至少需要3-4个窗口,这时,你可以先按组合键control + a(记得是先按住ctrl键再按a键,然后同时松开),之后再按c键,这将会为你新建一个新的session。重复这个动作,直到你创建了足够的窗口(sessions),在这里算上敲命令行的窗口一起是4个。

如果你只是照做的话,现在你正处在session 3session 4。为了统一场景,我们在接下去的下文中都假设你是启用了4个session。

不过这时候,你看不到你的session所处的位置,因为他们都在背后运行。 不过暂时继续跟着我做下一步,晚点再告诉你如何查看你的当前session位置。

插入一句,我们开始约定好<C + a>代表control + a组合键。

继续按<C + a>组合键,然后按shift + a(也就是大写A),这时你会在底部看到一行文字,仅仅照做吧。对的,它是让你给当前的session起一个title,作为练习,我们这里统一起qux(聪明的人应该会知道我为什么在这里输入的是qux,而不是foo了?)。输入完qux之后,接着按return键。

接下去我们继续为其他的session起名字。先按<C + a>,再按0。如你所料,这时候你进入了session 0。然后按照上面的教程,你继续给它起title,这时候应该是起foo了(当然,这不是强制的,你现在当然可以自己想怎么起就怎么起)。重复这个动作,给session 1, session 2, session 3都起好名字。当然,别忘了,在<C + a>组合键之后,输入的不再是0, 而是1, 2, 3,这你总知道吧?

好了,是时候揭晓如何查看你当前所在session的位置了。 按<C + a>然后按"(在键盘上你需要按的是shift + ")。看到了吧? 0 foo,1 bar,2 baz,以及你最先起的3 qux4个sessions。然后你可以按j,k键(这对于熟悉vim的人而言是再欢喜不过了)上下选择你需要选择的session,然后按return键进入。最后提醒一下,别忘了,查看session就按<C + a>组合键再按"。不过,你也可以自己试试<C + a>+w,<C + a> + n(next), <C + a> + p(prev)。

这个时候,我想听点音乐。没关系,我只是按一下<C + a>然后c新建一个session,然后输入cmus打开我的播放器,选择bon jovi的keep the faith按return就开始听音乐了。然后继续切回到我工作的session去。

继续告诉你一个小技巧,试试看按<C + a> + x。天啦,我还可以创建一个密码,锁定我的sessions。这对于我工作区域的保护及隐私而言真是太棒了!

当然也许有人还可以使用control + z键,让screen运行在后台。比如:对于project 1我使用了screen来协助我管理sessions,对于project 2我也用screen协助。然后从project 1project 2,就通过control + z键来前后切换。

如果你已经兴奋的按了control + z的话,我就不得不继续再说一下,如何让你从这不知所措的慌乱中解脱出来(你的音乐还在播放,而你的工作也都保存着,可是你无法进入到之前的sessions了,OMG)。

试试在命令行中输入jobs吧,这时候你应该可以看到你的screen程序正在后台运行,并且应该会看到带有一个[1]符号。对的,这时候你可以输入fg 1回到喜悦中来吧。当然如果仅仅是按照上面的教程来做的话,你直接输入fgreturn就可以,因为你最近的后台运行程序就是它。

差不多了,我想出去玩了,现在你可以继续自己练习几遍。在使用screen的时候遇到问题你就按<C + a>然后按?(确保你当前已经进入screen中)。当然这只是使用screen来协助你工作而已,事实上,有的人仅仅是用fg, bgnohup, &等也能较好的协调好多个sessions。

谢谢,希望对你有些许帮助。

共收到 25 条回复
23216

不错,以前一直记不住这命令,原来把 <C + a> 当组合键,后面的就简单了。

另外文中的 control + z 应该是 <C + a> + z 吧。

2楼 已删除
2909

#1楼 @ntycontrol + z你试试。

23216

#3楼 @1272729223 我用的是 iTerm + zsh 估计不一样。

15139

为什么不用更好的,而要坚持用screen呢?

20

#2楼 @rocLv +1, iTerm + Tmux + Tmuxinator

2909

#4楼 @nty 这个不太清楚,也许。你搜索一下fg,bg的命令,也许在zsh下面有适配的。

2909

#5楼 @msg7086 哪个更好?

15139

#8楼 @1272729223 tmux 或者直接上 byobu。 上文提到的 Tmuxinator 也不错,不过和 byobu 用途有点不太一样。

96

这是翻译的文章?如果是原创的话翻译腔也太重了,看着好难受…

96

不是很能理解为什么不用 attach/detach/reattach 来管理 screen session 而要用 fg/bg?把事情复杂化了。

2909

#9楼 @msg7086 嗯,没有用过byobu, tmuxinator. 但是对于我个人(也许还有某些人)而言screen(因为Mac OS内置)就足够了,我不用iTerm2的原因也是我不知道它的优势在哪里? 或者说它的优势我用不着。 所以就不喜欢再装一个APP。

#10楼 @sinxccc 原创,只是那天心血来潮,写了一下使用的感受。至于attach, detach/reattach我不太用,而我现在更多使用的是fg/bg。(几乎不用tmux或screen了)

现在更多的是Tab,因为我发现screen或者tmux在某些情况下还是有些问题,比如翻滚历史记录时不能滚动屏幕等。

96

#12楼 @1272729223 说得直白一点,自己都一知半解的情况下就不要尝试给别人写教程…

screen 滚动屏幕需要进入 copy mode

2909

#13楼 @sinxccc 嗯,说是教程确实是有点为过。我也只是当作一个小工具用用而已,算是之前的一点使用经验。

15139

#12楼 @1272729223 比如你这堆session,要用Ctrl-A快捷键搞半天,开byobu的话直接绑定在Fx快捷键上,F2 F3 F4直接就可以切换。 我这边另外绑定了切分窗口的快捷键,用F10 F11 F12切换。 Ctrl-Z+BG/FG就更诡异了,软件自己的detach/attach不用去用jobs何必呢。 byobu里F6就可以断开一组窗口,然后马上就可以attach到另一组窗口了。 至于查阅历史记录,byobu里F7就可以进入 copy mode。screen也有自己的copy mode,快捷键我就不帮你查了。

所以我一开始就说了,为什么不用个好点的工具而要逼着自己去用困难模式的screen。

15139

输入byobu命令:

you@yourLinuxServer: byobu

当然,可能你需要一个窗口实时看服务器log,然后一个窗口操作数据库,然后一个窗口写代码,或许还要一个窗口敲git等其他命令行。

这样至少需要3-4个窗口,这时,你可以按F2键,这将会为你新建一个新的session。重复这个动作,直到你创建了足够的窗口(sessions),在这里算上敲命令行的窗口一起是4个。

如果你只是照做的话,现在你正处在session 3或session 4。为了统一场景,我们在接下去的下文中都假设你是启用了4个session。

不过这时候,你看不到你的session所处的位置,因为他们都在背后运行。 不过暂时继续跟着我做下一步,晚点再告诉你如何查看你的当前session位置。

怎么会看不到你的session所处的位置呢?他们就在最下方的状态栏里了。

按F8,这时你会在底部看到一行文字,仅仅照做吧。对的,它是让你给当前的session起一个title,作为练习,我们这里统一起qux(聪明的人应该会知道我为什么在这里输入的是qux,而不是foo了?)。输入完qux之后,接着按return键。

接下去我们继续为其他的session起名字。按F4,这时候你进入了session 0。然后按照上面的教程,你继续给它起title,这时候应该是起foo了(当然,这不是强制的,你现在当然可以自己想怎么起就怎么起)。重复这个动作,给session 1, session 2, session 3都起好名字。当然,别忘了,F3向左切换,F4向右切换。而且就算你不起名字,byobu也会智能地把你运行的程序名字填在里面,哪需要这么麻烦手动改名。

这个时候,我想听点音乐。没关系,我只是按一下F2新建一个session,然后输入cmus打开我的播放器,选择bon jovi的keep the faith按return就开始听音乐了。然后继续切回到我工作的session去。

继续告诉你一个小技巧,试试看按 + x。天啦,我还可以创建一个密码,锁定我的sessions。这对于我工作区域的保护及隐私而言真是太棒了!

要保护工作区域和隐私,请善用操作系统自己的锁定。

当然还可以用F6,让byobu运行在后台。比如:对于project 1我使用了byobu来协助我管理sessions,对于project 2我也用byobu协助。然后从project 1到project 2,就通过F6然后再运行byobu来前后切换。至于怎么创建一个新的窗口组?byobu new

至于回滚历史记录,请用F7然后就可以PgUp/PgDn/g/G/h/j/k/l/q了,还可以用/?来搜索。

谢谢,希望对你有些许帮助。

Demo 分屏功能

$ cat .byobu/keybindings.tmux 
unbind-key -n C-a
set -g prefix ^A
set -g prefix2 ^A
bind a send-prefix
bind-key -n F10 display-panes \; split-window -h
bind-key -n F11 display-panes \; select-pane -t :.-
bind-key -n F12 display-panes \; select-pane -t :.+
1674

觉得screen还是熟悉一下会比较好,其他工具虽然好用,但是都是需要安装+设置,如果你要ssh到一个server上,需要多开进行debug啥的,server上啥都没有,screen就比较方便了。

2909

#17楼 @bigpig85 是的,工具用来用去,还是感觉默认有的好,连配置都是默认的好。

2909

#17楼 @bigpig85 或许你说的这种场景才真是screen的用武之地,然而本地,Tab真的足以。

96

如果你用烦了,

command & 

或者

nohup command 1>/dev/null 2>&1

想直接起个command, 然后可以随时断开ssh, 随时可以切回去看起运行状态,你才知道screen的好。 然而整篇文章居然没提 screen -r,没有提到 ctrl + a, d, 我不认为你理解了其精髓。

普及screen命令是好事!

96

另外, 我常用Terminal跟同事share 屏幕, Just screen it!

2909

#20楼 @boyishwei 赞叹。我现在也是就用TerminalTab,偶尔会用一下nohup。 对于screen,有些可能高效的方式我没有掌握,比如attach等。我写的一点东西也是那天下午某个场景下又用了下screen,也是一点缘分。

其实对于我个人而言,就我个人而言,不管是工具,还是语言等,只是希望往精和专的方向去沉淀,不再想往广和博的方向去折腾了。

96

#22楼 @1272729223 哈, 对的, 我也喜欢专精!同时也喜欢博大!😀

2880

#16楼 @msg7086

不过这些功能 iTerm 都有...

iTerm 可以开多个 tab, 而且新开 tab 会转到之前 tab 的目录 可以分屏 可以定义 profile 设置一系列初始化命令, 例如连水木bbs用 gb2312 编码并输入用户名密码 有命令给 tab 设置 title, 颜色和图标 cmd + option + b 可以查看历史屏幕快照

iTerm 还能显示图片 cmd 点击出错栈可以打开编辑器并转到对应行, cmd 点击链接可以打开浏览器 可以添加 trigger 监控屏幕是否输出匹配正则的字符串, 然后触发 action 例如发 notification 可以复制带颜色的屏幕输出

15139

#24楼 @luikore 看了眼,iTerm是macOS上的。 另外,用tmux有一个很大的用途是共享屏幕。公司电脑上操作到一半的活,回家了可以继续干。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册