文件内容与比较

LinuxBeginner
立即练习

简介

欢迎参加这个 Linux 文件操作实践实验!如果你刚接触 Linux,不用担心,我们会逐步指导你完成每个步骤。在本实验中,你将学习如何查看文件内容、查看文件的特定部分,以及比较文件。这些都是使用和理解 Linux 文件系统所需的基础技能。

输出文件内容

首先,在桌面上打开终端,或者切换到实验环境中的终端标签页。

终端窗口截图

打开终端后,你应该能看到命令提示符,通常以 $ 符号结尾。你将在这里输入命令。

现在使用 cat 命令显示文件内容:

  1. 在终端中输入以下命令,然后按 Enter 键:
cat /tmp/hello

这里,/tmp/hello 是要查看的文件路径。/tmp 是系统中的一个目录,hello 是该目录中的文件名。

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

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

显示带行号的文件内容

现在再次使用 cat 命令,不过这次要为输出内容添加行号。

  1. 在终端中输入以下命令,然后按 Enter 键:
cat -n /tmp/hello

这里的 -n 称为选项或标志。它会让 cat 为所有输出行添加行号。

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

处理较长的文件并需要引用特定行时,这个功能非常有用。

输出文件的开头几行

接下来使用 head 命令。顾名思义,head 用于查看文件的开头部分,也就是文件的「头部」。

  1. 在终端中输入以下命令,然后按 Enter 键:
head -n1 /tmp/hello

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

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

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

查看文件开头的几个字节

现在再次使用 head 命令,不过这次查看文件开头指定数量的字节。

  1. 在终端中输入以下命令,然后按 Enter 键:
head -c1 /tmp/hello

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

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

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

输出文件的末尾几行

现在学习 tail 命令。正如你可能猜到的,tailhead 相反,用于显示文件的末尾部分。

  1. 在终端中输入以下命令,然后按 Enter 键:
tail -n1 /tmp/hello

head 一样,-n1 选项告诉 tail 只显示一行,这里显示的是文件的最后一行。

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

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

查看文件末尾的几个字节

与使用 head 的方法类似,你也可以使用 tail 显示文件末尾指定数量的字节。

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

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

  1. 接下来尝试查看最后两个字节。输入以下命令,然后按 Enter 键:
tail -c2 /tmp/hello
  1. 现在你应该能看到:
!

-c2 选项告诉 tail 显示文件最后 2 个字节(字符)。在本例中,显示的是感叹号,它是文件中最后一个可见字符。

比较文件

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

  1. 首先确认当前位于正确的目录中。在终端中输入以下命令,然后按 Enter 键:
cd ~/project

这会将当前目录切换到主目录中的「project」目录。~ 符号是主目录的快捷表示。

  1. 现在比较两个文件。输入以下命令,然后按 Enter 键:
diff file1 file2

该命令会让 diff 比较 file1file2 的内容。

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

下面解释这段输出的含义。diff 命令会输出一组说明,描述需要进行哪些更改,才能让第一个文件与第二个文件完全一致。无论哪个文件先创建或修改,结果都不受影响;diff 只比较执行命令时两个文件的内容。

  • 1c1:表示需要将第一个文件的第 1 行更改为与第二个文件的第 1 行一致。
  • < this is file1< 符号表示这一行来自第一个文件(file1)。
  • ---:这是 file1file2 内容之间的分隔符。
  • > this is file2> 符号表示这一行来自第二个文件(file2)。

简单来说,diff 显示了两个文件第 1 行的内容不同。要让 file1file2 一致,就需要将「this is file1」替换为「this is file2」。

比较目录

最后,使用 diff 命令比较整个目录。

  1. 在终端中输入以下命令,然后按 Enter 键:
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 目录中有 4 个文件不在 Code 目录中。

总结

恭喜你完成了「文件内容与比较」实验。下面回顾你学到的内容:

  1. 使用 cat 查看文件的全部内容。
  2. 学习使用 cat -n 查看带行号的文件内容。
  3. 使用 head 按行和按字节查看文件开头的内容。
  4. 使用 tail 按行和按字节查看文件末尾的内容。
  5. 学习使用 diff 比较文件内容。
  6. 最后,使用 diff -r 比较整个目录。

这些命令是 Linux 中的基础工具。在继续使用 Linux 的过程中,你会经常使用它们来检查和比较文件及目录。

如果忘记了某个命令的用法,可以输入 man,后面跟命令名称(例如 man cat),查看该命令的手册页。手册页会详细介绍该命令支持的所有选项。

继续在不同的文件和目录上练习这些命令,逐渐熟悉它们。使用得越多,操作起来就会越自然!