Bash中如何实现代码重定向到不同行?
在Bash中将内容/输出重定向到多行的实用方法
1. Here Document(heredoc)——批量写多行的首选
这是最方便的多行写入方式,支持变量替换或者完全原样输出,只要定义好结束标记就行。
普通写入(支持变量展开)
# 直接把多行内容写入file.txt,$HOME这类变量会自动替换成实际值 cat > file.txt << EOF 这是第一行内容 第二行里的用户目录:$HOME 第三行随便写点啥 EOF
原样写入(不解析变量)
要是不想让变量被替换,给结束标记加单引号就行:
cat > file.txt << 'EOF' 这行里的$HOME会原封不动保留 第二行内容 第三行 EOF
2. Here String——简短多行快速写
如果内容不多,用$'...'转义换行符,配合echo就能快速输出多行:
# 覆盖写入文件 echo $'第一行\n第二行\n第三行' > file.txt # 追加到文件末尾 echo $'第四行\n第五行' >> file.txt
3. 分步追加——灵活控制每一行
要是内容是分步生成的,每次用>>追加到文件,就能凑出多行:
# 先写第一行(覆盖原有内容) echo "初始化第一行" > file.txt # 追加第二行 echo "后续添加的第二行" >> file.txt # 用printf也能写,适合带格式的内容 printf "第三行,带个制表符\t这里是内容\n" >> file.txt
4. 命令输出直接重定向
如果是要把命令的多行输出存到文件,直接用重定向符号就行,不用额外处理换行:
# 把ls的详细列表写入file.txt ls -l > file.txt # 把日志里的error行追加到文件 grep "error" app.log >> file.txt
内容的提问来源于stack exchange,提问作者user20689647
相关产品推荐
相关产品推荐

