TranslateProject/published/202307/20230627.0 ⭐️⭐️ Using cat Command in Linux.md
2023-07-31 22:27:30 +08:00

256 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[#]: subject: "Using cat Command in Linux"
[#]: via: "https://itsfoss.com/cat-command/"
[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-16025-1.html"
在 Linux 中使用 cat 命令
======
![][0]
> `cat` 命令的用途不仅仅是显示文件内容。
`cat` 命令用于打印文本文件的文件内容。至少,大多数 Linux 用户都是这么做的,而且没有什么问题。
`cat` 实际上代表 “<ruby>连接<rt>concatenate</rt></ruby>”,创建它是为了 [合并文本文件][1]。但只要有一个参数,它就会打印文件内容。因此,它是用户在终端中读取文件而无需任何其他选项的首选。
### 在 Linux 中使用 cat 命令
要使用 `cat` 命令,你必须遵循给定的命令语法:
```
cat [options] Filename(s)
```
这里:
- `[options]` 用于修改 `cat` 命令的默认行为,例如使用 `-n` 选项获取每行的数字。
- `Filename` 是你输入要使用的文件的文件名的位置。
为了简单起见,我将在本指南中使用名为 `Haruki.txt` 的文本文件,其中包含以下文本行:
```
Hear the Wind Sing (1979)
Pinball, 1973 (1980)
A Wild Sheep Chase (1982)
Hard-Boiled Wonderland and the End of the World (1985)
Norwegian Wood (1987)
Dance Dance Dance (1990)
South of the Border, West of the Sun (1992)
The Wind-Up Bird Chronicle (1994)
Sputnik Sweetheart (1999)
Kafka on the Shore (2002)
After Dark (2004)
1Q84 (2009-2010)
Colorless Tsukuru Tazaki and His Years of Pilgrimage (2013)
Men Without Women (2014)
Killing Commendatore (2017)
```
那么,在没有任何选项的情况下使用时,输出会是什么? 好吧,让我们看一下:
```
cat Haruki.txt
```
![use cat command in Linux][2]
正如你所看到的,它打印了整个文本文件!
但你可以做的远不止这些。让我向你展示一些实际例子。
#### 1、创建新文件
大多数 Linux 用户使用 `touch` 命令来 [创建新文件][3],但使用 `cat` 命令也可以完成相同的操作!
在这种场景下,`cat` 命令比 `touch` 命令有一个优势,因为你可以在创建文件时向文件添加文本。听起来很酷。不是吗?
为此,你需要使用 `cat` 命令,将文件名附加到 `>` 后面,如下所示:
```
cat > Filename
```
例如,在这里,我创建了一个名为 `NewFile.txt` 的文件:
```
cat > NewFile.txt
```
当你这样做了,就会有一个闪烁的光标要求你写一些东西,最后,你可以使用 `Ctrl + d` 来保存更改。
**如果你想创建一个空文件,则只需按 `Ctrl + d` 而不进行任何更改。**
![Using cat command][4]
这就好了!现在,你可以使用 `ls` 命令来显示 [当前工作目录的内容][5]
![use the ls command to list the contents of the current working directory][6]
#### 2、将文件内容复制到另一个文件
考虑一个场景,你要将 `FileA` 的文件内容重定向到 `FileB`
当然,你可以复制和粘贴。但是如果有几百或几千行怎么办?
简单。你可以使用 `cat` 命令来重定向数据流。为此,你必须遵循给定的命令语法:
```
cat FileA > FileB
```
> 🚧 如果使用上述语法重定向文件内容,它将删除 `FileB` 的文件内容,然后重定向 `FileA` 的文件内容。
例如,我将使用两个文本文件 `FileA``FileB`,其中包含以下内容:
![check the file contents using the cat command][7]
现在,如果我使用从 `FileA``FileB` 的重定向,它将删除 `FileB` 的数据,然后重定向 `FileA` 的数据:
```
cat FileA > FileB
```
![redirect the file content using the cat command][8]
同样,你可以对多个文件执行相同的操作:
```
cat FileA FileB > FileC
```
![redirect file content of multiple files using the cat command][9]
可以看到,上面的命令删除了 `FileC` 的数据,然后重定向了 `FileA``FileB` 的数据。
#### 3、将一个文件的内容附加到另一个文件
有时你想要将数据附加到现有数据,在这种情况下,你必须使用 `>>` 而不是单个 `>`
```
cat FileA >> FileB
```
例如,在这里,我将把两个文件 `FileA``FileB` 重定向到 `FileC`
```
cat FileA.txt FileB.txt >> FileC.txt
```
![redirect file content without overriding using the cat command][10]
如你所见,它保留了 `FileC.txt` 的数据,并将数据附加在末尾。
> 💡 你可以使用 `>>` 向现有文件添加新行。使用 `cat >> filename` 并开始添加所需的文本,最后使用 `Ctrl+D` 保存更改。
#### 4、显示行数
你可能会遇到这样的情况,你想查看行数,这可以使用 `-n` 选项来实现:
```
cat -n File
```
例如,在这里,我将 `-n` 选项与 `Haruki.txt` 一起使用:
![get the number of the lines in the cat command][11]
#### 5、删除空行
在文本文档中留下多个空白行? `cat` 命令将为你修复它!
为此,你所要做的就是使用 `-s` 标志。
但使用 `-s` 标志有一个缺点。你仍然留有一行空白:
![remove blank lines with the cat command][12]
正如你所看到的,它有效,但结果接近预期。
那么如何删除所有空行呢? 通过管道将其传递给 `grep` 命令:
```
cat File | grep -v '^$'
```
这里,`-v` 标志将根据指定的模式过滤掉结果,`'^$'` 是匹配空行的正则表达式。
以下是我在 `Haruki.txt` 上使用它时的结果:
```
cat Haruki.txt | grep -v '^$'
```
![remove all the blank lines in text files using the cat command piped with grep regular expression][13]
当获得完美的输出,你可以将其重定向到文件以保存输出:
```
cat Haruki.txt | grep -v '^$' > File
```
![save output of cat command by redirection][14]
### 这就是你到目前为止所学到的
以下是我在本教程中解释的内容的快速摘要:
| 命令 | 描述 |
| :- | :- |
| `cat <Filename>` | 将文件内容打印到终端。 |
| `cat >File` | 创建一个新文件。 |
| `cat FileA > FileB` | `FileB` 的文件内容将被 `FileA` 覆盖。|
| `cat FileA >> FileB` | `FileA` 的文件内容将附加到 `FileB` 的末尾。|
| `cat -n File` | 显示行数,同时省略文件的文件内容。 |
| `cat File | more` | 将 `cat` 命令通过管道连接到 `more` 命令以处理大文件。请记住,它不能让你向上滚动! |
| `cat File | less` | 将 `cat` 命令通过管道传输到 `less` 命令,这与上面类似,但它允许你双向滚动。|
| `cat File | grep -v '^$'` | 从文件中删除所有空行。|
### 🏋️ 练习时间
如果你学到了新东西,用不同的可能性来执行它是最好的记忆方式。
为此,你可以使用 `cat` 命令进行一些简单的练习。它们将是超级基本的,就像 `cat` 一样是[最基本的命令之一][15]。
出于练习目的,你可以 [使用 GitHub 上的文本文件][16]。
- 如何使用 `cat` 命令创建空文件?
-`cat` 命令生成的输出重定向到新文件 `IF.txt`
- 能否将三个或更多文件输入重定向到一个文件? 如果是,该如何做?
*题图MJ/f06c9b9c-689e-4a67-abe9-0487e26bd34b*
--------------------------------------------------------------------------------
via: https://itsfoss.com/cat-command/
作者:[Sagar Sharma][a]
选题:[lkxed][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/sagar/
[b]: https://github.com/lkxed/
[1]: https://linuxhandbook.com:443/merge-files/
[2]: https://itsfoss.com/content/images/2023/06/use-cat-command-in-Linux.png
[3]: https://itsfoss.com/create-files/
[4]: https://itsfoss.com/content/images/2023/06/Cat.svg
[5]: https://itsfoss.com/list-directory-content/
[6]: https://itsfoss.com/content/images/2023/06/use-the-ls-command-to-list-the-contents-of-the-current-working-directory.png
[7]: https://itsfoss.com/content/images/2023/06/check-the-file-contents-using-the-cat-command.png
[8]: https://itsfoss.com/content/images/2023/06/redirect-the-file-content-using-the-cat-command.png
[9]: https://itsfoss.com/content/images/2023/06/redirect-file-content-of-multiple-files-using-the-cat-command.png
[10]: https://itsfoss.com/content/images/2023/06/redirect-file-content-without-overriding-using-the-cat-command.png
[11]: https://itsfoss.com/content/images/2023/06/get-the-number-of-the-lines-in-the-cat-command.png
[12]: https://itsfoss.com/content/images/2023/06/remove-blank-lines-with-the-cat-command.png
[13]: https://itsfoss.com/content/images/2023/06/remove-all-the-blank-lines-in-text-files-using-the-cat-command-piped-with-grep-regular-expression.png
[14]: https://itsfoss.com/content/images/2023/06/save-output-of-cat-command-by-redirection.png
[15]: https://learnubuntu.com:443/top-ubuntu-commands/
[16]: https://github.com:443/itsfoss/text-files
[0]: https://img.linux.net.cn/data/attachment/album/202307/23/144250ljc3zwgjt7llznxj.jpg