A Linux 命令行快速生存指南

不习惯命令行界面的用户可能会觉得在 Linux 计算机上做事很困难。基本的命令行界面三十多年来一直如此。因此,关于如 何使用每个命令的在线教程非常丰富。本简短指南只是一个入门。

A.1 常用快捷键

以下是最常用快捷键的总结。

  • CTRL-C: 停止当前正在运行的程序。

  • CTRL-D: 结束当前会话(关闭终端窗口)。

  • CTRL-L: 清屏。

  • TAB : 在命令提示符下,尝试对已输入的内容进行自动补全。这在处理长文件名等情况时非常有用: 输入名称 的开头部分,然后按 [TAB]。

  • 上下箭头键: 在命令提示符下,从历史记录中调出之前输入的命令。这对于重复刚刚完成的操作很有用。也可 以编辑之前的命令,因此也适用于执行与之前命令几乎相同的操作。

  • 空格键: 当计算机使用终端分页器显示内容时,[空格] 表示“向下翻页”。

  • q: “退出”。在逐页显示模式下,“q”用于退出此模式。

A.2 获取帮助

实际上没有人能记住所有的标志和选项。有两种常用的获取更多帮助的方法。一种是“man”命令,另一种是帮助标志。

例如,为了了解更多关于“ls”命令(列出当前目录中的文件)的信息:

$ man ls

请注意,“$”符号是命令提示符,计算机打印它来表示已准备好接收命令。通常提示符更长,并包含一些关 于用户和当前目录的信息。

手册页通过终端分页器显示。使用 [空格]、箭头键、Page Up 和 Page Down 进行导航,按 “q” 退出。

要获得关于如何运行该命令的简短摘要,请使用 --help 标志。有些命令响应 -h-help(带单个短划线)。其他命令在语法不正确时打印帮助信息。这需要反复 尝试。以 ls 命令为例:

$ ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort.

Mandatory arguments to long options are mandatory for short options too.
 -a, --all        do not ignore entries starting with .
 -A, --almost-all    do not list implied . and ..
    --author       with -l, print the author of each file

...

(还有更多内容)

A.3 显示和编辑文件

如果文件预计很短(或者可以使用终端窗口的滚动条),则可以通过以下方式在控制台上显示其内容:

$ cat filename

较长的文件需要使用终端分页器:

$ less filename

至于编辑文本文件,有很多编辑器可供选择。最流行(但不一定最容易上手)的是 emacs(以及 XEmacs)和 vi。vi 编辑器 学习起来比较困难,但它总是可用且始终能正常工作。

推荐使用的简单 GUI 编辑器是 gedit 或 xed,具体取决于哪个可用。可以通过桌面菜单或命令行启动:

$ gedit filename &

末尾的 “&” 表示该命令应在“后台”执行。或者简单地说,在命令完成之前就会显示下一个命令提示符。GUI 应用程序最 好以这种方式启动。

这些示例中的 “filename” 当然也可以是路径。例如,查看系统的主要日志文件:

# less /var/log/syslog

要跳转到文件末尾,请在 “less” 运行时按 shift-G。

请注意,在某些计算机上,日志文件只能由 root 用户访问。

A.4 root 用户

所有 Linux 计算机都有一个名为 “root” 的用户,其 ID 为 0。此用户也称为超级用户(superuser)。该用户的特殊之处在于 它被允许做任何事情。其他每个用户对访问文件和资源都有限制。并非所有操作都允许每个用户执行。这些限制不适用于 root 用户。

这不仅仅是多用户计算机上的隐私问题。被允许做任何事情包括只需在 shell 提示符下键入一个简单的命令即可删除硬盘上 的所有数据。它还包括其他几种可能误删数据、使计算机无法使用或使系统容易受到攻击的方式。Linux 系统的基本假设是,无论谁是 root 用 户,都知道自己在做什么。计算机不会向 root 用户询问“你确定吗?”之类的问题。

以 root 身份工作对于系统维护(包括软件安装)是必要的。避免搞砸的诀窍是在按下 ENTER 之前思考,并确保命令完全按 照要求输入。严格遵循安装说明通常是安全的。在没有理解清楚具体作用之前,不要做任何修改。如果相同的命令可以以非 root 用户的身份 重复执行(可能涉及其他文件),可以尝试以该用户身份执行看看会发生什么。

由于成为 root 用户的危险性,以 root 身份运行命令的常见方式是使用 sudo 命令。例如,查看主要日志文件:

$ sudo less /var/log/syslog

这并不总是有效,因为系统需要配置为允许用户使用 “sudo”。系统要求输入用户的密码(而不是 root 的密码)。

第二种方法是输入 “su” 并启动一个会话,在该会话中每个命令都以 root 身份执行。当需要以 root 身份完成多项任务时,这 很方便,但这也意味着更容易忘记自己是 root 用户,并不过脑子地输入错误的内容。请保持 root 会话的简短。

$ su
Password:
# less /var/log/syslog

这次需要输入 root 的密码。

shell 提示符的变化表示身份从普通用户变为 root。如有疑问,可以输入 “whoami” 查看当前的用户名。

在某些系统上,sudo 适用于相关用户,但可能仍然希望以 root 身份启动一个会话。如果无法使用 “su”(主要是因为不知道 root 密码),简单的替代方案是:

$ sudo su
#

A.5 精选命令

最后,这里有几个常用的 Linux 命令。

一些文件操作命令(可能最好使用 GUI 工具来完成这些操作):

  • cp – 复制文件。

  • rm – 删除文件。

  • mv – 移动文件。

  • rmdir – 删除目录。

还有一些推荐普遍了解的命令:

  • ls – 列出当前目录(或指定时列出其他目录)中的所有文件。 “ls -l” 列出文件及其属性。

  • lspci – 列出总线上的所有 PCI(及 PCIe)设备。 用于检查 Xillybus 是否已被检测为 PCIe 外设。 也可以尝试 lspci -v、lspci -vv 和 lspci -n。

  • lsusb – 列出总线上的所有 USB 设备。 用于检查 XillyUSB 是否已被检测为外设。 也可以尝试 lsusb -v 和 lsusb -vv。

  • cd – 更改目录。

  • pwd – 显示当前目录。

  • cat – 将文件发送到标准输出。如果没有给定参数,则使用标准输入。此命令的原始用途是连接文件,但最终成为了用于文件的纯文本输 入输出的瑞士军刀。

  • man – 显示命令的手册页。也可以尝试 “man -a”(有时一个命令有多个手册页)。

  • less – 终端分页器。逐页显示文件或来自标准输入的数据。参见上文。也用于显示命令的长输出。例如:

    $                ls               -l   |       less
    
  • head – 显示文件的开头部分。

  • tail – 显示文件的末尾部分。或者更好的是,使用 -f 标志: 显示末尾加上新到达的行。这对于日志文件非常有用,例如(以 root 身份):

    #                  tail           -f               /var/log/syslog
    
  • diff – 比较两个文本文件。如果没有任何输出,则文件相同。

  • cmp – 比较两个二进制文件。如果没有任何输出,则文件相同。

  • hexdump – 以整洁的格式显示文件内容。推荐使用标志 -v 和 -C。

  • df – 显示已挂载的磁盘以及每个磁盘剩余的空间。更好的是 “df -h”。

  • make – 按照 Makefile 中的规则尝试构建(编译)项目。

  • gcc – GNU C 编译器。

  • ps – 获取正在运行的进程列表。“ps a”、“ps au” 和 “ps aux” 将提供不同数量的信息。

还有几个高级命令:

  • grep – 在文件或标准输入中搜索文本模式。该模式是正则表达式,但如果只是普通文本,则搜索该字符串。例如,在主日志文件中不区分 大小写地搜索单词 “xillybus”,并逐页显示输出:

    #       grep       -i      xillybus   /var/log/syslog   |   less
    
  • find – 查找文件。它的参数语法很复杂,但可以根据名称、年龄、类型或你能想到的任何条件来查找文件。参见手册页。