文件内容查看与比较

LinuxBeginner
立即练习

介绍

欢迎参加这个关于 Linux 文件操作的动手实验!如果你是 Linux 新手,请不要担心。我们会仔细引导你完成每一个步骤。在本实验中,你将学习如何查看文件内容、查看文件的特定部分以及比较文件。这些都是帮助你导航和理解 Linux 文件系统的基本技能。

打印文件内容

首先,请在桌面打开一个终端,或者切换到实验环境中的终端选项卡。

终端窗口截图

打开终端后,你应该会看到一个命令行提示符,通常以 $ 符号结尾。这就是我们输入命令的地方。

现在,让我们使用 cat 命令来显示文件的内容:

  1. 在终端中,输入以下命令并按回车键:
cat /tmp/hello

这里,/tmp/hello 是我们要查看的文件路径。/tmp 是系统中的一个目录(文件夹),而 hello 是该目录下的文件名。

  1. 按下回车键后,你应该能看到文件的内容:
Hi,
I am Labby!

这就是 /tmp/hello 文件中的全部内容。cat 命令已将其显示在我们的终端中。

显示带行号的文件内容

现在,让我们再次使用 cat 命令,但这次我们要在输出中添加行号。

  1. 在终端中,输入以下命令并按回车键:
cat -n /tmp/hello

这里的 -n 被称为选项或标志。它告诉 cat 对所有输出行进行编号。

  1. 你现在应该能看到带有行号的文件内容:
     1 Hi,
     2 I am Labby!

当你处理较长的文件并需要引用特定行时,这会非常有帮助。

打印文件的前几行

接下来,我们将使用 head 命令。顾名思义,head 用于查看文件的开头或「头部」。

  1. 在终端中,输入以下命令并按回车键:
head -n1 /tmp/hello

这里,-n1 是一个选项,告诉 head 只显示第一行。你可以将 1 更改为任何数字以显示相应数量的行。

  1. 你应该看到如下输出:
Hi,

这只是文件的第一行。默认情况下,如果不带 -n1 选项,head 会显示文件的前 10 行。

查看文件的前几个字节

现在我们将再次使用 head 命令,但这次是为了查看文件开头特定数量的字节。

  1. 在终端中,输入以下命令并按回车键:
head -c1 /tmp/hello

-c1 选项告诉 head 只显示文件的第一个字节(字符)。与 -n 类似,你可以将 1 更改为任何数字以查看相应数量的字节。

  1. 你应该看到如下输出:
H

这只是文件的第一个字符。在文本文件中,每个字符通常占用一个字节。

打印文件的最后几行

现在让我们学习 tail 命令。正如你可能猜到的,tailhead 的反面——它显示文件的末尾。

  1. 在终端中,输入以下命令并按回车键:
tail -n1 /tmp/hello

head 一样,-n1 选项告诉 tail 只显示一行,在本例中是文件的最后一行。

  1. 你应该看到如下输出:
I am Labby!

这是我们文件的最后一行。如果不带 -n1 选项,tail 默认会显示最后 10 行。

查看文件的最后几个字节

与我们在 head 中所做的类似,我们可以使用 tail 来显示文件末尾特定数量的字节。

  1. 首先,让我们尝试查看最后一个字节。在终端中,输入以下命令并按回车键:
tail -c1 /tmp/hello

你可能看不到任何输出。这是因为最后一个字符很可能是一个换行符,它是不可见的。

  1. 让我们尝试查看最后两个字节。输入以下命令并按回车键:
tail -c2 /tmp/hello
  1. 现在你应该看到:
!

-c2 选项告诉 tail 显示文件的最后 2 个字节(字符)。在这种情况下,它显示的是感叹号,这是我们文件中最后一个可见字符。

比较文件

现在我们将学习如何使用 diff 命令来比较两个文件并查看它们之间的差异。

  1. 首先,确保我们在正确的目录(文件夹)中。输入以下命令并按回车键:
cd ~/project

这会将我们的当前目录更改为家目录中的 project 文件夹。~ 符号是家目录的快捷方式。

  1. 现在,让我们比较两个文件。输入以下命令并按回车键:
diff file1 file2

这告诉 diff 比较 file1file2 的内容。

  1. 你应该看到类似这样的输出:
1c1
< this is file1
---
> this is file2

让我们分析一下这个输出的含义。diff 命令生成的输出描述了需要进行哪些更改才能使第一个文件与第二个文件完全相同。哪个文件先创建或修改并不重要;diff 只会在你运行命令时比较它们的内容。

  • 1c1:这表示第一个文件中的第 1 行需要被修改change)以匹配第二个文件中的第 1 行。
  • < this is file1< 符号表示来自第一个文件(file1)的行。
  • ---:这是 file1file2 内容之间的分隔符。
  • > this is file2> 符号表示来自第二个文件(file2)的行。

简单来说,diff 向我们展示了两个文件之间第 1 行的内容是不同的。要使 file1file2 匹配,需要将「this is file1」这一行替换为「this is file2」。

比较目录

最后,让我们使用 diff 命令来比较整个目录。

  1. 在终端中,输入以下命令并按回车键:
diff -r ~/Desktop ~/Code

-r 选项告诉 diff 递归地比较子目录。~/Desktop~/Code 是我们要比较的两个目录的路径。

  1. 你可能会看到类似这样的输出:
Only in /home/labex/Desktop: code.desktop
Only in /home/labex/Desktop: gedit.desktop
Only in /home/labex/Desktop: gvim.desktop
Only in /home/labex/Desktop: xfce4-terminal.desktop

此输出显示 Desktop 目录包含四个不在 Code 目录中的文件。

总结

恭喜!你已经完成了「文件内容查看与比较」实验。让我们回顾一下你学到的内容:

  1. 你使用了 cat 来查看文件的完整内容。
  2. 你学习了如何使用 cat -n 查看带有行号的文件内容。
  3. 你使用了 head 通过行数和字节数来查看文件的开头。
  4. 你使用了 tail 通过行数和字节数来查看文件的末尾。
  5. 你学习了如何使用 diff 来比较文件的内容。
  6. 最后,你使用了 diff -r 来比较整个目录。

这些命令是 Linux 中的基础工具。随着你继续使用 Linux,你会发现自己经常使用这些命令来检查和比较文件及目录。

请记住,如果你忘记了如何使用某个命令,可以随时输入 man 后跟命令名称(例如 man cat)来查看该命令的帮助手册。这将为你提供有关每个命令所有可用选项的详细信息。

继续在不同的文件和目录上练习这些命令,以变得更加熟练。你使用得越多,它们就会变得越自然!