如何將命令輸出附加到文本文件的末尾? bash
我建議您作兩件事: app
>>
將內容附加到特定文件。 文件名能夠是固定的,也能夠使用某些模式。 例如,您的文件包含:
spa
1. mangesh@001:~$ cat output.txt 1 2 EOF
若是您想在文件末尾附加->請記住'text'>>'filename'之間的空格 code
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
使用command >> file_to_append_to
附加到文件。 get
例如, echo "Hello" >> testFile.txt
it
注意:若是僅使用一個>
,則將徹底覆蓋文件的內容。 爲了確保永遠不會發生,您能夠在.bashrc
添加set -o noclobber
。 io
這樣能夠確保,若是您不當心在現有文件中鍵入command > file_to_append_to
,它將提醒您該文件已存在。 錯誤消息樣本: file exists: testFile.txt
test
所以,當您使用>
,它將僅容許您建立一個新文件,而不會覆蓋現有文件。 file
要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
我會使用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