如何将一个命令的输出附加到一个文本文件的末尾?
要 "追加 "一个文件,使用">>"。
`gt.>.>.> echo "hello world"
阅读.txt
cat read.txt
echo "hello siva"
读取.txt
cat read.txt
那么输出应该是
> 你好,世界#来自第一条回音命令
hello world # 来自第二条回音命令 你好,西瓦
要 "覆盖 "一个文件,使用">"。
`gt; echo "hello tom"
阅读.txt
cat read.txt 那就是
hello Tom
。 "hello Tom
使用命令>> file_to_append_to
来追加到一个文件。
例如`echo "Hello"
>.file_to_append_to
来追加到文件中。 testFile.txt
。
注意:如果你只使用一个>
,你会完全覆盖文件的内容。
为了确保不会发生,你可以在你的.bashrc
中添加set -o noclobber
。
这样可以确保如果你不小心输入了command > file_to_append_to
到一个现有的文件,它会提醒你这个文件已经存在。
错误信息示例。
file exists: testFile.txt
。
因此,当你使用>
时,它只允许你创建一个新的文件,而不是覆盖现有的文件。
使用tee与选项-a (--append)可以让你一次追加到多个文件,也可以使用sudo(在追加到受保护文件时非常有用)。 除此之外,如果你需要使用除bash之外的其他shell,那就很有意思了,因为不是所有的shell都支持> 和>> 操作符
echo "hello world" | sudo tee -a output.txt
这个[帖子][1]有关于三通的很好的答案。
[1]: https://askubuntu.com/questions/408340/is-there-any-significance-to-using-tee
我会使用printf而不是echo,因为它[更可靠][1],并且正确地处理格式化,如新行n
。
这个例子产生的输出与前面例子中的echo类似。
printf "hello world" >> read.txt
cat read.txt
hello world
然而,如果你在这个例子中用echo代替printf,echo就会把\n当作一个字符串,从而忽略了它的意图
printf "hello\nworld" >> read.txt
cat read.txt
hello
world
[1]: https://unix.stackexchange.com/questions/65803/why-is-printf-better-than-echo
例如,你的文件中包含了.NET技术。
1. mangesh@001:~$ cat output.txt
1
2
EOF
如果你想在文件末尾追加,那么--->记住'文本之间的空格'。
之间的空格。 '文件名'。
2. mangesh@001:~$ echo somthing to append >> output.txt|cat output.txt
1
2
EOF
somthing to append
并覆盖文件内容:<br>。
3. mangesh@001:~$ echo 'somthing new to write' > output.tx|cat output.tx
somthing new to write