diff --git "a/\345\255\231\347\245\245/\344\275\234\344\270\232/20240529.md" "b/\345\255\231\347\245\245/\344\275\234\344\270\232/20240529.md" new file mode 100644 index 0000000000000000000000000000000000000000..2c36df2f9d8e974ac275e69aefb527b118b636cb --- /dev/null +++ "b/\345\255\231\347\245\245/\344\275\234\344\270\232/20240529.md" @@ -0,0 +1,172 @@ +### `cat` 命令操作题 + +1. **操作题一**: + + ```bash + bash复制代码 + + cat /etc/passwd + ``` + +2. **操作题二**: + + ```bash + bash复制代码 + + cat /etc/passwd > passwd_bak.txt + ``` + +3. **操作题三**: + + ```bash + touch file1.txt file2.txt + echo "Content for file1" > file1.txt + echo "Content for file2" > file2.txt + cat file1.txt file2.txt > file3.txt + ``` + +### `tac` 命令操作题 + +1. 使用命令从尾部开始显示 `bigfile.txt` 文件的内容: + + ```bash + bash复制代码 + + tac bigfile.txt + ``` + +2. 尝试找出 `bigfile.txt` 文件的最后一行内容: + + ```bash + bash复制代码 + + tac bigfile.txt | head -n 1 + ``` + +3. 查看 `bigfile.txt` 文件的最后5行内容: + + ```bash + tail -n 5 bigfile.txt + # 注意:虽然这里没有直接用到 tac 命令,但 tail 是更好的选择 + + tac bigfile.txt | head -n 5 + ``` + +4. 倒序查看 `bigfile.txt` 文件的最后5行内容: + + ```bash + bash复制代码 + + tac bigfile.txt | head -n 5 + tac bigfile.txt | tail -n 5 + ``` + +### `more` 命令操作题 + +1. **操作题一**: + + ```bash + bash复制代码 + + more bigfile.txt + ``` + + 并在查看过程中使用空格键翻页。 + +2. **操作题二**: + 在 `more` 命令的查看过程中,使用回车键来逐行查看文件内容。 + +3. **操作题三**: + 在 `more` 命令中搜索`bigfile.txt`特定字符串(例如 "error")并跳转到下一个匹配项: + + ```bash + bash复制代码 + + more +/error bigfile.txt + ``` + + 或者在查看过程中按 `/` 然后输入 "error" 再按回车。 + +### `less` 命令操作题 + +1. **操作题一**: + + ```bash + bash复制代码 + + less bigfile.txt + ``` + + 在 `less` 中按 `G` 键快速定位到文件的末尾。 + +2. **操作题二**: + 在 `less` 命令中,按空格键向下滚动一页,按 `b` 键向上滚动一页,或者使用方向键上下滚动。 + +3. **操作题三**: + 在 `less` 命令中,按 `/` 然后输入 `def my_function` 搜索特定的函数名,并使用 `n` 查看下一个匹配项,`N` 查看上一个匹配项。 + +### `head` 命令操作题 + +1. **操作题一**: + + ```bash + bash复制代码 + + head -n 5 bigfile.txt + ``` + +2. **操作题二**: + + ```bash + bash复制代码 + + head -n 20 bigfile.txt > bigfile_20.txt + ``` + +3. **操作题三**: + + ```bash + grep -m 10 '^A' bigfile.txt + # 注意:如果要求精确匹配并且只显示前10行,这将是正确的命令。但如果文件中包含多行以A开头,则需要其他逻辑。 + ``` + + 如果需要结合 `grep` 和 `head` 来查找以 "A" 开头的前10行,则可能需要一个更复杂的命令或脚本。 + +### `tail` 命令操作题 + +1. **操作题一**: + + ```bash + bash复制代码 + + tail -n 20 bigfile.txt + ``` + +2. **操作题二**: + + ```bash + tail -f -n 10 bigfile.txt + # 注意:'-f' 选项用于实时跟踪,但 '-n' 选项可能与 '-f' 一起使用时行为不同(取决于具体的实现)。 + # 通常情况下,只使用 'tail -f bigfile.txt' 来实时跟踪文件。 + ``` + +3. **操作题三**: + 在 `tail` 命令中,反向显示文件的最后10行内容是不可能的,因为 `tail` 命令本身就是从尾部开始的。但你可以使用 `tac` 命令配合 `tail` 来实现: + + ```bash + bash复制代码 + + tac bigfile.txt | tail -n 10 | tac + ``` + +### 综合题 + +**综合题**: + +```bash +bash复制代码 + +grep -B 2 'ERROR' bigfile.txt +``` + +使用 `grep` 的 `-B 2` 选项来显示每个匹配行之前的两行内容。这将 \ No newline at end of file diff --git "a/\345\255\231\347\245\245/\347\254\224\350\256\260/20240530.md" "b/\345\255\231\347\245\245/\347\254\224\350\256\260/20240530.md" new file mode 100644 index 0000000000000000000000000000000000000000..0af9b81309b8b35e05cfe4e5664e0ee19ecd451e --- /dev/null +++ "b/\345\255\231\347\245\245/\347\254\224\350\256\260/20240530.md" @@ -0,0 +1,117 @@ +- **sed**: + + - 常用选项:`-e`(指定要执行的sed命令)、`-i`(直接修改文件内容)等。 + - 使用语法:`sed [选项] 命令 [文件名]` + - 使用场景:流编辑器,用于对输入流(文件或管道)进行基本的文本转换。 + - 使用示例: + - 将文件 `example.txt` 中的每行开头的 "Hello" 替换为 "Hi":`sed 's/^Hello/Hi/' example.txt` + - 直接修改文件 `example.txt`,将每行开头的 "Hello" 替换为 "Hi":`sed -i 's/^Hello/Hi/' example.txt` + +- **awk**: + + - 常用选项:无 + - 使用语法:`awk '模式 { 命令 }' [文件名]` + - 使用场景:强大的文本分析工具,用于模式扫描和文本/数据提取。 + - 使用示例: + - 提取文件 `example.txt` 中第一列的数据:`awk '{ print $1 }' example.txt` + - 根据条件筛选文件 `example.txt` 中的行:`awk '$3 > 50 { print }' example.txt` + +- **cut**: + + - 常用选项:`-f`(指定要提取的字段)、`-d`(指定字段分隔符)等。 + - 使用语法:`cut [选项] [文件名]` + - 使用场景:从每行中删除部分字段,并输出剩余部分。 + - 使用示例: + - 提取文件 `example.txt` 中的第2和第3列数据:`cut -f 2,3 example.txt` + - 使用逗号作为字段分隔符,提取文件 `example.csv` 中的第1列数据:`cut -d ',' -f 1 example.csv` + +- **join**:根据不同文件中相同的字段值进行行拼接 + + - 常用选项:`-t`(指定字段分隔符)、`-1`(指定第一个文件的连接字段)、`-2`(指定第二个文件的连接字段)等。 + + ``` + join -t ':' -1 1 -2 1 文件1 文件2 + ``` + + + + - 使用语法:`join [选项] 文件1 文件2` + + - 使用场景:基于指定字段合并两个文件的行。 + + - 使用示例: + + - 根据文件 `file1.txt` 和 `file2.txt` 中的共同字段进行连接:`join file1.txt file2.txt` + - 使用制表符作为字段分隔符,连接文件 `file1.txt` 和 `file2.txt`:`join -t $'\t' file1.txt file2.txt` + +- **paste**: + + - 常用选项:`-d`(指定行之间的分隔符)等。 + - 使用语法:`paste [选项] 文件1 文件2` + - 使用场景:合并文件的行,每行由指定的分隔符分隔。 + - 使用示例: + - 合并文件 `file1.txt` 和 `file2.txt` 的每行:`paste file1.txt file2.txt` + - 使用逗号作为行分隔符,合并文件 `file1.txt` 和 `file2.txt` 的每行:`paste -d ',' file1.txt file2.txt` + +- **fmt**: + + - 常用选项:`-w`(指定行宽度)等。 + - 使用语法:`fmt [选项] [文件名]` + - 使用场景:简化文本格式,将文本文件格式化为更易于阅读的宽度。 + - 使用示例: + - 将文件 `example.txt` 的内容重新格式化为80个字符宽度的行:`fmt -w 80 example.txt` + +- **column**: + + - 常用选项:`-t`(使用表格格式输出)等。 + - 使用语法:`column [选项] [文件名]` + - 使用场景:将输入文本格式化为多列输出。 + - 使用示例: + - 将文件 `example.txt` 的内容按照表格格式输出:`column -t example.txt` + +- **sort** 和 **uniq**: + + - 请参考之前给出的解释和示例。 + +- **tr**: + + - 常用选项:`-d`(删除字符)、`-s`(压缩连续重复字符)等。 + - 使用语法:`tr [选项] 字符集1 字符集2` + - 使用场景:转换或删除字符,通常用于字符集转换。 + - 使用示例: + - 将文件 `example.txt` 中的所有小写字母转换为大写字母:`tr 'a-z' 'A-Z' < example.txt` + - 删除文件 `example.txt` 中的所有空格字符:`tr -d ' ' < example.txt` + +- **expand** 和 **unexpand**: + + - 常用选项:无 + - 使用语法:`expand [文件名]` 或 `unexpand [文件名]` + - 使用场景:将制表符转换为空格或将空格转换回制表符。 + - 使用示例: + - 将文件 `example.txt` 中的所有制表符转换为空格:`expand example.txt` + - 将文件 `example.txt` 中的所有空格转换回制表符:`unexpand example.txt` + +- **split**: + + - 常用选项:`-l`(指定每个输出文件的行数)、`-b`(指定每个输出文件的字节数)等。 + - 使用语法:`split [选项] 输入文件 [输出文件前缀]` + - 使用场景:将大文件分割成多个小文件。 + - 使用示例: + - 将文件 `largefile.txt` 每1000行分割成多个小文件:`split -l 1000 largefile.txt` + - 将文件 `largefile.txt` 每10MB分割成多个小文件:`split -b 10M largefile.txt` + +- **wc**: + + - 常用选项:`-c`(计算字节数)、`-w`(计算字数)、`-l`(计算行数)等。 + - 使用语法:`wc [选项] [文件名]` + - 使用场景:计算文件中的字节数、字数和行数。 + - 使用示例: + - 统计文件 `example.txt` 的字节数、字数和行数:`wc example.txt` + - 仅统计文件 `example.txt` 的行数:`wc -l example.txt` + +**ps**: + +- 常用选项:`aux` (显示所有进程的详细信息)、`-e` (显示所有进程)、`-f` (显示完整格式) +- 使用语法:`ps [选项]` +- 使用场景:查看系统中运行的进程以及它们的状态和资源占用情况。 +- 使用示例:`ps aux` \ No newline at end of file