如何将命令的输出附加到文本文件的末尾?
当前回答
要追加一个文件,请使用>>
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
要覆盖文件,请使用>
echo "hello tom" > read.txt
cat read.txt
那么输出是
你好,汤姆
其他回答
我经常把两者混淆。最好通过它们的输出来记住:
>表示覆盖
$ touch someFile.txt
$ echo ">" > someFile.txt
$ cat someFile.txt
>
$ echo ">" > someFile.txt
$ cat someFile.txt
>
>>表示追加
$ echo ">" > someFile.txt
$ cat someFile.txt
>
$ echo ">" >> someFile.txt
$ cat someFile.txt
>>
对于整个问题:
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
这将在o.txt中追加720行(30*24),之后将根据当前日期重命名文件。
每小时用cron运行上面的程序,或者
while :
do
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
sleep 3600
done
要追加一个文件,请使用>>
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
要覆盖文件,请使用>
echo "hello tom" > read.txt
cat read.txt
那么输出是
你好,汤姆
在Linux操作系统中,可以使用cat命令将文件内容追加到另一个文件
cat fileName_1.txt >> fileName_2.txt
在前面的命令中,您将把fileName_1.txt的内容追加到fileName_2.txt。
在Windows操作系统中可以使用type命令
type fileName_1.txt >> fileName_2.txt
请看这张gif图片:
我会使用printf而不是echo,因为它更可靠,并且正确地处理诸如new line \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