打开并使用bash数据写入文本文件?打开并使用bash数据写入文本文件?(Open and writ

2019-06-02 18:59发布

我怎么能在Linux的shell脚本自动将数据写入到一个文本文件?

我能够打开该文件。 不过,我不知道如何将数据写入。

Answer 1:

echo "some data for the file" >> fileName


Answer 2:

#!/bin/sh

FILE="/path/to/file"

/bin/cat <<EOM >$FILE
text1
text2
text3
text4
EOM


Answer 3:

您可以重定向到一个文件中的命令的输出:

$ cat file > copy_file

或追加到它

$ cat file >> copy_file

如果你想直接写命令echo 'text'

$ echo 'Hello World' > file


Answer 4:

#!/bin/bash

cat > FILE.txt <<EOF

info code info 
info code info
info code info

EOF 


Answer 5:

我知道这是一个该死的老问题,但作为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的可以在很多有趣的方式使用。



Answer 6:

我喜欢这样的回答:

cat > FILE.txt <<EOF

info code info 
...
EOF

但建议cat >> FILE.txt << EOF如果你只想添加一些文件的末尾而不擦一下什么是已经存在

像这样:

cat >> FILE.txt <<EOF

info code info 
...
EOF


Answer 7:

移动我的评论作为一个答案,通过@lycono的要求

如果您需要root权限才能做到这一点,做这种方式:

sudo sh -c 'echo "some data for the file" >> fileName'


Answer 8:

对于在这里的文件是不可用的(环境MakefileDockerfile等),你可以经常使用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


文章来源: Open and write data to text file using Bash?
标签: bash shell