开始使用 Linux 命令行的 5 个理由
您无需掌握命令行和在终端窗口中进行操作即可使用 Linux。但如果这样做,您将错过命令行的速度、功能和低级细粒度控制。
有什么大惊小怪的?
有人发誓,有人发誓。我们谈论的是命令行,这种古老的人机界面已经存在了五十多年,但仍然不会很快消失。即使在当今图形界面和触摸屏便利的世界中,命令行也有一席之地。
早在 20 世纪 60 年代末和 1970 年代初开发 Unix 时,还没有图形用户界面 (GUI) 或桌面环境 (DE) 之类的东西。打字是城里唯一的游戏。如果你想与计算机交互,你会使用键盘,并且你不会多想。
这具有设计意义。由于您仅限于打字,因此计算机配置、操作和管理的各个方面都必须通过键入命令来控制。半个多世纪前的 Unix 是如此,今天的 Linux 仍然如此。您可以从命令行执行任何操作。没有什么是你力所能及的。
今天,Linux 的核心仍然是一个键盘驱动的操作系统。你可以在没有桌面环境的情况下运行一个完整的Linux系统,很多服务器都是这样使用的。当然,在桌面上,大多数用户都有 DE。
不过,打开终端窗口,您就可以完全访问命令行,这意味着您可以访问所有 Linux 命令以及管理 Linux 安装的每个设置。
1. 提高您的系统管理技能
如果您要管理 Linux 系统,即使是为了朋友、家人和同事而随意管理,您也将遇到许多不同的发行版以及各种桌面环境。
使用命令行可以完成通过应用程序 GUI 或设置 DE 本身无法完成的操作。 DE 和图形应用程序是您和 Linux 之间的抽象层。可能有一些工具可以帮助您管理 Linux 安装,但它们不具备命令行所具有的保真度。
Linux 命令可以有几十个选项。命令越复杂,所有这些选项在 GUI 工具中复制的机会就越小。另外,每个 DE 都有自己的应用程序和自己的工作方式。无需学习所有桌面环境的 GUI 方式,打开终端窗口并输入适用于任何地方的通用 Linux 命令会更容易。如果有一个命令行工具未与特定发行版捆绑在一起,您可以快速安装它。
有时,选择是为你做出的。了解如何在命令行上执行操作是管理未安装 DE 的无头服务器或仅具有 SSH 访问权限的远程计算机的唯一方法。
2. 提高效率
Linux 命令可以有很多选项。这就是它们精确的原因。选择完全满足您需要的选项,这正是我们将要做的事情。 Linux 命令被设计为可以协同工作。它们可以生成被其他命令接受为输入的输出。
像这样将命令链接在一起称为管道。此命令返回当前目录中的文件扩展名列表以及每种不同类型的数量。 Linux 没有用于此目的的命令,但您可以使用现有的 Linux 命令轻松地将它们连接在一起。
ls | rev | cut -d'.' -f1 | rev | sort | uniq -c | sort -r
ls 列出文件。文件名被输入 rev 命令,反转每个名称中的字符。 cut 命令会在找到的第一个句点后截断每个名称(如果有)。第二次旋转将字符串恢复到原来的顺序。这为我们提供了扩展列表。该列表已排序,uniq 计算每个唯一文件扩展名的出现次数。然后该列表再次按降序排序。
这很好,但是有很多东西需要记住。特别是对于有很多选项的命令。
这就是别名的用处。别名可让您为自定义命令选择一个容易记住的名称,该命令会为您调用复杂的命令行。别名也可以带参数。如果您的命令行更像是一个小例程而不是单个命令行,则可以将其转换为 shell 函数。
如果需要永久记录输出,可以将输出重定向到文件而不是终端窗口。在命令末尾添加“"> file-count.txt”会创建一个名为 file-count.txt 的文件,其中包含本应显示在终端窗口中的文本。
ls | rev | cut -d'.' -f1 | rev | sort | uniq -c | sort -r > file-count.txt
将命令组合在一起并分割命令序列可以极大地提高您的效率,减少需要记住和键入的时间。
3. 自动化任务
当您的命令序列超出 shell 函数时,您可以将它们转换为脚本,并创建整个 shell 语言程序。
使用脚本可以实现的目标没有限制。您可以在命令行上使用的任何命令都可以在脚本中使用,以及 shell 语言结构(例如测试和比较、循环和 case 语句)。
繁琐、重复的任务可以通过运行脚本来完成。如果脚本需要在特定时间或以特定频率运行,您可以将其设置为使用 systemd 计时器自动启动。
4. 解决问题
Linux 命令行对计算机问题的故障排除提供了令人难以置信的良好支持。这样做意味着您可以避开 GUI 的混淆并直接与系统打交道。
Linux 记录各种事件和进程,包括引导过程。日志事件都可以通过 systemdjournalctl 访问。
您可以使用 lshw、lsblk 和 lscpu 等工具深入了解硬件问题,并使用 fsck 检查文件系统问题和使用 GRUB 检查引导问题。
sudo lshw
可以使用 ip、dig、host 和 nslookup 来调查网络和 DNS 问题。
可以使用 top 或 htop、iostat、vmstat 和 netstat 来识别性能问题。
5. 访问远程系统
您可以使用 SSH 连接登录远程 Linux 计算机,从而在远程计算机上(就在您自己的本地计算机上)提供一个终端窗口。使用 SSH 密钥,您可以建立安全、无密码的连接。
如果您需要做的只是传输文件,则可以使用 rsync 在您的计算机和远程计算机之间来回同步目录或整个目录树。当然,您可以将这些 rsync 命令包装在别名、shell 函数或脚本中,并使用 systemd 计时器自动运行它们。
学习曲线是值得的。潜入其中,但要调整自己的节奏。您不需要一次性学习所有内容,但是您学到的每条信息都会成为您的 Linux 工具包中的另一项资产。
没有人能成为一名优秀的机械师而无需揭开引擎盖。