我怎么能在Linux的shell脚本自动将数据写入到一个文本文件?
我能够打开该文件。 不过,我不知道如何将数据写入。
我怎么能在Linux的shell脚本自动将数据写入到一个文本文件?
我能够打开该文件。 不过,我不知道如何将数据写入。
echo "some data for the file" >> fileName
#!/bin/sh
FILE="/path/to/file"
/bin/cat <<EOM >$FILE
text1
text2
text3
text4
EOM
您可以重定向到一个文件中的命令的输出:
$ cat file > copy_file
或追加到它
$ cat file >> copy_file
如果你想直接写命令echo 'text'
$ echo 'Hello World' > file
#!/bin/bash
cat > FILE.txt <<EOF
info code info
info code info
info code info
EOF
我知道这是一个该死的老问题,但作为OP是关于脚本,并为谷歌把我带到这里,在同一时间打开的文件描述符进行读取和写入的事实也应该被提及。
#!/bin/bash
# Open file descriptor (fd) 3 for read/write on a text file.
exec 3<> poem.txt
# Let's print some text to fd 3
echo "Roses are red" >&3
echo "Violets are blue" >&3
echo "Poems are cute" >&3
echo "And so are you" >&3
# Close fd 3
exec 3>&-
然后cat
在终端的文件
$ cat poem.txt
Roses are red
Violets are blue
Poems are cute
And so are you
这个例子导致文件一下poem.txt是开放的阅读和文件描述符3.写这也表明,* nix的箱子了解更多FD当时只是标准输入,输出和错误(FD 0,1,2)。 它实际上拥有了很多。 通常文件的最大数量的描述符内核可分配中可以找到/proc/sys/file-max
或/proc/sys/fs/file-max
,但使用上述9任何fd是危险的,因为它可能与使用的FD的冲突内壳。 所以,不要打扰,只使用FD的0-9。 如果您在bash脚本需要更多的9个文件描述符,你应该反正使用不同的语言:)
总之,FD的可以在很多有趣的方式使用。
我喜欢这样的回答:
cat > FILE.txt <<EOF
info code info
...
EOF
但建议cat >> FILE.txt << EOF
如果你只想添加一些文件的末尾而不擦一下什么是已经存在
像这样:
cat >> FILE.txt <<EOF
info code info
...
EOF
移动我的评论作为一个答案,通过@lycono的要求
如果您需要root权限才能做到这一点,做这种方式:
sudo sh -c 'echo "some data for the file" >> fileName'
对于在这里的文件是不可用的(环境Makefile
, Dockerfile
等),你可以经常使用printf
一个合理清晰,高效的解决方案。
printf '%s\n' '#!/bin/sh' '# Second line' \
'# Third line' \
'# Conveniently mix single and double quotes, too' \
"# Generated $(date)" \
'# ^ the date command executes when the file is generated' \
'for file in *; do' \
' echo "Found $file"' \
'done' >outputfile