linux shell echo 如何向一个文件写入 # 开头的行?

shell部分代码如下:

echo '\n\
#这是注释!!!\n\
[alias]'>~/.gitconfig

实际文件中的内容如下:

root@512cf28a0bda:/# cat ~/.gitconfig 

[alias]

请问该如何把那行注释也输出到文件并显示出来呢?

阅读 5.9k
3 个回答

多行的话,echo不行。但可以用cat+heredoc,也是常规解法

cat >> .gitignore <<EOF
你的内容
#你的内容
EOF

实际案例

$ cat <<EOF | tee -a .gitignore
pipe heredoc> #注释
pipe heredoc> .gitignore
pipe heredoc> EOF
#注释
.gitignore
$ tail -n 3 .gitignore
.release.yaml
3rd/tools/protoc#注释
.gitignore

这是参考文档:GNU Bash Reference Manual

sed -i '1i\#这是注释' test.txt

这样可以给文件第一行增加一条注释,是否可以解决你的问题

如果你需要echo来处理的话,试试这个

echo '#test' | xargs -t -I % sed -i '1i\%' test.txt

我想你是因为在bash脚本文件中,如果内容没有被引号包裹,认为 # 会被解析为注释这个原因?

其主要有2种方式

  1. #' 或者 " 包裹,这样其内容就不会被认为是注释的开头啦。
  2. # 前加 \ 进行转义,也可以让它不认为是注释的开头。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题