From eac23999c2f5db160fb81ad9c62c970e482f32e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E5=BF=97=E9=B9=8F?= <326806914@qq.com> Date: Fri, 14 Jun 2024 03:21:05 +0000 Subject: [PATCH] 0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 朱志鹏 <326806914@qq.com> --- ...21\345\222\214\347\256\241\351\201\223.md" | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 "\346\234\261\345\277\227\351\271\217/\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223.md" diff --git "a/\346\234\261\345\277\227\351\271\217/\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223.md" "b/\346\234\261\345\277\227\351\271\217/\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223.md" new file mode 100644 index 0000000..684d6f9 --- /dev/null +++ "b/\346\234\261\345\277\227\351\271\217/\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223.md" @@ -0,0 +1,80 @@ +重定向和管道 + +在 Unix 和 Linux 系统中,文件描述符用于表示打开的文件或者输入/输出流。常用的文件描述符包括: + +* `0`:标准输入(stdin): 键盘输入 +* `1`:标准输出(stdout): 直接显示在屏幕,不包含错误信息 +* `2`:标准错误(stderr): 只包含错误信息 + +使用形式: + +* 定向符前直接用数字,如 1> 1.txt 、 2> 2.txt +* 定向符后紧跟定向符并加&号如 >&1 + +### 重定向 + +重定向允许将命令的输入或输出重定向到文件或其他命令。常用的重定向符号包括 `>`、`>>`、`<`、`2>` &>等。 + +#### 输出重定向 + +1. **标准输出覆盖重定向 `>`**将命令的标准输出重定向到一个文件,如果文件已经存在,则覆盖它。 + ls > filelist.txt + 这个命令将 `ls` 命令的输出保存到 `filelist.txt` 文件中,如果文件已存在,则会被覆盖。 + +2. **追加输出重定向 `>>`**将命令的标准输出追加到一个文件的末尾,如果文件不存在,则创建它。 + echo "Hello, World!" >> greetings.txt + 这个命令会将 "Hello, World!" 追加到 `greetings.txt` 文件中。 + +3. 注意: + + 1. **标准输出不含错误信息** + +#### 输入重定向 + +1. **输入重定向 `<`**将文件的内容作为命令的输入。 + sort < unsorted_list.txt + + # 原文件 + + apple + orange + banana + + # 这个命令将 `unsorted_list.txt` 文件的内容作为 `sort` 命令的输入进行排序。 + +场景:你需要从一个SQL脚本文件中读取命令并在数据库中执行。 + # 示例: + mysql -u root -p mydatabase < script.sql + #该命令将 script.sql 文件中的SQL命令导入到 mydatabase 数据库中。 + # 还原数据库常用的命令 + +#### 错误重定向 + + 参考:find / -name '*.conf' + +1. **错误输出重定向 `2>`**将命令的错误输出重定向到一个文件。 + reboot 2> error_log.txt + 这个命令会将 `ls` 命令的错误信息保存到 `error_log.txt` 文件中。 + +2. **错误输出追加重定向 `2>>`**将命令的错误输出追加到一个文件。 + ls non_existent_file 2>> error_log.txt + 这个命令会将 `ls` 命令的错误信息追加到 `error_log.txt` 文件中。 + +3. **同时重定向标准输出和标准错误输出**使用 `&>` 符号将标准输出和错误输出同时重定向到同一个文件。 + command &> output_and_error_log.txt # 正确和错误原版混搭,原封不动 + command > 1.txt 2>&1 # 正确和错误原版混搭,原封不动 + command > 1.txt 2>> 1.txt # 先正确后错误 + command 2> 1.txt >> 1.txt # 先错误后正确 + + 这个命令会将 `command` 的标准输出和错误输出都保存到 `output_and_error_log.txt` 文件中。 + +作业 + +<< 是什么功能? + +从标准输入中读入直到遇见分界符才停止 +()把命令包括起来,是干什么功能? + +代表命令有时会跟选项一起出现,需要加上括号才能使其完整被读取 + + -- Gitee