如何在Linux中通过shell脚本自动将数据写入文本文件?
我打开了文件。但是,我不知道如何写入数据。
如何在Linux中通过shell脚本自动将数据写入文本文件?
我打开了文件。但是,我不知道如何写入数据。
当前回答
我想有几个非常好的答案,但没有对所有可能性的简明总结;因此:
大多数答案背后的核心原则是重定向。有两个重要的重定向操作符用于写入文件:
重定向输出:
echo 'text to completely overwrite contents of myfile' > myfile
追加重定向输出
echo 'text to add to end of myfile' >> myfile
这里的文档
其他提到的,而不是从一个固定的输入源如echo 'text',你也可以通过“Here Document”交互式写入文件,这也在链接到上面的bash手册中有详细说明。那些答案,例如:
cat > FILE.txt <<EOF` or `cat >> FILE.txt <<EOF
使用相同的重定向操作符,但通过“Here Documents”添加另一层。在上面的语法中,您通过cat的输出写入FILE.txt。写入只发生在交互式输入给定某个特定字符串之后,在这种情况下是'EOF',但这可以是任何字符串,例如:
cat > FILE.txt <<'StopEverything'` or `cat >> FILE.txt <<'StopEverything'
效果也一样。在这里,文档还查找各种分隔符和其他有趣的解析字符,因此请查看文档以获得有关这方面的进一步信息。
这里的字符串
这有点复杂,更多的是在理解重定向和Here Documents语法方面的练习,但你可以将Here Document样式的语法与标准重定向操作符结合起来,成为Here String:
重定向cat输入的输出
cat > myfile <<<'text to completely overwrite contents of myfile'
追加cat输入的重定向输出
cat >> myfile <<<'text to completely overwrite contents of myfile'
其他回答
这种方法是有效的,也是最好的
cat > (filename) <<EOF
Text1...
Text2...
EOF
基本上,文本将搜索关键字“EOF”,直到它终止写入/追加文件
简单的回答是:
echo "some data for the file" >> fileName
但是,echo不能以理想的方式处理行尾字符。所以,如果你要追加多行,用printf:
printf "some data for the file\nAnd a new line" >> fileName
>>和>操作符对于重定向命令输出非常有用,它们与其他多个bash命令一起使用。
移动我的评论作为一个答案,由@lycono要求
如果你需要用root权限来做这件事,这样做:
sudo sh -c 'echo "some data for the file" >> fileName'
我想有几个非常好的答案,但没有对所有可能性的简明总结;因此:
大多数答案背后的核心原则是重定向。有两个重要的重定向操作符用于写入文件:
重定向输出:
echo 'text to completely overwrite contents of myfile' > myfile
追加重定向输出
echo 'text to add to end of myfile' >> myfile
这里的文档
其他提到的,而不是从一个固定的输入源如echo 'text',你也可以通过“Here Document”交互式写入文件,这也在链接到上面的bash手册中有详细说明。那些答案,例如:
cat > FILE.txt <<EOF` or `cat >> FILE.txt <<EOF
使用相同的重定向操作符,但通过“Here Documents”添加另一层。在上面的语法中,您通过cat的输出写入FILE.txt。写入只发生在交互式输入给定某个特定字符串之后,在这种情况下是'EOF',但这可以是任何字符串,例如:
cat > FILE.txt <<'StopEverything'` or `cat >> FILE.txt <<'StopEverything'
效果也一样。在这里,文档还查找各种分隔符和其他有趣的解析字符,因此请查看文档以获得有关这方面的进一步信息。
这里的字符串
这有点复杂,更多的是在理解重定向和Here Documents语法方面的练习,但你可以将Here Document样式的语法与标准重定向操作符结合起来,成为Here String:
重定向cat输入的输出
cat > myfile <<<'text to completely overwrite contents of myfile'
追加cat输入的重定向输出
cat >> myfile <<<'text to completely overwrite contents of myfile'
你可以将命令的输出重定向到一个文件:
$ cat file > copy_file
或者附加到它
$ cat file >> copy_file
如果你想直接写入命令是echo 'text'
$ echo 'Hello World' > file