当前位置: 首页 > 后端技术 > PHP

优雅地使用命令行:Tmux终端多路复用

时间:2023-03-29 23:37:10 PHP

WhatisTmux你开过很多Terminal吗?有没有想把他们都救出来的冲动?Tmux的Session就是这样做的!您可以随时退出或进入任何会话。每个Session有几个Window,每个Window又可以分为多个窗格(Pane)。极大地满足了终端用户的需求。另外,如果Terminal意外关闭也没关系,因为Session是完全保存在TmuxServer中的。当您再次打开终端时,只要$tmuxattach就会返回到您的工作区,就好像您从未退出过一样。同时,Tmux还支持“远程协助”。本来在服务器里,大家ssh起来之后,就互相操作,互不干扰。如果进入同一个TmuxSession,大家看到的是同一个画面,你可以看到别人,别人也可以看到你的操作,你的操作也会相互影响。一般当服务器出现问题,需要协助时,就可以使用大师的这种实时“直播”操作。分享一下我的Tmux配置,因为是一家没有运维的小公司。作为后端,难免要承担一部分运维工作。好在我对Linux的操作比较熟悉,所以写了一个Tmux的配置供自己使用。它可能不适合所有人,但我个人使用它确实很好。配置的快捷键是基于Emacs的快捷键操作(Emacs绝对是最好的编辑器,哈哈哈)###########################DESIGN更改##########################set-gbell-actionanyset-gterminal-overrides'rxvt-unicode*:sitm@,ritm@'set-gdefault-terminal"screen-256color"取消绑定C-bset-gdefault-shell/bin/bashset-gprefixC-xset-gstatus-keysemacsset-gwmode-keysemacsset-option-gdefault-command"whichreattach-to-user-namespace>/dev/null&&reattach-to-user-namespace-l$SHELL||$SHELL"#bind-key-temacs-copyM-wcopy-pipe'reattach-to-user-namespacepbcopy'bind-key-nC-ypaste-bufferbind-keyC-xsend-prefixset-option-ghistory-limit30000bindrsource-file~/.tmux.conf\;显示消息“正在重新加载tmux配置...”bind-key-nrC-M-Presize-pane-U5bind-key-nrC-M-Nresize-pane-D5bind-key-nrC-M-Fresize-pane-R5bind-key-nrC-M-Bresize-pane-L5bind-key-nM-pselect-pane-Ubind-key-nM-nselect-pane-Dbind-key-nrM-o显示面板绑定键2split-windowbind-key3split-window-hbind-key-nrM-,previous-windowbind-key-nrM-。next-window#从1开始窗口索引而不是zeroset-option-gbase-index1set-window-option-gpane-base-index1#enablewmwindowtitlesset-gset-titleson#wmwindowtitlestring(uses状态栏变量)set-gset-titles-string"tmux:#I#W"#sessioninitializationset-g@tpm_plugins"\tmux-plugins/tpm\tmux-plugins/tmux-sensible\"set-g@tpm_plugins"\tmux-plugins/tpm\tmux-plugins/tmux-copycat\"#set-g@plugin'jimeh/tmux-themepack'#set-g@themepack'powerline/default/gray'#set-g@plugin'seebi/tmux-colors-solarized'#set-g@colors-solarized'dark'#启用wm窗口标题set-gset-titleson#wm窗口标题字符串(使用状态栏变量)set-gset-titles-string"tmux:#I#W"#默认术语类型。如果rcfile设置$TERM,则覆盖此值。set-gdefault-terminalscreen-256colorset-gstatus-left-length52set-gstatus-right-length451set-gstatus-fgwhiteset-gstatus-bgcolour234set-gpane-border-fgcolour245set-gpane-active-border-fgcolour39set-gmessage-fgcolour16set-gmessage-bgcolour221set-gmessage-attrboldset-gstatus-left'#[fg=colour235,bg=colour252,bold]?#S#[fg=colour252,bg=colour238,nobold]#[fg=colour245,bg=colour238,bold]#(whoami)#[fg=colour238,bg=colour234,nobold]'set-gwindow-status-current-format"#[fg=colour234,bg=colour39]#[fg=black,bg=colour39,noreverse,bold]#I:#W#[fg=colour39,bg=colour234,nobold]"set-sgescape-time0将此配置写入~/.tmux.conf文件,然后$pkilltmux&&tmux就可以了。Tmux快捷键我主要是把Tmux的Ctrl+b换成了Emacs的Ctrl+x,其他的快捷键没怎么修改,增加了一些Emacs上常用的快捷键,说几个常用的快捷键,剩下的可以看配置文件ps:ctrl+x是先按ctrl,再按x,不是按住,ctrl-alt是按住//pane操作ctrl+x2//上下分屏ctrl+x3//左右分屏ctrl+xx//删除当前panectrl+xo//pane切换alt+n//下一个panealt+p//上一个panectrl-altp//当前pane上移ctrl-altn//当前pane下移ctrl-altf//将当前窗格向右移动ctrl-altb//将当前窗格向左移动ctrl+xspace//切换窗格布局//窗口操作ctrl+xc//新建窗口ctrl+xn//Nextwindowctrl+xp//上一个windowctrl+xw//显示窗口列表//session操作ctrl+xs//显示session列表ctrl+xd//优雅退出tmux(保留session)总结tmux的应用有很多,比如运行服务有时候我不需要$nohup/root/test_srv&......我总是太忙,没有太多时间写。今天终于有时间写点东西了。这仅仅是个开始。有时间我会写我和大家分享我这些年开发和使用的一些东西。总觉得后端应该拥抱Linux。纯键盘+命令行操作的效率实在是太高了。