Cyc*_*ode 161
怎么样:
echo "hello" >> <filename>
Run Code Online (Sandbox Code Playgroud)
使用>>
运算符将在文件末尾附加数据,而使用>
将覆盖文件的内容(如果已存在).
您也可以使用printf
相同的方式:
printf "hello" >> <filename>
Run Code Online (Sandbox Code Playgroud)
请注意,使用上述内容可能会有危险.例如,如果您已经有一个文件,并且需要将数据附加到文件的末尾,而您忘记添加文件中的最后>
所有数据将被销毁.您可以通过在以下位置设置noclobber
变量来更改此行为.bashrc
:
set -o noclobber
Run Code Online (Sandbox Code Playgroud)
现在,当你尝试做的时候,echo "hello" > file.txt
你会收到警告cannot overwrite existing file
.
要强制写入文件,您现在必须使用特殊语法:
echo "hello" >| <filename>
Run Code Online (Sandbox Code Playgroud)
您还应该知道默认情况下echo
会添加一个尾随的换行符,可以使用该-n
标志来抑制该字符:
echo -n "hello" >> <filename>
Run Code Online (Sandbox Code Playgroud)
参考
Jon*_*sky 120
cat >> filename
This is text, perhaps pasted in from some other source.
Or else entered at the keyboard, doesn't matter.
^D
Run Code Online (Sandbox Code Playgroud)
基本上,您可以将所需的任何文本转储到文件中.CTRL-D发送一个文件结束信号,终止输入并返回shell.
use*_*932 22
其他可能的方法是:
echo "text" | tee -a filename >/dev/null
Run Code Online (Sandbox Code Playgroud)
在-a
将附加在文件的结尾.
如果需要sudo
,使用:
echo "text" | sudo tee -a filename >/dev/null
Run Code Online (Sandbox Code Playgroud)
跟进接受的答案.
如果在脚本中使用此项,则需要除CTRL-D之外的其他内容来指定结尾.试试这个:
cat << EOF >> filename
This is text entered via the keyboard or via a script.
EOF
Run Code Online (Sandbox Code Playgroud)
这会将文本附加到所述文件(不包括"EOF").
它利用了这里的文件(或heredoc).
但是,如果您需要sudo附加到指定的文件,如果您直接在命令行上键入,则由于I/O重定向而使用heredoc会遇到麻烦.
直接在命令行上键入时,此变体将起作用:
sudo sh -c 'cat << EOF >> filename
This is text entered via the keyboard.
EOF'
Run Code Online (Sandbox Code Playgroud)
或者你可以使用它tee
来避免在使用带有cat的heredoc时看到的命令行sudo问题:
tee -a filename << EOF
This is text entered via the keyboard or via a script.
EOF
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
240497 次 |
最近记录: |