标签 终端 下的文章

终端常常让新用户感到害怕。然而,一旦你了解了它,你就会逐渐开始喜欢上它。好吧,这事往往发生在大多数 Linux 用户身上。

即使你使用 Ubuntu 作为桌面系统,你可能有时也要进入终端。新用户往往对很多事情毫无头绪,在这种情况下,一些基本的 Linux 命令的知识总是有帮助的,但这篇文章不是关于这个。

这篇文章的重点是解释关于使用终端的一些小的、基本的、经常被忽视的东西。这应该可以帮助 Ubuntu 桌面的新用户了解终端,并以更高的效率使用它。

你看到的“ 终端 terminal ”只是 各种终端应用程序 中的一个。毕竟终端只是一个 GUI 工具,它可以让你进入一个可以运行命令的 Shell 。

不同的终端应用程序(正确地应该被称为“ 终端仿真器”)看起来有些稍微不同的功能和特点(如不同的键盘快捷键、颜色组合、字体等)。

本文特别关注 Ubuntu 的默认终端,它是 “GNOME 终端”的一个实现。

1、用键盘快捷方式打开终端

你可以 在 Ubuntu 中打开终端,在系统菜单中寻找到它。然而,我最喜欢的方式是使用 Ubuntu 中的键盘快捷键Ctrl+Alt+T

2、终端、Shell、提示符和命令行

在你看其他内容之前,你应该知道这些不同术语之间的区别,这些术语经常被(不正确地)互换使用。

终端、提示符和命令

“终端”是图形化的应用程序,默认情况下运行 Shell。

Shell 很难与终端分开进行可视化。终端运行着一个 Shell,在 Ubuntu 中通常默认为 Bash shell。和终端一样,也有各种 Shell。Bash 是其中最受欢迎的,也是大多数 Linux 发行版上的默认 Shell。

你输入的命令是由 Shell 解释的。通常人们认为他们在终端看到的屏幕就是 Shell。这适合理解这个概念。

“提示符”是你在输入命令的空格前看到的东西。对于提示符没有固定的标准。在一些旧的终端中,只是在你可以输入命令的地方有一个闪烁的光标而已。在 Ubuntu 终端中,提示符给了你一些信息,你会在本文后面的章节中看到这些信息的细节。

“命令行”不是 Linux 特有的东西。很多操作系统都有一个命令行界面。许多编程语言也都有命令行界面。它是一个术语,用来指你可以运行和执行命令的界面。

Luke Smith 的 这个视频 用例子详细解释了它。言归正传,我在这里就不多说了。

3、了解提示符

你现在已经知道了。你在输入命令的空格前看到的东西叫做“提示符”。它是可配置的,在不同的发行版、终端应用程序和 Shell 中提示符看起来是不同的。

Ubuntu 终端对提示符进行了配置,让你看到一些东西。你可以一目了然地得到以下信息:

  • 用户名
  • 主机名(计算机的名称)
  • 当前工作目录

还有一些你可能想知道的惯例。

提示符中的冒号(:)是一个分隔符,常用来区分主机名和当前位置。

波浪号(~)表示当前用户的主目录。

对于普通用户,提示符以美元($)符号结束。对于 root 用户来说,它以英镑或哈希(#)符号结束。因此有一个笑话说,英镑比美元强。

你是否注意到,当我切换到 root 用户时,命令提示符看起来不一样,没有任何颜色?这又一次提醒了我,提示符不是一个标准,是要明确配置的。对于普通用户来说,Ubuntu 对提示符的配置与 root 用户不同。

像这样的简单信息间接地帮助了我们。在一个多用户环境中,你可以很容易地弄清楚你现在使用的是哪个用户,以及它是否是 root 用户。其显示的路径位置也是有帮助的。

4、目录和文件

在 Linux 中你听到最多的两个术语是目录和文件。

你可能知道什么是文件,但你可能会对“ 目录 directory ”这个术语感到困惑。目录就是“ 文件夹 folder ”。它把文件和文件夹放在里面。

你可以进入目录,但你不能进入文件。当然,你可以读取文件。

你可以用“文件夹”这个词来表示目录,应该没有问题。然而,最好使用“目录”,因为你会在各种教程、文件等中看到引用这个词。你甚至会发现像 rmdirmkdir 这样的命令,暗示它们是处理目录的。

补充说明:在 Linux 中,所有东西都是文件。甚至目录也是一种特殊的文件,里面有文件和目录的地址。我已经在我的关于 硬链接的文章 中解释了这一点。如果你想了解更多关于这个主题的信息,可以参考一下。

5、路径:绝对路径和相对路径

Linux 中的目录结构 类似于一棵树的根。所有的东西都从根部开始,并从那里向外扩散。

如果你要访问一个文件或目录,你需要通过提供它的“路径”来说明如何到达它的位置。这个路径是由目录名和分隔符(/)组成的。如果一个路径以 /(即根)开头,它就是一个绝对路径,否则就是一个相对路径。

路径

绝对路径从根开始,可以很容易地从系统的任何地方引用。相对路径则取决于你在目录结构中的当前位置。

绝对路径与相对路径

如果你在 /home/abhishek 这个位置,有一个名为 scripts 的目录,里面有一个文件 my_script.sh,你想知道这个文件的路径,它的绝对路径将是:

/home/abhishek/scripts/my_script.sh

它的相对路径将是:

scripts/my_script.sh

如果你改变所在位置,文件的绝对路径保持不变。但是,相对路径会改变,因为它是相对于你当前的路径而言的。

相对路径随位置变化但绝对路径保持不变的真实例子

6、 . 和 ..

在使用 Linux 终端时,你可能经常会遇到 ... 符号。

单点(.)表示当前目录。

双点(..)表示父目录(比当前位置高一个目录)。

你经常在相对路径中使用双点(..),或者用于改变目录。单点(.)也用于相对路径中,但更重要的是,你可以在指定当前位置的命令中使用它。

 . 和 .. 的使用

7、理解命令的结构

一个典型的 Linux 命令由一个命令名和选项及参数组成。

命令名 [选项] 参数

“选项”,顾名思义,是可选的。当使用时,它们可能会根据其属性来改变输出。

例如,cat 命令是用来查看文件的。你可以添加选项 -n,它也会显示行数。

选项不是标准化的。通常情况下,它们是由单字母和单破折号(-)组成的。它们也可能是两个破折号(--)和一个单词的形式。

同样的选项在不同的命令中可能有不同的含义。如果你在 head 命令中使用 -n,表明你想看行数,而不是行号。

同样的选项 -n 在 cat 和 head 命令中有不同的用途

在命令文档中,如果你看到方括号([])之间有什么东西,它表示括号中的内容是可选的

同样地,“参数”也没有标准化。有些命令希望用文件名作为参数,有些则希望用目录名或正则表达式。

8、获得帮助

当你开始使用命令时,你可能会记住一些经常使用的命令的选项,但你根本不可能记住所有命令的所有选项。

为什么呢?因为一条命令可能有十多个或二十多个选项。

那么,当你无法记住所有的选项时,你该怎么办呢?你需要“帮助”。我所说的帮助,并不是指在 Linux 论坛 上提问。我指的是使用命令的帮助选项。

每个标准的 Linux 命令都有一个快速帮助页面,可以用 -h—help 来访问。

命令名 -h

它可以让你快速了解命令的语法、常用选项及其含义,在某些情况下还有命令的例子。

cat 命令的帮助页

如果你需要更多的帮助,你可以参考 手册页,即命令的手册。

man 命令名

它涉及到所有的细节,阅读和理解起来可能会让人难以承受。另外,你也可以在网上搜索 “Linux 中 xyz 命令的例子”。

9、Linux 是区分大小写的

Linux 是区分大小写的。你在终端中输入的所有东西都是区分大小写的。如果你不考虑这一点,你会经常遇到 “bash: command not found” 或 “file not found” 的错误。

在主目录中,你的所有文件夹名称以大写字母开头的。如果你要切换到 Documents 目录,你必须把第一个字母保持为 D,而不是 d

Linux 是区分大小写的

你可以有两个分别名为 file.txtFile.txt 的文件,因为对于 Linux 来说,fileFile 是不一样的。

10、运行 Shell 脚本

你可以通过指定 Shell 来 运行一个 Shell 脚本

bash script.sh

或者你可以像这样执行 Shell 脚本。

./script.sh

第二种方法只有在文件有执行权限时才会起作用。更多关于 Linux 文件权限参考这里

运行bash脚本

11、使用制表符补完而不是全部输入

Ubuntu 的终端已经预先配置了制表符补完功能。这意味着如果你开始在终端上输入,然后点击 tab ,它会尝试自动完成它,或者在有多个可能的匹配时提供选项。

它既适用于命令,也适用于参数和文件名。

Tab 完成示例

这可以节省大量的时间,因为你不需要把所有的东西都写完整。

12、Ctrl+C 和 Ctrl+V 不是用来在终端复制粘贴的。

Ctrl+CCtrl+V 可能是复制粘贴的“通用”键盘快捷键,但它在 Linux 终端中不行。

Linux 继承了 UNIX 的很多东西,在 UNIX 中,Ctrl+C 被用来停止一个正在运行的进程。

由于 Ctrl+C 已经被用于停止一个命令或进程,所以它不能再用于复制粘贴。

13、你当然可以在终端复制粘贴

别担心。你仍然可以 在终端中复制粘贴。同样,复制-粘贴的键盘快捷键没有固定的规则,因为它取决于你使用的终端程序或你的配置。

在 Ubuntu 终端中,复制的默认键盘快捷键是 Ctrl+Shift+C,粘贴则是 Ctrl+Shift+V

你可以使用 Ctrl+C 从终端外(如网页浏览器)复制文本和命令,并使用 Ctrl+Shift+V 将其粘贴。同样,你可以高亮显示文本,用 Ctrl+Shift+C 从终端复制文本,用 Ctrl+V 粘贴到编辑器或其他应用程序。

14、避免在终端中使用 Ctrl+S

另一个初学者常犯的错误是使用“通用”的 Ctrl+S 键盘快捷键来保存。如果你在终端中使用 Ctrl+S,你的终端会被“冻结”。

这来自于传统的计算机,在那里没有向上滚动的滚动条。因此,如果有大量的输出行,Ctrl+S 被用来停止屏幕,以便可以阅读屏幕上的文字。

你可以用 Ctrl+Q 来解除终端的冻结。但还是要避免在终端中使用 Ctrl+S

15、注意命令例子中的 $ 和 <>

如果你参考一些在线教程或文档,你会看到一些命令例子中的文本在 <> 内。这表明你需要用一个合适的值来替换与 <> 一起的内容。

例如,如果你看到一个这样的命令:

grep -i <搜索内容> <文件名>

你应该把 <搜索内容><文件名> 换成各自的实际值。(LCTT 译注:不要输入 <>

这表明该命令只是一个例子,你必须用实际值来完成它。

这里需要注意的另一件事是,有些教程显示的命令例子是以 $ 开头的,比如这样:

命令开头的美元符号

这是表明它们是命令(而不是命令输出)的一种方式。但是,许多新的 Linux 用户把前面的 $ 和实际的命令一起复制,当他们把它粘贴到终端时,显然会出现错误。

所以,当你复制一些命令时,如果开头有 $,就不要复制它。你也应该避免复制随机网站的随机命令,特别是当你不了解它的作用时。

既然你正在阅读关于复制命令的文章,当你看到多行的命令在一起时,你应该一次复制一行,然后逐一运行。

避免将多个命令复制在一起

下一节将告诉你如何一次性运行多个命令。

16、你可以同时运行多个命令

你可以 一次运行多个命令 而不需要用户干预。作为 Ubuntu 用户,你可能已经在这个命令的形式中看到了它:

sudo apt update && sudo apt upgrade

在终端中,有三种不同的方法来组合命令:

;命令 1 ; 命令 2先运行命令 1,再运行命令 2
&&命令 1 && 命令 2只有命令 1 成功结束才运行命令 2
` ``命令 1 命令 2`只有命令 1 失败时才运行命令 2

17、停止一个正在运行的 Linux 命令

如果一个 Linux 命令在前台运行,也就是说,它正在显示输出,或者说你不能输入任何其他命令,你可以用 Ctrl+C 键停止它。

我以前讨论过它。它来自于 UNIX 的传统计算时代。

所以,下次你看到像 topping 这样的命令在持续运行,而你想恢复终端控制,只需使用这两个键:Ctrl+C

在 Linux 中用 Ctrl+C 停止一个正在运行的程序

18、清除终端

当我发现我的屏幕被不同类型的输出弄得太杂乱时,我会在开始其他工作之前清除终端屏幕。这只是一种习惯,但我发现它很有帮助。

要清除终端,请使用以下命令:

clear

你也可以使用 终端快捷键 Ctrl+L

19、退出终端

在少数情况下,我看到有人关闭终端程序来退出会话。你可以这样做,但退出终端的正确方法是使用退出命令:

exit

你也可以使用 Ubuntu 终端的键盘快捷键 Ctrl+D

总结

即使你对终端完全陌生,你也可以在终端中做很多额外的事情。你可以:

如果你想了解更多,看看这些 Linux 命令技巧,可以像专家一样使用终端

说实话,要谈的东西太多了。很难确定哪些应该被认为是绝对的基础知识,哪些应该被排除在外。例如,我想避免包括关于路径的信息,因为它需要详细的解释,但在一个地方讲得太详细可能会让人不知所措。

我已经过了在终端中的小东西曾经让我困惑的阶段。如果你是 Linux 终端的新手,或者你还记得你最初使用 Linux 时的挣扎,请随时提出建议对列表进行补充。我可能会根据你的意见更新这个列表。

如果你学到了新的东西,请在评论中提及。我想看看这篇文章是否值得一读 ?


via: https://itsfoss.com/basic-terminal-tips-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:wxy 校对:wxy

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

如果你只是想完成一些工作,默认的终端已经看起来足够好了。

但是,如果你想要一个独一无二的的终端体验或者符合你自身品位的一些东西,你也可以改变你的 Ubuntu 的终端的颜色。

在这篇速成教程中,我将专注于调整 Ubuntu 中的颜色方案。由于 Ubuntu 使用 GNOME 的终端,因此这些步骤可能也对大多数的使用 GNOME 桌面环境的其它的发行版有效。

更改你的 Ubuntu 的终端的颜色

这些步骤类似于 如何更改终端的字体和大小。你必须找到自定义颜色的选项,就是这样的简单。

让我们快速指出你需要找到什么:

步骤 1在 Ubuntu 中打开终端窗口,方法是按 Ctrl+Alt+T 组合键。

步骤 2:打开终端 首选项 Preferences 。你可以单击菜单按钮或者右击终端屏幕的任意位置来访问首选项。

针对你的自定义选项,创建一个独立的配置文件将会是一个好主意,因为这样做不会更改默认的设置。

步骤 3:现在,你可以找到一些调整字体大小和样式的选项。但是,在这里,你需要前往 “ 颜色 Colors ” 选项卡,如下面的屏幕截图所示。

步骤 4:在默认情况下,你将会注意到:它使用来自系统主题的颜色。如果你想融入你自己的系统主题,这应该是首选的方式。

但是,如果你想要自定义,你需要先取消系统的颜色的选项,然后再开始选择颜色。

如你在上面的屏幕截图中能够注意到的那样,你可以选择使用一些内置的颜色方案,也可以 通过更改文本和背景的默认颜色选项 来完成自定义颜色方案。

如果你选择一种“自定义”内置方案,那么你可以自定义从文本到光标的各个层面的终端的屏幕颜色。

再强调一次!如果你想快速地访问终端的不同的自定义版本,请创建一个单独的配置,否则,每次当你想要一种独特的颜色组合方案时,你都将需要重新自定义。

更改终端的颜色的其它的方法

这里有其它的几种更改 Ubuntu 的终端的颜色的方法:

更改主题

大多数的 Ubuntu 主题都有它们自己的终端的颜色的实现,并且其中的一些实现看起来非常漂亮。这里是如何针对 Ant 和 Orchis 主题进行更改终端的颜色方案:

你可以选择一种黑暗主题,接下来你的主题将会变成黑色。不需要担心选择颜色方案的问题。

依据你的壁纸选择终端颜色

如果你不想手动自定义你的终端的颜色,你可以使用 Pywal 。使用这个方便的 Python 工具,你的计算机能够随着你的每一张壁纸来 更改你的终端的颜色方案

它将自动地适配你所使用的壁纸。因此,你不需要费心地自定义终端。

针对你的终端的自定义选项

如果你是一个更高级的玩家,你可能会热衷于更多的自定义终端的外貌的选项。你可以通读我们关于 调整终端的外貌的不同的方法 的资源来探索更多的信息。

你更喜欢自定义终端吗?在下面的评论区,让我们知道你的经历!


via: https://itsfoss.com/change-terminal-color-ubuntu/

作者:Ankush Das 选题:lujun9972 译者:robsean 校对:wxy

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

使用 ncurses 在 Linux 屏幕上的特定位置放置文本,可以带来更友好的用户界面体验。

 title=

大多数的 Linux 实用程序仅仅只在屏幕的底部滚动文本。如果你想在屏幕中放置你的文本,例如一个游戏或者一个数据展示,你可以试试 ncurses。

curses 是一个旧的 Unix 库,它可以在文本终端界面控制光标。curses 的名称就来自于术语 “ 光标控制 cursor control ”。多年以后,其他人编写了新的 curses 版本用来添加新的功能,新版本被叫做 “new curses” 或者 “ncurses”。你可以在每个流行的 Linux 发行版中找到 ncurses。尽管默认情况下可能未安装开发库、头文件和文档。例如,在 Fedora 上,你需要使用以下命令安装 ncurses-devel 包:

$ sudo dnf install ncurses-devel

在程序中使用 ncurses

要在屏幕上直接寻址,你首先需要初始化 ncurses 库。大部分程序会通过以下三行来做到这一点:

  • initscr():初始化窗口对象和 ncurses 代码,返回代表整个屏幕的窗口对象
  • cbreak():禁用缓冲并使键入的输入立即可用
  • noecho():关闭回显,因此用户输入不会显示在屏幕上

这些函数定义在 curses.h 头文件中,你需要在你的程序中通过以下方式将其包含进来:

#include <curses.h>

初始化终端后,你可以自由使用任何 ncurses 函数,我们将在示例程序中探讨其中的一些函数。

当你使用完 ncurses 并想返回到常规终端模式下时,使用 endwin() 重置一切。此命令可以重置任何屏幕颜色,将光标移动到屏幕的左下角,并使光标可见。通常在退出程序之前执行此操作。

在屏幕上寻址

关于 ncurses 首先需要知道的是屏幕的坐标分为行和列,左上角的是 0,0 点。ncurses 定义了两个全局变量来帮助你识别屏幕:LINES 是屏幕的行数,COLS 是屏幕的列数。屏幕右下角的位置是 LINES-1,COLS-1

例如,如果你想要移动光标到第 10 行和第 30 列,你可以使用 move() 函数,移动到此坐标:

move(10, 30);

之后显示的任何文本都将从屏幕的该位置开始。要显示单个字符,请对单个字符使用 addch(c) 函数。要显示字符串,将对字符串使用 addstr(s) 函数。对于类似于 printf 的格式化输出,请使用带有常用选项的 printw(fmt, ...)

移动到屏幕指定位置和显示文本是一件很常见的事情,ncurses 提供了同时执行这两项操作的快捷方式。mvaddch(row, col, c) 函数将在屏幕第 row 行,第 col 列的位置显示一个字符。而 mvaddstr(row, col, s) 函数将在屏幕第 row 行,第 col 列的位置显示一个字符串。举个更直接的例子,在程序中使用 mvaddstr(10, 30, "Welcome to ncurses"); 函数将从屏幕的第 10 行和第 30 列开始显示文本 Welcome to ncurses。使用 mvaddch(0, 0, '+') 函数将在屏幕的左上角第 0 行和第 0 列处显示一个加号(+)。

在终端屏幕上绘制文本会对某些系统产生性能影响,尤其是在较旧的硬件终端上。因此 ncurses 允许你“堆叠”一堆文本以显示在屏幕上,然后使用 refresh() 函数使所有这些更改对用户可见。

让我们来看一个将以上所有内容整合在一起的简单示例:

#include <curses.h>

int
main()
{
  initscr();
  cbreak();
  noecho();

  mvaddch(0, 0, '+');
  mvaddch(LINES - 1, 0, '-');
  mvaddstr(10, 30, "press any key to quit");
  refresh();

  getch();

  endwin();
}

程序的开始初始化了一个终端窗口,然后在屏幕的左上角打印了一个加号,在左下角打印了一个减号,在第 10 行和第 30 列打印了 press any key to quit 文本。程序通过使用 getch() 函数接收了键盘输入的单个字符,接着,使用 endwin() 函数在程序完全退出前重置了终端。

getch() 是一个很有用的函数,你可以使用它来做很多事情。我经常使用它在我退出程序前用来暂停。与大多数 ncurses 函数一样,还有一个名为 mvgetch(row, col)getch() 版本,用于在等待字符输入之前移动到屏幕位置的第 row 行,第 col 列。

使用 ncurses 编译

如果你尝试以通常的方式编译该示例程序,例如 gcc pause.c,你可能会从链接器中获得大量错误列表。那是因为 GNU C 编译器不会自动链接 ncurses 库。相反,你需要使用 -l ncurses 命令行选项加载它以进行链接。

$ gcc -o pause pause.c -lncurses

运行新程序将打印一条简单的 press any key to quit消息,该消息差不多位于屏幕中央:

centered message in a program window

图 1:程序中居中的 “press any key to quit” 消息。

使用 ncurses 构建更好的程序

探索 ncurses 库函数以了解在屏幕上显示文本的其它方法。你可以在 ncurses 的手册页中找到所有 ncurses 函数的列表。这给出了 ncurses 的一般概述,并提供了不同 ncurses 函数的类似表格的列表,并参考了包含完整详细信息的手册页。例如,在 curs_printw(3X) 手册页中描述了 printw,可以通过以下方式查看:

$ man 3x curs_printw

更简单点:

$ man curs_printw

使用 ncurses,你可以创建更多有趣的程序。通过在屏幕上的特定位置打印文本,你可以创建在终端中运行的游戏和高级实用程序。


via: https://opensource.com/article/21/8/ncurses-linux

作者:Jim Hall 选题:lujun9972 译者:perfiffer 校对:wxy

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

比较 tmux、GNU Screen、Konsole 和 Terminator,看看哪个最适合你。

 title=

Linux 用户通常需要大量的虚拟视觉空间。一个终端窗口是永远不够的,所以终端有了标签。一个桌面太受限制了,所以有了虚拟桌面。当然,应用程序窗口可以堆叠,但当它们堆叠起来时,又有多大的好处呢?哎呀,即使是后台文本控制台也有 F1F7,可以在任务之间来回翻转。

有了这么多的多任务处理方式,有人发明了终端 多路复用器 的概念就不奇怪了。诚然,这是一个令人困惑的术语。在传统的电子学中,“ 多路复用器 multiplexer ”是一个接收多个输入信号并将选定的信号转发到单一输出的部件。终端多路复用器的作用正好相反。它从一个输入(人类在键盘上向一个终端窗口打字)接收指令,并将该输入转发给任意数量的输出(例如,一组服务器)。

然后,“多路复用器”一词在美国也是一个流行的术语,指的是有许多屏幕的电影院(与“ 影城 cineplex ”一词一个意思)。在某种程度上,这很好地描述了终端复用器的作用。它可以在一个框内提供许多屏幕。

不管这个词是什么意思,任何尝试过它的人都有自己的喜好的某一种多路复用器。因此,我决定考察一些流行的终端多路复用器,看看每一个都怎么样。就我的评估标准而言,最低限度,我需要每个多路复用器能够分割堆叠终端窗口。

tmux

 title=

据我所知,是从 tmux 开始使用“多路复用器”这个术语的。它工作的很出色。

它作为一个守护程序运行,这样即使你关闭了正在查看的终端模拟器,你的终端会话仍然处于活动状态。它将你的终端屏幕分割成多个面板,这样你就可以在每个面板上打开独特的终端提示符。

推而广之,这意味着你也可以远程连接到任何数量的系统,并在你的终端中打开它们。利用 tmux 的能力,将输入镜像(或者以电子学术语说是“反向多路复用”)到其他打开的窗格,就能从一个中央命令窗格同时控制几台计算机。

tmux 在 GNU Screen 还只能水平分割的时候就有了垂直分割能力,这吸引了追求最大灵活性的粉丝。而灵活性正是用户在 tmux 中得到的。它可以分割、堆叠、选择和提供服务;几乎没有什么是它做不到的。

? 软件包大小

从软件包中安装 tmux 大约需要 700K,这还不算它所依赖的十几个共享库。

?️ 控制键

tmux 的默认触发键是 Ctrl+B,尽管很容易在其配置文件中重新定义。

⌨️ 黑客因子

即使你只是在学习如何使用终端,你也一定会觉得使用 tmux 的人很像黑客。它看起来很复杂,但一旦你了解了正确的键绑定,就很容易使用。它为你提供了很多有用的技巧,让你玩的飞起,而且它是一种快速构建 HUD(抬头显示器)的超简单方法,可以把你需要的所有信息摆在你面前。

GNU Screen

 title=

像 tmux 一样,GNU Screen 也运行一个守护程序,所以即使你关闭了用来启动它的终端,你的 shell 仍然可用。你可以从不同的计算机上连接并共享屏幕。它可以将你的终端屏幕分割成水平或垂直的窗格。

与 tmux 不同的是,GNU Screen 可以通过串行连接进行连接(screen 9600 /dev/ttyUSB0 就可以了),通过按键绑定可以方便地发出 XONXOFF 信号。

与 SSH 会话相比,在串行连接中需要多路复用器的情况可能并不常见,所以大多数用户并不了解 Screen 这个真正特殊的功能。不过,GNU Screen 是一个很棒的多路复用器,有很多有用的选项。而如果你真的需要同时向多个服务器发送信号,还有专门的工具,比如 ClusterSSH 和 Ansible

? 软件包大小

从软件包中安装 GNU Screen 大约需要 970K,这还不算它所依赖的十几个共享库。

?️ 控制键

GNU Screen 的默认触发键是 Ctrl+A,这对于熟悉 Bash 快捷键的人来说可能特别烦人。幸运的是,你可以在配置文件中轻松地重新定义这个触发键。

⌨️ 黑客因子

当使用 Screen 通过串行连接到你的路由器或你的原型电路板时,你会成为你所有硬件黑客朋友羡慕的对象。

Konsole

 title=

对于没有标榜自己是多路复用器的 Konsole 来说,令人惊讶的是它也是其中一个。它可以使用 Qt 窗格和标签进行必要的窗口分割和堆叠,但它也可以通过“编辑(将输入复制到)”菜单中的一个选项将输入从一个窗格传到另一个(或全部)。

然而,它所最明显缺乏的功能是作为一个守护程序运行以进行远程重新连接的能力。与 tmux 和 GNU Screen 不同,你不能远程连接到运行 Konsole 的机器并加入会话。对于一些管理员来说,这可能不是一个问题。许多管理员用 VNC 连接到机器的次数比用 SSH 还要多,所以“重新加入”一个会话就像在 VNC 客户端上点击 Konsole 窗口一样简单。

使用 Konsole 作为多路复用器是 KDE 极客们的大招。Konsole 是我使用的第一个 Linux 终端(直到今天,我有时也会按 Ctrl+N 来切换新标签),所以有能力使用这个熟悉的终端作为多路复用器是一个很大的便利。这绝不是必要的,因为无论如何 tmux 和 Screen 都可以在 Konsole 里面运行,但是通过让 Konsole 处理窗格,我就不必调整肌肉记忆。这种微妙的功能包容正是 KDE 的伟大之处

? 软件包大小

Konsole 本身大约是 11KB,但它依赖于 105 个 KDE 和 Qt 库,所以实际上,它至少有 50MB。

?️ 控制键

大多数重要的 Konsole 快捷键以 Shift+Ctrl 开始,分割屏幕、打开新标签、复制输入到其他窗格等都是如此。这是 KDE 里的主控台,所以如果你对 Plasma 桌面很熟悉,会感觉快捷键很熟悉。

⌨️ 黑客因子

使用 Konsole 作为你的多路复用器让你有资格称自己为 KDE 高级用户。

Terminator

 title=

对于 GNOME 用户来说,Terminator 多路复用器是为他们原本极简的 GNOME 终端增加功能的一个简单方法。除了必要的多路复用功能外,Terminator 还可以向所有打开的窗格广播输入,但和 Konsole 一样,它不会在后台运行以便你可以通过 SSH 重新连接到它。话说回来,由于 GNOME 和 Wayland 让 VNC 变得如此简单,你有可能会觉得没有必要通过 SSH 来恢复终端会话。

如果你愿意,Terminator 可以完全由鼠标驱动。Konsole 通过其主菜单也有同样的能力。有了 Terminator,你可以在 Shell 的任何地方点击右键,弹出相关选项,以水平或垂直分割窗口,将窗格分组作为广播目标,广播输入,关闭窗格,等等。你还可以为所有这些动作配置键盘快捷键,所以在许多方面,你可以形成自己的体验。

我认为自己主要是一个 KDE 用户,所以当我说 Terminator 感觉像一个 KDE 应用时,我其实是一种极大的赞美。Terminator 是一个令人惊讶的可配置的和灵活的应用程序。在许多方面,它体现了开源的力量,把简陋的 GNOME 终端变成了一个强大的多路复用器。

? 软件包大小

Terminator 的安装容量为 2.2MB,其中大部分是 Python 模块。但它依赖于 GTK3 和 GNOME,所以如果你没有运行完整的 GNOME 桌面,可以预料你需要一个更大的安装来拉入这些依赖。

?️ 控制键

Terminator 的默认控制键没有什么一致性。你可以用 Alt 键来执行一些命令,用 Ctrl 来执行其他命令,还可以用 Shift+CtrlCtrl+AltShift+Super 等等,还有鼠标。话说回来,这是我试过的最可配置的多路复用器之一,所以只要有想法,稍加努力,你就能设计出适合你的模式。

⌨️ 黑客因子

当你使用 Terminator 时,你会觉得自己是最现代、最务实的黑客。由于它的各种极客选项,它是多路复用的最佳选择,而且由于它非常灵活,无论你的手是在键盘上,还是键盘和鼠标并用,你都可以同样轻松地使用它。

我全要

还有更多的多路复用器和一些具有类似多路复用能力的应用。你不必非要找到一个完全按照你想要的方式完成你需要的所有工作的多路复用器。你可以使用不止一个。事实上,你甚至可以同时使用多个,因为 tmux 和 Screen 实际上是 shell,而 Konsole 和 Terminator 是显示 shell 的终端。对唾手可得的工具感到舒适,而且它们能帮助你管理你的工作空间,使你能有效地工作,才是最重要的。

去尝试一下多路复用器,或者在你喜欢的应用程序中发现类似多路复用器的功能。它可能会改变你看待计算的方式。


via: https://opensource.com/article/21/5/linux-terminal-multiplexer

作者:Seth Kenlon 选题:lujun9972 译者:wxy 校对:wxy

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

有几种方法可以测试和提高你的打字速度。你可以使用在线工具,在桌面上安装专门的应用,或者在 Linux 终端测试。

Linux 终端?是的。从 浏览互联网玩游戏,你可以在强大的 Linux 终端中做 许多有趣的事情。测试你的打字速度就是其中之一。

Ttyper:基于终端的打字测试工具

Ttyper 是一个用 Rust 编写的工具,允许你练习打字。

它给出了一些最常见的英语单词的随机选择。打出的正确单词用绿色突出显示,错误的用红色突出显示,而且这是实时发生的。你可以按退格键纠正单词,但这将导致分数下降。

当你打完所有显示的单词后,你会得到你的打字速度(每分钟字数)、准确率和正确按键数的结果。如果你没有心情打完全部,你可以使用 Ctrl+C 退出 Ttyper。

你可以在这个由开发者录制的 GIF 中看到 Ttyper 的操作。

默认情况下,你有 50 个单词可以练习,但你可以用命令选项来扩大。你还可以使用一个自定义的文本文件,用它的内容来练习打字。

命令内容
ttyper200 个最常见的英语单词中的 50 个
ttyper -w 100200 个最常见的英语单词中的 100 个
ttyper -w 100 -l english10001000 个最常见的英语单词中的 100 个
ttyper text.txt内容来自用空格分隔的 test.txt

Ttyper 也专注于开发者。它支持几种编程语言,如果你是一个程序员,你可以用它来测试和改进你在编码时的打字速度。

截至目前,支持 C、Csharp、Go、HTML、Java、JavaScript、Python、Ruby 和 Rust 语言。

你可以通过以下方式改变语言:

ttyper -l html

顺便说一下,“Ttyper” 中的双 “T” 不是一个打字错误。它是故意的,因为TTY(TeleTYpewriter)代表 终端模拟器,表明它是一个终端工具。

在 Linux 上安装 Ttyper

Ttyper 是用 Rust 构建的,你可以把它安装在任何支持 Rust 编程语言及其 Cargo 软件包管理器的 Linux 发行版上。

Cargo 相当于 Python 中的 PIP。它有一个中央仓库,你可以用 Cargo 轻松地下载和安装 Rust 包和它的依赖项。

我将添加在基于 Ubuntu 的 Linux 发行版上安装 Cargo 的说明。你应该可以用你的发行版的包管理器来安装它。

请确保你在 Ubuntu 上启用了 universe 仓库。你可以用这个命令来安装 Cargo:

sudo apt install cargo

它将安装 Cargo 包管理器和 Rust 语言的 rustc 包。

当你的系统安装了 Cargo,就可以用这个命令来安装 Ttyper:

cargo install ttyper

这将在你的主目录下的 .cargo/bin 目录中添加一个可执行 Rust 文件。它将在软件包安装输出的最后显示。

你可以切换到这个目录:

cd ~/.cargo/bin

并运行 ttyper 可执行文件:

./ttyper

当然,这不是很方便。这就是为什么你应该 把这个目录添加到 PATH 变量中。如果你熟悉 Linux 的命令行,你可以很容易做到这一点。

不幸的是,我不能在这里给你确切的命令,因为你需要提供这个目录的绝对路径,而这个路径名称会根据你的用户名而不同。例如,对我来说,它是 /home/abhishek/.cargo/bin。这个绝对路径对你来说会有所不同。

我建议阅读 绝对路径和相对路径 以了解更多关于这个问题的信息。

你可以通过删除二进制文件来卸载 Ttyper,或者用 Cargo 命令来卸载:

cargo uninstall ttyper

如果你喜欢这个灵巧的终端工具,在 GitHub 上给它加星 以感谢开发者的努力。

正如我在本文开头提到的,你可以在终端做很多很酷的事情。如果你想给你的同事一个惊喜,也许你可以试试 完全在 Linux 终端中制作幻灯片。


via: https://itsfoss.com/ttyper/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

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

学习基本的 GNU Screen 终端复用技术,然后下载我们的终端命令备忘录,以便你能够熟悉常用的快捷方式。

 title=

对于一般用户而言,命令行终端窗口可能是令人困惑和神秘的。但随着你对 Linux 终端的进一步了解,你很快就会意识到它的高效和强大。不过,也不需要很长时间,你就会想让终端变得更加高效,除了将更多的终端放到你的终端,还有什么高好的方法能够提升你的终端效率呢?

终端复用

终端的许多优点之一是它是一个集中控制的界面。它是一个能让你访问数百个应用程序的窗口,而你与每一个应用程序进行交互所需要的只是一个键盘。但是,现代计算机几乎总是有多余的处理能力,而且现代计算机专家喜欢多任务处理,导致一个窗口处理数百个应用程序的能力是相当有限的。

解决这一问题的常见答案是终端复用:即将虚拟终端叠放在一起,然后在它们之间移动的能力。通过终端复用器,你保持了集中控制,但是当你进行多任务时,你能够进行终端切换。更好的是,你能够在终端中拆分屏幕,使得在同一时间显示多个屏幕窗口。

选择合适的复用器

一些终端提供类似的功能,有标签式界面和分割式视图,但也有细微的差别。首先,这些终端的功能依赖于图形化的桌面环境。其次,许多图形化的终端功能需要鼠标交互或使用不方便的键盘快捷键。终端复用器的功能在文本控制台上和在图形桌面上一样好用,而且键位绑定是针对常见的终端序列设计的,很方便。

现有两种流行的复用器:tmuxGNU Screen。尽管你与它们互动的方式略有不同,但它们做同样的事情,而且大多具有相同的功能。这篇文章是 GNU Screen 的入门指南。关于 tmux 的相关介绍,请阅读 Kevin Sonney 的 tmux 介绍

使用 GNU Screen

GNU Screen 的基本用法很简单,通过 screen 命令启动,你将进入 Screen 会话的第 0 个窗口。在你决定需要一个新的终端提示符前,你可能很难注意到有什么变化。

当一个终端窗口被某项活动占用(比如,你启动了文本编辑器 VimJove 或者你在处理音视频,或运行批处理任务),你可以新建一个窗口。要打开一个新的窗口,按 Ctrl+A,释放,然后按 c。这将在你现有窗口的基础上创建一个新的窗口。

你会知道当前你是在一个新的窗口中,因为你的终端除了默认的提示符外,似乎没有任何东西。当然,你的另一个终端仍然存在,它只是躲在新窗口的后面。要遍历打开的窗口,按 Ctrl+A,释放,然后按 n(表示下一个)或按 p(表示上一个)。在只打开两个窗口的情况下, np 的功能是一样的,但你可以随时打开更多的窗口(Ctrl+A,然后 c ),并在它们之间切换。

分屏

GNU Screen 的默认行为更像移动设备的屏幕,而不是桌面:你一次只能看到一个窗口。如果你因为喜欢多任务而使用 GNU Screen ,那么只关注一个窗口可能看起来是一种退步。幸运的是,GNU Screen 可以让你把终端分成窗口中的窗口。

要创建一个水平分割窗口,按 Ctrl+A,然后按 s 。这将把一个窗口置于另一个窗口之上,就像窗格一样。然而,在你告诉它要显示什么之前,分割的空间是没有用途的。因此,在创建一个分割窗后,你可以用 Ctrl+A ,然后用 Tab 移动到分割窗中。一旦进入,使用 Ctrl+A 然后 n 浏览所有可用的窗口,直到你想显示的内容出现在分割窗格中。

你也可以按 Ctrl+A 然后按 | (这是一个管道字符,在大多数键盘上通过按下 shift 键加上 \)创建垂直分割窗口。

自定义 GNU Screen

GNU Screen 使用基于 Ctrl+A 的快捷键。根据你的习惯,这可能会让你感觉非常自然,也可能非常不方便,因为你可能会用 Ctrl+A 来移动到一行的开头。无论怎样,GNU Screen 允许通过 .screenrc 配置文件进行各种定制。你可以用这个来改变触发键的绑定(称为 “转义” 键绑定)。

escape ^jJ

你还可以添加一个状态行,以帮助你在 Screen 会话中保持自己不迷失。

# status bar, with current window highlighted
hardstatus alwayslastline
hardstatus string '%{= kG}[%{G}%H%? %1`%?%{g}][%= %{= kw}%-w%{+b yk} %n*%t%?(%u)%? %{-}%+w %=%{g}][%{B}%m/%d %{W}%C%A%{g}]'

# enable 256 colors
attrcolor b ".I"
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
defbce on

在有多个窗口打开的会话中,有一个时刻提醒哪些窗口具有焦点活动,哪些窗口有后台活动的提醒器特别有用。它类似一种终端的任务管理器。

下载备忘单

当你学习 GNU Screen 的使用方法时,需要记住很多新的键盘命令。有些命令你马上就能记住,但那些你不常使用的命令可能就很难记住了。你可以按 Ctrl+A 然后再按 ? 来访问 GNU Screen 的帮助界面,但如果你更喜欢一些可以打印出来并放在键盘边的东西,请 下载我们的 GNU Screen 备忘单

学习 GNU Screen 是提高你使用你最喜欢的 终端模拟器 的效率和敏捷性的一个好方法。请试一试吧!


via: https://opensource.com/article/21/4/gnu-screen-cheat-sheet

作者:Seth Kenlon 选题:lujun9972 译者:ddl-hust 校对:wxy

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