linux分割图片软件,桌面应用|5 种拆分 Linux 终端的方法

本文介绍了 Linux 提供的拆分终端的方法,它能够帮助你完成多任务工作。那么,你最喜欢哪一款终端复用工具呢?

没有什么问题是不能用一个 Linux 终端解决的,如果不行,那就用两个。

很早以前,终端其实是一个物理设备,而现在的终端实际上是在计算机上被模拟出来的一个应用程序。当你使用终端和计算机进行交互的时候,就会发现,只打开一个终端是不够用的。在进行编译、数据处理等长时间任务的时候,你不得不打开一个新终端或新选项卡tab来同时进行其它工作。

如果你是系统管理员,你就需要更多的终端窗口,以便连接到多个不同的主机上并行工作了。

在 Linux 系统中,终端应用程序在很久之前就已经开始带有选项卡功能了。而现在的终端应用程序里,选项卡已经是标配功能了,这是非常流行的趋势。尽管如此,工作的时候在多个选项卡之间来回切换,或多或少也会分散我们的注意力,甚至带来不便。

而最好的解决方案就是将整个屏幕划分为多个部分,这样多个终端就可以在同一个终端应用程序窗口中同时存在。Linux 发行版中也有很多相关的工具可以实现这一功能。

Shell、终端和控制台

在此之前,我们首先要明确 Shell、终端terminal、控制台console这三个概念。想要详细了解的话,请参阅 Enable Sysadmin 博客上的相关文章。

简而言之:

Shell 是带有命令提示符prompt的用于输入、输出的界面。准确地说,POSIX 桌面底层也运行着一个 Shell,即使这个 Shell 对用户不可见,因为用户会话就是由这个 Shell 启动的。

终端是在图形界面服务器(例如 X11 或 Wayland)中运行的应用程序,其中加载了一个 Shell。只有在终端窗口启动之后,才算是运行了一个终端。终端可以认为是操作 Shell 的一个入口。

控制台(或称“虚拟控制台”)通常表示在桌面环境以外使用的 Shell,你可以通过 Alt+Ctrl+F2 进入控制台,通常情况下从 F3 到 F7 都是不同的控制台,其中桌面环境有可能是 F1 或者 F7,这在不同的发行版中可能会有所不同。

因此,有些应用程序提供的功能是拆分 Shell 或者控制台,有些应用程序的功能则是拆分终端。

tmux

7aef85584a9f33cc3c83cad566f47ea8.png

tmux 可以说是最灵活、最强大的屏幕拆分工具了,它通过键盘控制对多个终端的复用,因此你可以将一个控制台叠放在另一个控制台上面,并在两个控制台之间切换。你还可以将整个屏幕等分为多个控制台,以便同时观察不同控制台上的状况。

tmux 的所有操作都是通过键盘完成的,这就意味着你的手不需要离开键盘去寻找鼠标。为此,你需要记住一些按键组合。

如果你只用 tmux 来做屏幕拆分,那你只需要记住一下这些命令:

Ctrl-B % 竖直拆分屏幕(两个 Shell 分别位于左右)

Ctrl-B " 水平拆分屏幕(两个 Shell 分别位于上下)

Ctrl-B O 切换到另一个 Shell

Ctrl-B ? 查看帮助

Ctrl-B d 断开 tmux 并让其在后台运行(可以使用 tmux attach 重新进入)

tmux 的一大好处是,在一台计算机上启动 tmux 会话之后,也可以从另一台计算机上进入到这个会话,由此可以看出,tmux 对 Shell 进行了守护进程化daemonize。

例如,当我在树莓派上运行 tmux,我就可以从计算机上连接到树莓派并登录 IRC,当我断开连接时,树莓派上的 tmux 会继续运行,并等待我的下一次连接,在此期间 IRC 是处于持续登录状态的。

GNU Screen

7e637cd4ef5614b001b4d1c6cfa41136.png

GNU Screen 也是一个 Shell 复用工具,类似于 tmux,你可以在断开一个活动会话后重连到其中,它也支持竖直或水平拆分屏幕。

screen 的灵活性比 tmux 要弱一些。它默认的绑定按键组合是 Ctrl-A,和 Bash 中光标移动到行首的快捷键是一样的。因此,当你正在运行 screen 的时候,如果想要将光标移动到行首,就需要多按一次 Ctrl-A。而我自己的做法是,在 $HOME/.screenrc 文件中将绑定按键组合重新设置为 Ctrl-J。

escape ^jJ

尽管 screen 在屏幕拆分功能上做得很好,但 tmux 上的一些缺点在 Screen 上也同样存在。例如在拆分 Shell 时,在一个新的面板中不会启动新的 Shell ,而是需要使用 Ctrl-A Tab 导航到另一个面板(如果你按照我的方式重新设置了按键组合,需要对应地把 Ctrl-A 改为 Ctrl-J),然后通过 Ctrl-A C 手动创建一个新的 Shell。

和 tmux 不同的是,screen 在退出一个 Shell 的时候,屏幕拆分状态不会改变,这样的设计在某些情况下是比较适合的,但麻烦之处在于需要手动管理屏幕拆分状态。

尽管如此,screen 还是一个相当可靠灵活的应用程序,在无法使用 tmux 的时候,你可以选择 screen 作为备选方案。

在默认按键方案下,screen 常用的基本命令包括:

Ctrl-A | 竖直拆分屏幕(两个 Shell 分别位于左右)

Ctrl-A S 水平拆分屏幕(两个 Shell 分别位于上下)

Ctrl-A Tab 切换到另一个 Shell

Ctrl-A ? 查看帮助

Ctrl-A d 断开 screen 并让其在后台运行(可以使用 screen -r 重新进入)

Konsole

54c3d9b5ef418221fdaea37396e7f817.png

Konsole 是 KDE Plasma 桌面使用的终端应用程序。和 KDE 一样,Konsole 也以高度可定制、功能强大的特点而著称。

和 tmux、GNU Screen 类似,Konsole 也具有拆分屏幕的功能。由于 Konsole 是图形界面的终端,因此还可以用鼠标来控制它的屏幕拆分。

Konsole 的屏幕拆分功能在“查看View”菜单中。它也支持竖直和水平方向的拆分,只要点击鼠标就可以切换到另一个面板上。每个面板都是一个独立的终端,因此都可以拥有独立的主题和标签页。

Konsole 和 tmux、GNU Screen 最大的不同之处在于不能断开和重新连接 Konsole。除非使用远程桌面软件,否则只能在打开 Konsole 时使用,这一点和大多数图形界面应用程序是一样的。

Emacs

cd98202198813e349e512d1ffaa2a1f5.png

严格来说,Emacs 并不算是一个终端复用工具,但它的使用界面支持拆分和调整大小,同时还带有一个内建的终端。

如果 Emacs 是你日常使用的文本编辑器,你就可以在不关闭编辑器的情况下,在不同的应用程序之间轻松互相切换。由于 Emacs eshell 模块是通过 eLISP 实现的,因此你可以在 Emacs 中使用相同的命令进行交互,让一些繁琐的操作变得更为简单。

如果你是在图形界面中使用 Emacs,还可以使用鼠标进行操作。例如通过点击切换面板、用鼠标调整拆分屏幕的的大小等等。尽管如此,键盘的操作速度还是更快,因此记住一些键盘快捷键还是很有必要的。

Emacs 的一些重要快捷键包括:

Ctrl-X 3 竖直拆分屏幕(两个 Shell 分别位于左右)

Ctrl-X 2 水平拆分屏幕(两个 Shell 分别位于上下)

Ctrl-X O (大写字母 O)切换到另一个 Shell(你也可以使用鼠标操作)

Ctrl-X 0 (数字 0)关闭当前面板

如果你运行了 emacs-client 的话,就可以像 tmux 和 GNU Screen 一样断开和重新连接到 Emacs 了。

窗口管理器

d29ffc73e7c7c014a233bddecb829684.png

除了文本编辑器之外,一些 Linux 桌面也同样具有拆分屏幕、加载终端这样的功能。例如 Ratpoison、Herbsluftwm、i3、Awesome,甚至是启用了特定设置的 KDE Plasma 桌面,都可以将多个应用程序在桌面上分块显示。

这些桌面可以让各个应用程序占据屏幕的固定位置,而不是浮在你的桌面“之上”,因此你可以在多个应用程序窗口之间轻松切换。你还可以打开多个终端,排布成网格,就像终端复用工具一样。更进一步,你还可以在你的桌面复用工具中加载一个终端复用工具。

而且,没有什么可以阻止你在里面载入 Emacs 并分割缓冲区。没有人知道,如果你把它更进一步,会发生什么,大多数 Linux 用户不会外传这种秘密。

和 tmux、GNU Screen 不同,你在断开与桌面的连接后无法重新连接到同一个桌面会话,除非你使用了远程桌面软件进行连接。

更多选择

除了上面介绍到的工具以外,还有诸如 Tilix、Terminator 这样的终端模拟器,它们同样可以实现屏幕拆分、嵌入终端组件等功能。欢迎在评论区分享你喜欢的终端拆分工具。

本文由 LCTT 原创编译,Linux中国 荣誉推出 linisi.svg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[剑指offer][JAVA][面试题56 - I][第260题][位运算][HashSet]

【问题描述】 [面试题56 - I] [数组中数字出现的次数] 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums [4,1,4,6] …

mongo:(3)windows上mongoDB安装

1打开程序 2下一步 3下一步 4custom自定义 5取消勾选,安装 6安装完成以后 在bin目录下建文件夹 7创建结束,将mongo.conf放在根目录下 8管理员运行 Cd D:\Program Files\MongoDB\Server\3.6\bin 然后 9 >mongod --config D:\mongo\mongo.conf --i…

LOJ10121 与众不同

题目描述 A 是某公司的 CEO,每个月都会有员工把公司的盈利数据送给 A,A 是个与众不同的怪人,A 不注重盈利还是亏本,而是喜欢研究「完美序列」:一段连续的序列满足序列中的数互不相同。 A 想知道区间 [L,R] 之间最长的完…

[计算机网络][总结][常见问题][TCP][三次握手][四次挥手]

TCP三次握手 四次挥手 三次握手 目的:保证传输的可靠性,为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。主要防止资源的浪费。 具体过程:当客户端发出第一个连接请求报文段时并没有丢失,而是在某个网络节点…

第二十二期:淘宝技术架构分享

一,淘宝技术架构 1.UIC: 用户中心(User Interface Center),提供所有用户信息相关的读写服务,如基本信息,扩展信息,社区信息,买卖家信用等级等等。 淘宝现在有两类卖家B 和C,这是通过在用户身上打不同的标签…

Linux启动过程以及初始化

Linux系统启动 POST加电自检–> 硬件检查 引导加载程序BIOS(Boot Sequence)–> 找到主引导记录(MBR),引导加载程序检查分区表并找到一个可引导的分区 加载对应引导上的MBR(bootloader)–> 引导加载程序将所选操作系统的内核加…

Deep learning with Python 学习笔记(9)

神经网络模型的优化 使用 Keras 回调函数 使用 model.fit()或 model.fit_generator() 在一个大型数据集上启动数十轮的训练,有点类似于扔一架纸飞机,一开始给它一点推力,之后你便再也无法控制其飞行轨迹或着陆点。如果想要避免不好的结果&…

linux c 读取摄像头,Linux下onvif客户端获取ipc摄像头 获取能力:GetCapabilities

getcapabilities:获取能力,主要目的获取设备能力信息(获取媒体服务地址)鉴权:但是在调用获取设备能力之前是需要鉴权的。onvif协议规定,部分接口需要鉴权,部分接口不需要鉴权,在调用需要鉴权的接口时不使用鉴权,会导致…

[计算机网络][HTTP]

定义 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协 议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由 统一资…

8次c语言上机作业答案,计算机二级C语言上机题库及答案2017

计算机二级C语言上机题库及答案2017引导语:我们将要迎来2017年9月份的计算机考试,大家准备好了吗,以下是百分网小编分享给大家的计算机二级C语言上机题库及答案2017,欢迎测试!一、填空题给定程序中已建立一个带有头结点的单向链表…

Swagger Learing - Spring Boot 整合swagger

学习了一下swagger。 这是编写的Demo 源码 https://github.com/AmberBar/Learning/tree/master/swagger-learning/swagger 需要的小伙伴可以clone直接运行 访问地址 http://localhost:9999/swagger-ui.html#/ 转载于:https://www.cnblogs.com/amberbar/p/10308256.html

[Leedcode][JAVA][第202题][快乐数]

【问题描述】 编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为…

Java类加载机制的理解

算上大学,尽管接触Java已经有4年时间并对基本的API算得上熟练应用,但是依旧觉得自己对于Java的特性依然是一知半解。要成为优秀的Java开发人员,需要深入了解Java平台的工作方式,其中类加载机制和JVM字节码这样的核心特性。今天我将…

[剑指offer]面试题第[48]题[Leetcode][JAVA][第3题][无重复字符的最长字串][滑动窗口][HashSet/Map]

【问题描述】[第3题][无重复字符的最长字串] 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2:输入: "bb…

java学习(172): 使用class实现反射编程,创建对象

//class反射编程 //定义一个学生类 public class test124 {public String name;protected int age;double height;private double money;public test124(String name,Integer age){this.namename;this.ageage;}public test124(String name,int age,double money){this.namename…

关于mysql中GROUP_CONCAT函数的使用

偶然看到公司存储过程中有个字符串拼接的函数,改bug过程中使用到了,还挺有用的,于是记录下来方便记忆,帮助有需要的人。 这是我需要整理的串,他是调用了一个存储过程,传入组织机构的id和迭代层数&#xff0…

java学习(173):class反射编程方法

//class反射编程 //定义一个学生类 public class test124 {public String name;protected int age;double height;private double money;public test124(String name,Integer age){this.namename;this.ageage;}public test124(String name,int age,double money){this.namename…

[剑指offer]面试题第[25]题[Leedcode][JAVA][第21题][合并两个有序链表]

【问题描述】[简单] 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4【解答思路】 1. 非递归 时间复杂度&…

Windos下navcat连接虚拟机中的mysql

进入mysql命令行, 使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:  # mysql -u root -proot   mysql>GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY youpassword WITH GRAN…

第二十三期:大规模网站架构?你是否熟悉?

大规模网站架构 •PHP –facebook,yahoo •Java –taobao,163 •Python –google •.NET –MySpace 语言不是可伸缩性的关键,架构才是关键 网站架构的目标 •高可用性(High Availability) •可伸缩性(Scalability) •高性能(High Performance) 事务 …