Öffnen und schreiben von Daten in eine Textdatei mit Hilfe der Bash?
Wie kann ich das schreiben von Daten in eine text-Datei automatisch von shell-scripting unter Linux?
War ich in der Lage, die Datei zu öffnen. Aber ich weiß nicht wie ich zum schreiben von Daten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
sudo sh -c 'echo "some data for the file" >> fileName'
curl
oderwget
?echo
fürprintf
. Beispiel:printf "%b\n" "Some text" "Text on a new line\n" "Put \\\c at the end of the content to avoid an empty new line at the end of your document... if you're into that sort of thing\c" > fileName
Können Sie die Umleitung der Ausgabe eines Befehls in eine Datei:
oder daran anfügen
Wenn Sie möchten, schreiben Sie direkt der Befehl
echo 'text'
sudo sh -c 'cat file > /etc/init/gunicorn.conf'
(Dank lukaserat Kommentar oben)EOF
und Verwandte Technik: stackoverflow.com/a/2954835/712334Ich weiß, das ist eine verdammt alte Frage, aber die OP ist über scripting, und für die Tatsache, dass google hat mich hierher gebracht, öffnen der Datei-Deskriptoren zum schreiben und Lesen zur gleichen Zeit sollte auch erwähnt werden.
Dann
cat
die Datei auf terminalIn diesem Beispiel wird die Datei poem.txt offen zu sein für das Lesen und schreiben auf den Dateideskriptor 3. Es zeigt auch, dass *nix-Boxen mehr wissen fd ist dann nur stdin, stdout und stderr (fd 0,1,2). Es tatsächlich hält eine Menge. In der Regel die maximale Anzahl von Datei-Deskriptoren, die dem kernel zuordnen kann, finden sich in
/proc/sys/file-max
oder/proc/sys/fs/file-max
aber mit jedem fd über 9 ist gefährlich, da könnte es zu Konflikten mit fd ' s von der shell benutzt, intern. So stören Sie nicht und verwenden Sie nur die fd ' s von 0-9. Wenn Sie mehr brauchen die 9 Datei-Deskriptoren in ein bash-Skript, das Sie verwenden sollten, eine andere Sprache sowieso 🙂Jedenfalls, fd ' s können verwendet werden in einer Menge von interessanten Möglichkeiten.
Mag ich diese Antwort:
aber würde vorschlagen
cat >> FILE.txt << EOF
wenn Sie möchten, fügen Sie einfach etwas an das Ende der Datei, ohne Sie auszulöschen, was bereits vorhanden istWie diese:
Bewegte meinen Kommentar als Antwort auf Anfrage von @lycono
Wenn Sie dies tun müssen mit root-rechten, tun Sie es auf diese Weise:
echo "some data for the file" | sudo tee -a fileName >/dev/null
nurtee
als root.Für Umgebungen, in denen hier Dokumente, die nicht verfügbar sind (
Makefile
,Dockerfile
etc) können oftprintf
für einen halbwegs lesbar und effiziente Lösung.Können auch hier dokumentieren und vi, die unterhalb der Skript erzeugt eine FILE.txt mit 3 Zeilen und die Variablen-interpolation
Dann Datei 3 Zeilen weiter unten). "ich" zu beginnen vi-insert-Modus und ähnlich wie schließen Sie die Datei mit Esc und ZZ.