350 Stimmen

Öffnen und Schreiben von Daten in eine Textdatei mit der Bash?

Wie kann ich mit einem Shell-Skript unter Linux automatisch Daten in eine Textdatei schreiben?

Ich konnte die Datei öffnen. Ich weiß jedoch nicht, wie ich Daten in die Datei schreiben kann.

564voto

Rocky Pulley Punkte 21329

Die kurze Antwort:

echo "some data for the file" >> fileName

Allerdings, echo geht nicht optimal mit Zeilenendezeichen (EOFs) um . Wenn Sie also mehr als eine Zeile anhängen wollen, tun Sie es mit printf :

printf "some data for the file\nAnd a new line" >> fileName

En >> y > Operatoren sind sehr nützlich für Umleitung der Ausgabe von Befehlen funktionieren sie mit mehreren anderen Bash-Befehlen.

172voto

coolfire Punkte 1739
#!/bin/sh

FILE="/path/to/file"

/bin/cat <<EOM >$FILE
text1
text2 # This comment will be inside of the file.
The keyword EOM can be any text, but it must start the line and be alone.
 EOM # This will be also inside of the file, see the space in front of EOM.
EOM # No comments and spaces around here, or it will not work.
text4 
EOM

71voto

ssedano Punkte 8079

Sie können die Ausgabe eines Befehls in eine Datei umleiten:

$ cat file > copy_file

oder daran anhängen

$ cat file >> copy_file

Wenn Sie direkt schreiben wollen, lautet der Befehl echo 'text'

$ echo 'Hello World' > file

60voto

baetacos Punkte 729
#!/bin/bash

cat > FILE.txt <<EOF

info code info 
info code info
info code info

EOF

31voto

tobi Punkte 411

Ich weiß, dass dies eine verdammt alte Frage ist, aber da es im OP um Skripting geht und Google mich hierher gebracht hat, sollte auch das Öffnen von Dateideskriptoren zum gleichzeitigen Lesen und Schreiben erwähnt werden.

#!/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 die Datei auf dem Terminal

$ cat poem.txt
Roses are red
Violets are blue
Poems are cute
And so are you

Dieses Beispiel führt dazu, dass die Datei poem.txt auf dem Dateideskriptor 3 zum Lesen und Schreiben geöffnet wird. Es zeigt auch, dass *nix-Boxen mehr fd's kennen als nur stdin, stdout und stderr (fd 0,1,2). Es gibt tatsächlich eine Menge davon. Normalerweise kann die maximale Anzahl von Dateideskriptoren, die der Kernel zuweisen kann, gefunden werden in /proc/sys/file-max ou /proc/sys/fs/file-max aber die Verwendung von fd über 9 ist gefährlich, da es zu Konflikten mit fd's kommen kann, die von der Shell intern verwendet werden. Machen Sie sich also nicht die Mühe und verwenden Sie nur die fd's 0-9. Wenn Sie mehr als 9 Dateideskriptoren in einem Bash-Skript benötigen, sollten Sie ohnehin eine andere Sprache verwenden :)

Jedenfalls können fd's auf viele interessante Arten verwendet werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X