From 3c83a5663333cae6c529ce3d243329c854e6a9d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E8=8B=8F=E8=90=8Cm?= <3279471564@qq.com> Date: Thu, 30 May 2024 15:01:34 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=94=E8=AE=B0+=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...200\201whereis\345\221\275\344\273\244.md" | 2 +- ...71\347\232\204\347\256\241\347\220\206.md" | 479 ++++++++++++++++++ 2 files changed, 480 insertions(+), 1 deletion(-) create mode 100644 "42 \345\210\230\350\213\217\350\220\214/20240529_\346\226\207\344\273\266\345\206\205\345\256\271\347\232\204\347\256\241\347\220\206.md" diff --git "a/42 \345\210\230\350\213\217\350\220\214/20240528_touch\343\200\201find\343\200\201grep\343\200\201whereis\345\221\275\344\273\244.md" "b/42 \345\210\230\350\213\217\350\220\214/20240528_touch\343\200\201find\343\200\201grep\343\200\201whereis\345\221\275\344\273\244.md" index 6d2e234..b826492 100644 --- "a/42 \345\210\230\350\213\217\350\220\214/20240528_touch\343\200\201find\343\200\201grep\343\200\201whereis\345\221\275\344\273\244.md" +++ "b/42 \345\210\230\350\213\217\350\220\214/20240528_touch\343\200\201find\343\200\201grep\343\200\201whereis\345\221\275\344\273\244.md" @@ -282,4 +282,4 @@ 通过这套操作题和综合操作题,你可以全面地了解和应用Linux系统中与文件和内容查询相关的常用命令。 -![20240528_综合操作题](./img/20240528_综合操作题.png) \ No newline at end of file +![20240528_综合操作题](./img/20240528_综合操作题.png) \ No newline at end of file diff --git "a/42 \345\210\230\350\213\217\350\220\214/20240529_\346\226\207\344\273\266\345\206\205\345\256\271\347\232\204\347\256\241\347\220\206.md" "b/42 \345\210\230\350\213\217\350\220\214/20240529_\346\226\207\344\273\266\345\206\205\345\256\271\347\232\204\347\256\241\347\220\206.md" new file mode 100644 index 0000000..7232660 --- /dev/null +++ "b/42 \345\210\230\350\213\217\350\220\214/20240529_\346\226\207\344\273\266\345\206\205\345\256\271\347\232\204\347\256\241\347\220\206.md" @@ -0,0 +1,479 @@ +## **查看文件内容**: + +- `cat`:显示文件内容。 + + - `tac`:与`cat`相反,从文件尾部开始显示内容。 + - `more`:分页显示文件内容。 + - `less`:与`more`类似,但提供了更多的导航和搜索功能。 + - `head`:显示文件开头的内容(默认10行)。 + - `tail`:显示文件结尾的内容(默认10行)。 + - `nl`:显示文件内容,并添加行号。 + - `od`:以八进制、十进制、十六进制或其他格式转储文件内容。 + + + + ### `cat`**语法**: + + ```bash +cat [选项] 文件 ... +# 作用:显示文件内容,也可以将多个文件内容连接在一起输出。 + ``` + +**常见用法**: + + - 显示文件内容: + + ```bash + cat 文件名 + ``` + + - 连接多个文件内容: + + ```bash + cat 文件1 文件2 + ``` + + - 使用`-n`选项显示行号: + + ```bash + cat -n 文件名 + ``` + + - 复制文件1、文件2 到文件3 + + ```bash + cat 文件1 文件2 > 文件3 + ``` + +注意:cat会将文件内容一次性全部显示出来,大文件不推荐使用。 + + + + ### `tac`**语法**: + + ```bash +tac 文件 ... +# 作用: 与`cat`相反,从文件尾部开始显示内容到文件开头。命令单词也是反过来的 + ``` + +**常见用法**: + + - 从尾部开始,显示文件内容: + + ```bash + tac 目录/文件名 + ``` + + - 从尾部开始,显示多个文件内容: + + ```bash + tac 文件1 文件2 + ``` + + - 倒序查看 文件的最后5行内容 + + ```bash + tac 文件路径 | head -n 5 + ``` + + + ### `more`**语法**: + + ```bash +more [选项] 文件 +# 作用:分页显示文件内容,每次显示一屏。即按页显示文件内容 + ``` + +**常见用法**: + + - 分页显示文件内容:`more file.txt` + - 使用空格键向下翻页,回车键显示下一行,`q`键退出 + +常用于按页查看大文件,但会先一次性加载整个大文件,导致加载变慢 + + + + ### `less` **语法**: + +- 当你要查看一个大文件时,通常用less命令一页一页加载 + + ```bash + less [选项] 文件 + # 作用:与`more`类似,但提供了更多的导航和搜索功能,如上下滚动、搜索等。 + ``` + +**常见用法**: + + - 类似`more`的分页显示: + + ```bash + less 文件路径 + //向下滚动一页:可以直接按空格键或者 PGDn + //向上滚动一页:按 b 键(代表“backwards”)或 PGUp + ``` + + - 使用上下键、Page Up/Page Down键进行滚动,`/`搜索,`n`下一个匹配,`N`上一个匹配,`q`退出。 + +**常用选项:** + +- **无选项**: + + - 直接使用 `less 文件名` 来查看文件内容。 + +- **-N 或 --line-numbers**: + + - 显示行号。 + +- **-M 或 --long-prompt**: + + - 显示长提示符,包括文件名和行号,百分比。 + +- **-MN** 内容中显示行号,底部显示文件名,行号和百分比 + + - 两者可以组合使用 + +- **-m 或 -i** + + - 搜索时忽略大小写 + +- **+行数**: + + - 打开文件后立即跳转到指定的行数。 + + + + ### `head`**语法**: + +- 当你想要快速查看文件的前几行内容而不必打开整个文件时,可以使用 `head` 命令。 + + ```bash + head [选项] 文件 ... + # 作用:显示文件开头的内容(默认10行)。 + ``` + +**常见用法**: + + - 显示文件开头的10行: + + ```bash + head 文件路径 + ``` + + - 显示多个文件开头的10行: + + ```bash + head 文件1 文件2 + ``` + + - 使用`-n`选项指定行数: + + ```bash + head -n 20 文件 + //显示前20行 + ``` + + - 使用`-q`不显示文件名。当使用多个文件作为输入时,该选项可以省略文件名前的标题 + + ```bash + head -q 文件1 文件2 + ``` + + + + ### `tail`**语法**: + +- tail 用于查看文件的末尾内容 + + ```bash + tail [选项] 文件... + # 作用:显示文件结尾的内容(默认10行)。 + ``` + +**常见用法**: + + - 显示文件结尾的10行: + + ```bash + tail 文件路径 + ``` + + - 显示多个文件结尾的10行: + + ```bash + tail 文件1 文件2 + //加-q不显示文件名 + ``` + + - 使用`-n`选项指定行数: + + ```bash + tail -n 20 文件 + //显示最后20行 + ``` + + - 实时查看文件增长(如日志文件) + + ```bash + tail -n 20 文件路径 + //显示最后20行 + ``` + + - 反向显示文件的最后10行内容(即按从旧到新的顺序显示) + + ```bash + tail -n 10 文件路径 | tac + ``` + +**常用选项**: + +### 使用选项 + +- **-n [行数]**:显示文件的最后指定行数。如果不指定行数,则默认为显示最后10行。 + - 示例:`tail -n 20 logfile.txt` 显示`logfile.txt`文件的最后20行。 +- **-f**:实时追踪文件的变化并输出新增的内容。通常用于监视日志文件的增长。 + - 示例:`tail -f logfile.txt` 实时查看`logfile.txt`文件的增长情况。 +- **-q**:不显示文件名。当使用多个文件作为输入时,该选项可以省略文件名前的标题。 + - 示例:`tail -q -n 10 file1.txt file2.txt` 显示`file1.txt`和`file2.txt`的最后10行,但不显示文件名前的标题。 + + + + ### `nl`**语法**: + + ```bash +nl [选项] 文件... +# 作用: 显示文件内容,并添加行号(空行不加)。 + ``` + +**常见用法**: + + - 为文件内容添加行号:`nl file.txt` + - 使用`-s`选项指定分隔符:`nl -s: file.txt`(使用冒号作为行号分隔符) + + + +### `od`**语法**: + + ```bash +od [OPTIONS] [FILE]... + ``` + + **作用**: + 以八进制、十进制、十六进制或其他格式转储文件内容。 + + **常见用法**: + + - 显示文件内容的八进制表示:`od -An -t o file.txt` + - 显示文件内容的十六进制表示:`od -An -t x1 file.txt` + - 使用`-c`选项显示字符:`od -c file.txt` + + **示例**: + + ```bash +od -An -t x1 example.txt + ``` + + (注意:`-An`选项用于不显示地址,`-t`选项用于指定输出格式) + +2. **搜索文件内容**: + - `grep`:在文件中搜索匹配指定模式的行。 + - `egrep`:扩展的`grep`,支持扩展的正则表达式。 + - `fgrep`:快速`grep`,不支持正则表达式,仅搜索固定字符串。 + - `ack`/`ag`:更快的代码搜索工具,特别是用于大型代码库。 + - `ripgrep`(`rg`):一个快速的递归搜索工具,类似于`ack`和`ag`。 + +3. **编辑文件内容**: + - `vi`/`vim`:全屏文本编辑器,支持多种模式和强大的编辑功能。 + - `nano`:简单的命令行文本编辑器,易于初学者使用。 + - `emacs`:功能强大的文本编辑器,有图形界面和命令行版本。 + - `sed`:流编辑器,用于对输入流(或文件)进行基本的文本转换。 + - `awk`:用于模式扫描和文本/数据提取的编程语言。 + +4. **文件内容排序和去重**: + - `sort`:对文本文件进行排序。 + - `uniq`:去除文本文件中的重复行。 + - `comm`:比较两个已排序的文件,并显示它们的公共行和独有行。 + +5. **文件内容合并和拆分**: + - `paste`:合并文件的行。 + - `join`:基于某个字段合并两个文件的行。 + - `cut`:从每行中删除部分文本。 + - `split`:将大文件拆分成多个小文件。 + +6. **文件内容比较**: + - `diff`:比较两个文件之间的差异。 + - `colordiff`:`diff`的彩色版本,使差异更容易识别。 + - `sdiff`:并排显示两个文件的差异。 + +7. **其他内容操作**: + - `fold`:将文件内容折叠成指定宽度的行。 + - `fmt`:简化文本格式。 + - `tr`:转换或删除文件中的字符。 + - `col`:过滤用于终端的反向换行字符。 + - `expand`/`unexpand`:转换空格和制表符。 + + + +### 作业: + +**以下所有操作都在家目录执行:** + +### + +1. **操作题一**:使用 `cat` 命令显示 `/etc/passwd` 文件的内容。 + + ```bash + cat etc/passwd.txt + ``` + +2. **操作题二**:将文件 `/etc/passwd` 的内容复制到 `passwd_bak.txt` 文件中,但不使用 `cp` 命令。 + + ```bash + cat etc/passwd.txt > passwd_bak.txt + ``` + +3. **操作题三**:新建两个文件 `file1.txt` 和 `file2.txt`,分别写一些不同的内容,再将这两个文件的内容合并到一个新的文件 `file3.txt` 中。 + + ```bash + cat etc/file1.txt etc/file2.txt > file3.txt + ``` + + + +### + +1. 使用命令从尾部开始显示 `bigfile.txt` 文件的内容。 + + ```bash + tac etc/bigfile.txt + ``` + +2. 尝试找出 `bigfile.txt` 文件的最后一行内容,要使用 `tac` 命令。 + + ```bash + tac etc/bigfile.txt | head -n 1 + ``` + +3. 查看 `bigfile.txt` 文件的最后5行内容。 + + ```bash + tail -n 5 etc/bigfile.txt + ``` + +4. 倒序查看 `bigfile.txt` 文件的最后5行内容。 + + ```bash + tac etc/bigfile.txt | head -n 5 + ``` + + + +### + +1. **操作题一**:使用 `more` 命令查看 `bigfile.txt` 文件的内容,并在查看过程中使用空格键翻页。 + + ```bash + more etc/bigfile.txt + //使用空格键来向下翻页,按 b 键返回上一屏,按 q 键退出查看 + ``` + + + +2. **操作题二**:在 `more` 命令的查看过程中,如何使用回车键来逐行查看文件内容? + + ```bash + more etc/bigfile.txt + //按回车键来逐行查看文件内容 + ``` + +3. **操作题三**:如何在 `more` 命令中搜索`bigfile.txt`特定字符串(例如 "error")并跳转到下一个匹配项? + + ```bash + more etc/bigfile.txt + //先按V 在按/ 输入要搜索的关键词 + ``` + + + +### `less` 命令操作题 + +1. **操作题一**:使用 `less` 命令查看 `bigfile.txt` 文件,并快速定位到文件的末尾。 + + ```bash + less etc/bigfile.txt + //按下 Shift + G 会立即跳转到文件的最后一行 + ``` + +2. **操作题二**:在 `less` 命令中,如何向上和向下滚动文件内容? + + ```bash + less etc/bigfile.txt + //向下滚动一页:可以直接按空格键或者 PGDn + //向上滚动一页:按 b 键(代表“backwards”)或 PGUp + //向下滚动一行:按向下箭头键 + //向上滚动一行:按向上箭头键 + ``` + +3. **操作题三**:在 `less` 命令中,如何搜索`bigfile.txt`一个特定的函数名(例如 `def my_function`),并查看所有匹配项? + + ```bash + less bigfile.txt + //按 / 键,会提示输入搜索关键词def my_function,再按回车键查看所有匹配项q + ``` + + + +### `head` 命令操作题 + +1. **操作题一**:使用 `head` 命令显示 `bigfile.txt` 文件的前5行内容。 + + ```bash + head -n 5 etc/bigfile.txt + ``` + +2. **操作题二**:将 `bigfile.txt` 的前20行内容保存到 `bigfile_20.txt` 文件中。 + + ```bash + head -n 20 etc/bigfile.txt > bigfile_20.txt + ``` + +3. **操作题三**:如何结合 `head` 和 `grep` 命令来查找 `bigfile.txt` 文件中以 "A" 开头的前10行? + + ```bash + grep '^A' etc/bigfile.txt | head -n 10 + // ^A 表示匹配每行开头为大写字母 "A" 的行 + ``` + + + +### `tail` 命令操作题 + +1. **操作题一**:使用 `tail` 命令显示 `bigfile.txt` 文件的最后20行内容。 + + ```bash + tail -n 20 etc/bigfile.txt + ``` + +2. **操作题二**:如何实时跟踪一个正在写入的日志文件(如 `bigfile.txt`)的最后10行内容? + + ```bash + tail -f -n 10 etc/bigfile.txt + ``` + +3. **操作题三**:在 `tail` 命令中,如何反向显示文件的最后10行内容(即按从旧到新的顺序显示)? + + ```bash + tail -n 10 etc/bigfile.txt | tac + ``` + + + +### 综合题 + +**综合题**:假设你有一个非常大的日志文件 `bigfile.txt`,你需要找出所有包含 "ERROR" 字符串的行,并查看这些行及其之前的两行内容。 + +```bash +grep -C 2 'ERROR' etc/bigfile.txt +``` + + + -- Gitee