如何将命令输出附加到文本文件的末尾?
#1楼
我建议您做两件事:
- 在Shell脚本中使用
>>
将内容附加到特定文件。 文件名可以是固定的,也可以使用某些模式。 - 设置每小时的cronjob来触发Shell脚本
#2楼
例如,您的文件包含:
1. mangesh@001:~$ cat output.txt
1
2
EOF
如果您想在文件末尾附加->请记住'text'>>'filename'之间的空格
2. mangesh@001:~$ echo somthing to append >> output.txt|cat output.txt
1
2
EOF
somthing to append
并覆盖文件内容:
3. mangesh@001:~$ echo 'somthing new to write' > output.tx|cat output.tx
somthing new to write
#3楼
使用command >> file_to_append_to
附加到文件。
例如, echo "Hello" >> testFile.txt
注意:如果仅使用一个>
,则将完全覆盖文件的内容。 为了确保永远不会发生,您可以在.bashrc
添加set -o noclobber
。
这样可以确保,如果您不小心在现有文件中键入command > file_to_append_to
,它将提醒您该文件已存在。 错误消息样本: file exists: testFile.txt
因此,当您使用>
,它将仅允许您创建一个新文件,而不会覆盖现有文件。
#4楼
要append
文件,请使用>>
echo "hello world" >> read.txt cat read.txt echo "hello siva" >> read.txt cat read.txt
那么输出应该是
hello world # from 1st echo command hello world # from 2nd echo command hello siva
要overwrite
文件,请使用>
echo "hello tom" > read.txt cat read.txt
那么输出是
hello tom
#5楼
我会使用printf而不是echo,因为它更可靠并且可以正确处理格式,例如换行\\n
。
此示例产生的输出类似于先前示例中的echo:
printf "hello world" >> read.txt
cat read.txt
hello world
但是,如果在此示例中将printf替换为echo,则echo会将\\ n视为字符串,因此忽略了意图
printf "hello\nworld" >> read.txt
cat read.txt
hello
world
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3162932