计算机@linux_python_R 技术帖

tmux : 你的终端也可以很酷

2020-06-15  本文已影响0人  周运来就是我

经常看大佬喝着咖啡对着几个屏幕,看着每个屏幕几个窗口都在自动地滚动着不同的图案。是不是瞬间软化了?你是不是也想像大佬那样酷呢?试试tmux 吧。
https://github.com/tmux/tmux/wiki

tmux 简介

tmux 是一个终端复用器,你可以在一个屏幕上管理多个终端。使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机。是BSD实现的Screen替代品,相对于Screen,它更加先进:支持屏幕切分,而且具备丰富的命令行参数,使其可以灵活、动态的进行各种布局和操作。

tmux - a very simple beginner's guide

Tmux的使用场景

基本功能

背完了快捷键我们来看管理tmux的关键:window与pane1:

这俩概念要注意区分,因为我们往往就是知道window,其实也可以像理解vim的窗口那样理解,vim也是可以分面的嘛。

mux uses windows and panes.

tmux模型下翻屏(翻页):

1)进入tmux面板后,一定要先按ctrl+b,然后松开,再按其他的组合键才生效。
 
2)常用到的几个组合键:
ctrl+b ?            显示快捷键帮助
ctrl+b 空格键       采用下一个内置布局,这个很有意思,在多屏时,用这个就会将多有屏幕竖着展示
ctrl+b !            把当前窗口变为新窗口
ctrl+b  "           模向分隔窗口
ctrl+b %            纵向分隔窗口
ctrl+b q            显示分隔窗口的编号
ctrl+b o            跳到下一个分隔窗口。多屏之间的切换
ctrl+b 上下键      上一个及下一个分隔窗口
ctrl+b C-方向键    调整分隔窗口大小
ctrl+b &           确认后退出当前tmux
ctrl+b [           复制模式,即将当前屏幕移到上一个的位置上,其他所有窗口都向前移动一个。
ctrl+b c           创建新窗口
ctrl+b n           选择下一个窗口
ctrl+b l           最后使用的窗口
ctrl+b p           选择前一个窗口
ctrl+b w           以菜单方式显示及选择窗口
ctrl+b s           以菜单方式显示和选择会话。这个常用到,可以选择进入哪个tmux
ctrl+b t           显示时钟。然后按enter键后就会恢复到shell终端状态
ctrl+b d           脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话

##############  切换window

在同一个会话的多个窗口之间可以通过如下快捷键进行切换:

ctrl+b p           (previous的首字母) 切换到上一个window。

ctrl+b n         (next的首字母) 切换到下一个window。

ctrl+b 0         切换到0号window,依次类推,可换成任意窗口序号

ctrl+b w         (windows的首字母) 列出当前session所有window,通过上、下键切换窗口

ctrl+b l       (字母L的小写)相邻的window切换

ctrl+b &     关闭当前window,会给出提示是否关闭当前窗口,按下y确认即可。当然,如果当前窗口的最后一个程序被exit掉后,窗口也会直接关闭。



############## 切换pane

ctrl+b o           依次切换当前窗口下的各个pane。

ctrl+b Up|Down|Left|Right      根据按箭方向选择切换到某个pane。

ctrl+b Space (空格键)      对当前窗口下的所有pane重新排列布局,每按一次,换一种样式。

ctrl+b z 最大化当前pane。  再按一次后恢复。



C-b pageup/pagedown
退出
C-b   q
tmux的远程批量操作的shell脚本

在使用SSH或telnet远程连接服务器时,可能都遇到为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为他们执行的时间太长了。必须等待它执行完毕,在此期间可不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。也许nohup命令可以达到这个目的,如果程序的标准输出/标准错误是终端, nohup默认将其重定向到nohup.out文件。值得注意的是nohup命令只是使得程序忽略SIGHUP信号,还需要使用标记&把它放在后台运行。

使用tmux打开一个终端窗口,可以在窗口里执行一个长时间运行的交互式命令操作,令其一直在后台跑着,并且在按键ctrl-b-d后,可以无感知的退出窗口,
而退出后窗口不会关闭,即窗口里执行的交互命令也不会结束。这比起传统的"nohup commang & (然后按ctrl+c)"的方式要还用很多。

如何在linux终端里创建一个tmux窗口的同时直接在窗口终端里执行命令呢?
这就需要用到:

tmux send -t session_name "command" ENTER!!!

tmux的厉害之处还在与它支持批量的管理你的任务,在创建窗口的同时,可以同时在窗口终端里连续执行两个或多个命令,而不必每个窗口只执行一个任务的命令了。

tmux中的最重要的三个概念:会话,窗口,pane的使用方法涵盖了它的基本框架,足以应付大多数工作。另外tmux还有一些高级用法,例如可以个性化的配置其组合键(官方默认的ctrl+b组合键按起来不太方便可以修改,UI设置,鼠标支持,复制粘贴等)。

Tmux 使用教程
Tmux常用快捷键以及我会常到的一些问题汇总
Ubuntu Tmux 启用鼠标滚动
Tmux(-yank,-cssh,-xpanes)使用指南
tmux:打造精致与实用并存的终端
Linux终端复用神器-Tmux使用梳理
https://danielmiessler.com/study/tmux/
https://www.howtogeek.com/671422/how-to-use-tmux-on-linux-and-why-its-better-than-screen/
ssh的最佳伴侣-tmux

上一篇 下一篇

猜你喜欢

热点阅读