@geekpi
This commit is contained in:
Xingyu Wang 2020-06-23 12:11:04 +08:00
parent aea11f487d
commit cf3825b38d

View File

@ -1,6 +1,6 @@
[#]: collector: (lujun9972) [#]: collector: (lujun9972)
[#]: translator: (geekpi) [#]: translator: (geekpi)
[#]: reviewer: ( ) [#]: reviewer: (wxy)
[#]: publisher: ( ) [#]: publisher: ( )
[#]: url: ( ) [#]: url: ( )
[#]: subject: (5 ways to examine the content of files on Linux) [#]: subject: (5 ways to examine the content of files on Linux)
@ -9,16 +9,18 @@
在 Linux 上查看文件内容的 5 种方法 在 Linux 上查看文件内容的 5 种方法
====== ======
如何使用 cat、more、head 和 tail 命令查看 Linux 文件的内容,而不仅仅是文本文件。
[mari lezhava / Unsplash][1] [(CC0)][2]
Linux 提供了许多命令来查看文件的内容,包 括**cat**、**more**、**head** 和 **tail**,但这只是一个开始 > 如何使用 cat、more、head 和 tail 命令查看 Linux 文件的内容,而不仅仅是文本文件。
一方面,即使是最显而易见的命令也有很多许多用户不会去使用的选项。还有一些不太明显的命令提供了一些独特的功能。在本文中,我们将同时提供查看文件内容的命令和用于定制这些视图以更好地满足你的需求的选项。 ![](https://img.linux.net.cn/data/attachment/album/202006/23/121047zz9gwx9dwz155m2w.jpg)
Linux 提供了许多命令来查看文件的内容,包 括 `cat`、`more`、`head` 和 `tail`,但这只是一个开始。
一方面,即使是最显而易见的命令也有很多许多用户不会去使用的选项。还有一些普普通通的命令提供了一些独特的功能。在本文中,我们将介绍查看文件内容的命令,以及如何定制这些视图以更好地满足你的需求的选项。
### cat ### cat
cat 命令将文本文件的全部内容发送到终端窗口以供查看。实际上,如果你输入 “cat”然后输入包含数千行的文件名那么这些行将以极快的速度在你的窗口中滚动你将无法看到除了最后一屏外的其他文本。对于 Linux 用户来说 cat 命令很熟悉,但即使这个基本命令也提供了许多有用的选项,例如对输出中的行进行编号,这是我们许多人可能从未使用过的。扩展一下,不仅可以对行进行编号,你还可以选择如何编号。 `cat` 命令将文本文件的全部内容发送到终端窗口以供查看。实际上,如果你输入 `cat`,然后输入包含数千行内容的文件名,那么这些行将以极快的速度在你的窗口中滚动,你将无法看到除了最后一屏外的其他文本。对于 Linux 用户来说 `cat` 命令很熟悉,但即使这个基本命令也提供了许多有用的选项,例如对输出中的行进行编号,这是我们许多人可能从未使用过的。更进一步,你不仅可以对行进行编号,还可以选择如何编号。
对每行进行编号就像这样: 对每行进行编号就像这样:
@ -36,7 +38,7 @@ $ cat -n msg
10 s. 10 s.
``` ```
你也可以仅对内容行编号。 请注意,对于此命令,仅包含空格的行不被视为“空”,而是会被编号。 你也可以只对有内容的行编号。请注意,对于此命令,仅包含空格的行不被视为“空”,而是会被编号。
``` ```
$ cat -b msg $ cat -b msg
@ -52,7 +54,7 @@ $ cat -b msg
5 s. 5 s.
``` ```
cat 命令允许你使用 -s 选项忽略重复的空白行,但是你必须添加另一个命令来完全禁止空白行 `cat` 命令允许你使用 `-s` 选项忽略重复的空白行,但是要完全忽略空白行你必须添加另一个命令。
``` ```
$ cat -s msg $ cat -s msg
@ -67,7 +69,7 @@ bye!
s. s.
``` ```
要忽略所有空白行,只需如下将 **cat** 的输出通过管道传递给 **grep** 命令。 点(.)匹配包含空白字符的文本,因此它将显示仅包含空格且看起来为空的行 要忽略所有空白行,只需如下将 `cat` 的输出通过管道传递给 `grep` 命令。 点(`.`匹配包含任意字符的文本因此它将显示任意非空的行用于结束一行的回车换行做匹配LCTT 译注:此处原文有误,径改)
``` ```
$ cat msg | grep . $ cat msg | grep .
@ -78,7 +80,7 @@ bye!
s. s.
``` ```
**-E** 选项通过在每行末尾加 $ 符提供视觉提示,来显示行尾是否还有多余的空格。 `-E` 选项通过在每行末尾加 `$` 符提供视觉提示,来显示行尾是否还有多余的空格。
``` ```
$ cat -E msg $ cat -E msg
@ -94,7 +96,7 @@ $
s.$ s.$
``` ```
使用 **-A** 时,每行的末尾都有 $ 字符,并且制表符都显示为 **^I** 而不是空白。 使用 `-A` 时,既可以在每行的末尾显示 `$` 字符,并且制表符会显示为 `^I` 而不是空白。
``` ```
$ cat -A msg $ cat -A msg
@ -103,7 +105,7 @@ $
I hope you are having a wonderful day!$ I hope you are having a wonderful day!$
$ $
$ $
Thats it for ^Inow$ Thats it for ...^Inow$
$ $
bye!$ bye!$
$ $
@ -112,7 +114,7 @@ s.$
### 使用 head 和 tail 显示文件部分内容 ### 使用 head 和 tail 显示文件部分内容
**head** 和 **tail** 显示文件的头部或底部,默认为十行。 你可以使用 -3显示 3 行)或 -11显示 11 行)之类的字符串来指定要查看的其他行数。**tail** 命令与 **head** 的工作方式相同,但是显示文件的底部而不是头部。 `head``tail` 显示文件的头部或尾部,默认为十行。 你可以使用 `-3`(显示 3 行)或 `-11`(显示 11 行)之类的字符串来指定要查看的其它行数。`tail` 命令与 `head` 的工作方式相同,但是显示文件的尾部而不是头部。
``` ```
$ head -3 msg $ head -3 msg
@ -124,7 +126,7 @@ bye!
s. s.
``` ```
你还可以结合使用 head 和 tail 命令来查看文件中间的文本。 你只需要选择起点和想要查看行数即可。 在此例中,命令将在文件中显示第二个一百行,并在 **cat** 的帮助下为这些行编号。 你还可以结合使用 `head``tail` 命令来查看文件中间的文本。你只需要选择起点和想要查看行数即可。在此例中,命令将在文件中显示第二个一百行,并在 `cat` 的帮助下为这些行编号。
``` ```
$ cat -b mybigfile | head -200 | tail -100 $ cat -b mybigfile | head -200 | tail -100
@ -134,11 +136,11 @@ $ cat -b mybigfile | head -200 | tail -100
### 使用 more 或者 less 浏览一屏文本 ### 使用 more 或者 less 浏览一屏文本
**more** 命令是一次浏览一屏内容的选择,而 **less** 通过使用上下键盘箭头增加了在文件中上下移动的能力,这样你就可以扫描,然后备份到文件中 `more` 命令是一次浏览一屏内容的自然之选,而 `less` 通过使用上下键盘箭头增加了在文件中上下移动的能力,这样你就可以遍历内容,然后在文件中回退
### 使用 od 查看文本的两种方法 ### 使用 od 查看文本的两种方法
**od**(八进制转储)命令能够以常规文本和一系列 ASCII 值(即该文本在文件中的实际编码方式)的形式查看。 在下面的例子中可以看到,带编号的行显示了 ASCII 数字值,而其他行则显示了文本和不可打印的字符。 `od`(八进制转储)命令能够以常规文本和一系列 ASCII 值(即该文本在文件中的实际编码方式)的形式查看文件。在下面的例子中可以看到,带编号的行显示了 ASCII 数字值,而其他行则显示了文本和不可打印的字符。
``` ```
$ od -bc msg $ od -bc msg
@ -156,9 +158,9 @@ $ od -bc msg
s . \n s . \n
``` ```
请注意,换行符显示为 **\n** (八进制 012而制表符显示为 **\t**(八进制 011)。 请注意,换行符显示为 `\n`(八进制 `012`),而制表符显示为 `\t`(八进制 `011`)。
**od** 命令特别有用的用途之一是查看非文本文件以获取标识文件类型的信息。 在这里,我们看到 **JFIF**JPEG 文件交换格式)标签,该标签让 **file** 之类报告文件类型的命令将它标示为 jpg 文件。 这里还有很多其他有用的信息,特别是如果你对这些文件的格式感到好奇的话。 `od` 命令特别有用的用途之一是查看非文本文件以获取可以标识文件类型的信息。在这里,我们看到 `JFIF`JPEG 文件交换格式)标签,该标签让 `file` 之类报告文件类型的命令将它标示为 jpg 文件。这里还有很多其他有用的信息,特别是如果你对这些文件的格式感到好奇的话。
在接下来的命令中,我们查看 jpg 文件的开始部分。 在接下来的命令中,我们查看 jpg 文件的开始部分。
@ -178,7 +180,7 @@ $ od -bc arrow.jpg | head -12
022 023 022 020 023 017 020 020 020 377 333 \0 C 001 003 003 022 023 022 020 023 017 020 020 020 377 333 \0 C 001 003 003
``` ```
如果我们要 **file** 命令提供有关此图像的信息我们可能会看到类似这样的信息。file 命令从文件开头的数据中提取所有这些描述性信息。 如果我们要 `file` 命令提供有关此图像的信息,我们可能会看到类似下面这样的信息。`file` 命令从文件开头的数据中提取了所有这些描述性信息:
``` ```
$ file arrow.jpg $ file arrow.jpg
@ -187,8 +189,7 @@ arrow.png: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segme
### 使用 jp2a 将文件视为基于文本的图像 ### 使用 jp2a 将文件视为基于文本的图像
如果你只能在命令行工作,并且想了解特定图像包含的内容,那么可以使用 `jp2a`jpeg to ascii之类的工具提供字符渲染。图像在这种格式下的识别程度取决于文件。不要有太多期待因为你将看到的图像版本是“低分辨率”下的测试这是一只分辨率很低的帝王企鹅。请离远点看
如果你只能在命令行,并且想了解特定图像包含的内容,那么可以使用 **jp2a**jpeg to ascii之类的工具提供字符再现。 图像在这种格式下的识别程度取决于文件。不要太期待,因为你将看到的图像版本是“低分辨率”下的测试! 这是一只分辨率很低的帝王企鹅。
``` ```
$ jp2a Emperor_Penguin.jpg $ jp2a Emperor_Penguin.jpg
@ -219,9 +220,7 @@ MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
#### 总结 #### 总结
Linux 上有很多命令可以通过各种方式查看文件的内容。 其中一些选项在你需要处理文件内容时可能会非常有用。 其他的只是……有趣。 Linux 上有很多命令可以通过各种方式查看文件的内容。其中一些选项在你需要处理文件内容时可能会非常有用。其它的只是……有趣。
加入 [Facebook][3] 和 [LinkedIn][4] 上的 Network World 社区,评论热门主题。
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -230,7 +229,7 @@ via: https://www.networkworld.com/article/3561490/5-ways-to-examine-the-content-
作者:[Sandra Henry-Stocker][a] 作者:[Sandra Henry-Stocker][a]
选题:[lujun9972][b] 选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi) 译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出