了解Linux虚拟终端包,提高你的工作效率 (linux 虚拟终端包)

随着计算机科技的不断进步和发展,操作系统也在不断地更新迭代。其中,Linux 操作系统以其稳定、开放和安全的特点备受关注。在 Linux 中,虚拟终端是一项非常强大且实用的功能,可以让用户同时操作多个终端,提高工作效率。了解 Linux 虚拟终端包的使用方法,可以让你更好地利用 Linux 操作系统,提升你的工作效率。

一、什么是 Linux 虚拟终端包

Linux 虚拟终端包是指系统内置的一组虚拟终端工具,它可以让用户在同一窗口内操作多个 shell 终端,极大地提高了用户的工作效率。虚拟终端是 Linux 操作系统自带的功能,它类似于 Windows 操作系统中的 tab 窗口,可以让用户通过切换虚拟终端快速地在各个终端之间进行操作。

在 Linux 操作系统中,默认情况下有 6 个虚拟终端,用户可以在 GDM 登录窗口中使用 Ctrl + Alt + F1 到 Ctrl + Alt + F6 快捷键切换到不同的虚拟终端中。此外,用户也可以在进入系统后通过使用 tty 命令来切换。

二、如何使用 Linux 虚拟终端包

在 Linux 中,用户可以使用以下简单的命令快速地实现虚拟终端的功能:

1. tty 命令:该命令可以显示当前所在的终端设备名称,也可以通过 tty+数字 的形式切换到对应的虚拟终端。例如,输入 tty3 命令会切换到第三个虚拟终端。

2. Ctrl + Alt + F1 到 Ctrl + Alt + F6:该快捷键可以在 GDM 登录窗口中切换到对应的虚拟终端,也可以在系统内部中按下快捷键切换到其他的虚拟终端。

使用虚拟终端的好处在于可以让用户同时打开多个 shell 终端,这样就可以在一个终端上执行一个任务,而在另一个终端中查看任务的结果,从而大大提高了工作效率。

三、如何设置 Linux 虚拟终端包

Linux 虚拟终端包的使用需要用户先行设置。具体方法如下:

1. 在使用虚拟终端之前,需要先进入 tty1 终端,也就是按下 Ctrl + Alt + F1 快捷键,然后进行登录。

2. 修改 /etc/profile 文件,将默认打开终端的数量从 6 改为想要的数量。例如,设置为 10,需要在 /etc/profile 文件中添加下面的内容:

for i in {1..10}

do

/usr/bin/x-terminal-emulator &

done

3. 重启系统,这样就可以打开指定数量的虚拟终端。

四、如何使用 Linux 虚拟终端

1. 切换虚拟终端:可以使用 tty 命令或者 Ctrl + Alt + F1 到 Ctrl + Alt + F6 快捷键进行切换。

2. 关闭虚拟终端:可以使用 exit 命令或者 Ctrl + D 快捷键来关闭虚拟终端。

3. 列出所有的虚拟终端:可以使用 Ctrl + Alt + F7 快捷键来列出所有的虚拟终端。

4. 复制和粘贴文本:在虚拟终端中可以使用鼠标中键进行复制和粘贴操作。

五、使用 Linux 虚拟终端的技巧

1. 快速切换虚拟终端:可以使用 Alt + 方向键 进行快速切换虚拟终端。例如,按下 Alt + ← 就可以切换到上一个虚拟终端。

2. 同时在多个虚拟终端中执行命令:在一个虚拟终端中输入命令,然后在另一个虚拟终端中使用 fg 命令将该命令挂起,并在后台执行。

3. 使用 screen 命令:screen 命令可以让用户在一个虚拟终端中同时执行多个屏幕会话,从而避免打开多个虚拟终端窗口的麻烦。

4. 使用 tmux 命令:tmux 命令是一个更加强大的终端多路复用器,可以让用户在不同的窗格中同时操作多个 shell。

Linux 虚拟终端包是 Linux 操作系统中的一项非常实用的功能,可以让用户在一个窗口中同时操作多个虚拟终端,从而大大提高工作效率。掌握虚拟终端的使用方法和技巧,可以让你更好地利用 Linux 操作系统,提升你的工作效率。

相关问题拓展阅读:

如何改造 Linux 虚拟终端显示文字

要想控制台能支持汉字显示,需要解决 3 个问题:

  必须使用 UTF-8 模式 ( 默认 vc->utf=1 即可 )

  虚拟控制台的 vc_screenbuf 必须修改以为 glyph 提供至少 16bit 的空间。

  图形控制台需要 vc_font包含更多的字符,不只是 255 个,并提供代码绘制宽搭双倍宽度的中文字形,字体中的字符按照 UNICODE

排列,这样 glyph 就是字符的 UNICODE 编码。

  修改虚拟控制台

  一开始,我的打算是 vc_screenbuf 修改为 unsigned long long* 类型,32bit 给字符属性,分别表示 16bit

终端前景色和背景色。glyph 则拥有 31bit 的空间 , 因为汉字的宽度为双倍的英文字母 ,其中 1 bit 用来表示双字符宽度。比慎并拿如 ‘我’ 会表达为

两个 ‘我’,第二个’我’的更高位为 1:绘制任何字形的时候,只绘制字形的左半部分;如果发现更高位为 1

则绘制字图中的右半部分。这样同样的绘制代码可以适应英文字母和汉字。写入 vc_screenbuf 的时候,

如果是双倍宽度的字符,需要同时写入两份,第二份的更高位置 1 就可以。但是 vc_screenbuf

的格式已经被到处假定为每字符两个字节。如此修改导致牵一发动全身。许多艰涩难懂的代码都依赖 vc_screenbuf 是

每字符两个字节的设定,直接修改定义后,光是编译器能直接检测出来的就有百余个地方需要修改,还有更多的逻辑并不能被编译器检测出来。如此修改的后果就是会出现许多隐晦的错误,非常难于调式。挣扎后,为最终选择了另一条道路

:

  为汉字重新分配一块 vc_unicode_screenbuf

  vc_unicode_screenbuf 紧挨着 vc_screenbuf , 事实上 vc_screenbuf

在分配空间的时候,多分配了一倍的空间,多分配的空间充作 vc_unicode_screenbuf,因此 struct vc_data 里并没有添加

vc_unicode_screenbuf 成员。 vc_unicode_screenbuf 同样为每字符 2 个字节,并不包含字符属性,所以 2

个字节如数用来保存 glyph。vc_screenbuf 格式未变,所以 vgacon 不需要修改,这就减少了大量的工作量。向 vc_screenbuf

写入字符的时候,同时写入一份到 vc_unicode_screenbuf 。如果蔽谨是汉字,由于其 glyph 大于 254 , 所以 vc_screenbuf

的那两个字符 ( 汉字双倍宽度 ) 实际写入的是 0xff 和 0xfe ( 故而上文提到是 glyph 大于 254 的字符 ,0xfe 被保留它用了

)。0xff 表示该字符的 glyph 要到 vc_unicode_screenbuf 提取,然后绘制左半部分;0xfe 表示该字符的 glyph 要到

vc_unicode_screenbuf 提取,然后绘制右半部分。对于 glyph 大于 254 但是又不是双倍宽度的字符,就不需要 0xfe

作陪了。比如屏幕上显示的文字是黑底白字的 “牛 B” , vc_screenbuf 的内容就是 “0x00ff, 0x0ffe, 0x0f42 ” ,

vc_unicode_screenbuf 的内容则是 “牛 , 牛 ,b”

。这是因为一个汉字为两倍的英文字母宽度。在屏幕文字缓冲区上也必须占用两个字符的位置。并且必须有一种机制能知道应该绘制左半部分和右半部分,我使用的就是 0xff

和 0xfe。

  修改图形控制台绘制代码

  要修改的地方只有 3 个。

  struct console_font 添加 charcount 成员。将主线内核的字体设置为 charcount = 255。 主线内核带的字体都是

255 个 glyph 的,所以没有添加字符个数的必要。不过我们即将要添加的字体会有数万字符。

  添加一个新的字体,复盖 UNICODE BMP 基本区域的所有符号。

  修改字符绘制代码,添加 vc_unicode_screenbuf 的支持。

  字符绘制代码的修改比较繁琐,代码分布在 drivers/video/console/ 下的多个文件中。fbcon_putc(s) 由由

vc->vc_sw->con_putc(s) 调用, fbcon_putc(s) 转而调用分散于 drivers/video/console/

的多个 puts 实现。因为终端要支持 console_rotate , decoration , timing , 故而每种模式下的绘制实现都是不同的。我拿

drivers/video/console/bitblt.c 最常用的不倾斜、不加装饰等的终端模式为例来讲解绘图部分的修改。由于中文字体为 16×16

点阵,是对齐的字体,故而其绘制代码为 bit_putcs_aligned() 原先的代码以 glyph 为下标到 vc->vc_font->data

获得字体数据,然后调用 fb_pad_aligned_buffer 执行块拷贝操作。我的修改很简单,原来获得字体数据的代码修改后放入 font_bits()

辅助函数。 在 font_bits 里,要判断 glyph 是否为 0xff 或者 0xfe, 如果不是,使用 glyph 为下标获得字体的左半部分后并返回。

如果是,则从 vc_unicode_screenbuf 获得真正的 glyph 数值,然后再依据现有的 glyph 是 0xff 还是 0xfe

去获得字体的右半部分还是左半部分返回。font_bits 获得字体数据后执行 fb_pad_aligned_buffer 块拷贝。需要修改的地方还有

drivers/video/console/fbcon_ccw.c fbcon_cw.c fbcon_ub.c 。依原理进行修改即可。

  虚拟终端的不足之处

  虽然费尽心机添加了中文支持,那只是一个 workaround ,

并不能算真正的支持。要真正的支持必须彻底重写虚拟终端和控制台。而要支持中文,就需要更进一步,全面支持 UNICODE ,

包括支持从右向左的书写习惯。在内核里实现一个全面支持 UNICODE

的控制台并不是一件容易的事情,何况内核的政策也不允许将如此庞大的字库装入内核。于是乎,这里出现了死胡同。KMS 和 Wayland

的出现让这死胡同似乎有了个完美的解。

  System Compositor?

  System Compositor 是一个 wayland compositor,只是运行于系统全局范围。

  为了懒人我这里稍微讲解一下 wayland compositor 吧。 Wayland 不同于 X , 在 wayland 的世界里,只有

compositor 和 client。Client 利用各种 API (wayland 给出的示例使用的是 OpenGL ES, 但其实 wayland

并不限制使用的绘图 API 类型 ) 进行窗口绘图,然后将窗口的绘制结果直接提交给 compositor 合成到屏幕上。这样 wayland 本身就不包含绘图

API 而大大简化了 wayland 的设计。Wayland compositor 可以同 X 一样操作显卡向屏幕输出合成后的结果,也可以作为另一个

wayland compositor 的 client。

  对于多账户同时登录的实现,固然可以让每一个本地 GUI 会话开启一个 wayland compositor,但是存在更好的办法就是固定开启一个

system compositor。而让所有用户会话的 wayland compositor 再作为 system compositor 的 client.

藉由 system compositor 的合成效果,进行快速用户切换也可以进行一些视觉效果。而且 Xorg 本身也已经支持作为 wayland client

运行,这样可以使用传统的 X 提供桌面,而让 wayland system compositor 实现终端切换。这还有一个好处,只有 wayland

system compositor 是以 root 运行的,而用户会话的 compositor 或 X 就不必以 root 权限运行。因为 Wayland

非常轻量,所以 system compositor 可以作为系统级服务常驻内存运行。而因为有了 system compositor ,

内核也不再需要实现虚拟终端了:只需要实现终端模拟器作为 system compositor 的 client

。由于是在用户空间实现的,所有可以加入 UNICODE,矢量字体,国际化的书写习惯等等的支持,再也不用受限于内核啦。 Wayland

还是一个非常年轻的项目,Wayland system compositor 目前还只是设想中的概念,需要更多的人关注参与。笔者相信不久的将来 wayland

一定能大有作为。转载

你是说要现实中文 还是仅仅改变字体 和颜色

右击终端,选择编辑配置文件,接下来自己应该会了

红帽Linux6桌面没有虚拟终端怎么办

Linux的桌面会占用一个本敬蠢地的虚拟控制台,可以使用ctrl+alt+F1到F7切换控制台,当切换至桌面则陆占用的控制台时,桌面才会显示出来孙稿顷。

另外,如果用户未启动桌面,则可键入startx命令启动桌面

linux 虚拟终端包的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux 虚拟终端包,了解Linux虚拟终端包,提高你的工作效率,如何改造 Linux 虚拟终端显示文字,红帽Linux6桌面没有虚拟终端怎么办的信息别忘了在本站进行查找喔。


数据运维技术 » 了解Linux虚拟终端包,提高你的工作效率 (linux 虚拟终端包)