mehrere zeilen text in datei

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

mehrere zeilen text in datei

Beitrag von OldGod78 » 12.02.2017 21:57:22

Code: Alles auswählen

touch datei.txt
echo "aaa" > datei.txt
echo "bbb" > datei.txt
da überschreibt der immer das 1. , wie geht es dass er hier in die 1. zeile "aaa" schreibt und in die 2. "bbb" ?

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: mehrere zeilen text in datei

Beitrag von eggy » 12.02.2017 21:59:42


Benutzeravatar
MegaV0lt
Beiträge: 173
Registriert: 21.11.2011 11:16:07
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: mehrere zeilen text in datei

Beitrag von MegaV0lt » 13.02.2017 08:32:35

Das touch ist nicht nötig. Die Datei wird beim ersten Schreiben automatisch erzeugt. Bei mehrerenb Zeilen kann man das auch so zusammen fassen:

Code: Alles auswählen

{  echo "aaa"
   echo "bbb" 
   echo 'ccc'
} > datei.txt
">" Überschreibt und ">>" hängt an
"Das Internet? Gibt's diesen Blödsinn immer noch?"
[Homer Simpson], Sicherheitsinspektor im Kernkraftwerk Springfield.

Benutzeravatar
hikaru
Moderator
Beiträge: 13901
Registriert: 09.04.2008 12:48:59

Re: mehrere zeilen text in datei

Beitrag von hikaru » 13.02.2017 10:47:13

MegaV0lt hat geschrieben:Das touch ist nicht nötig. Die Datei wird beim ersten Schreiben automatisch erzeugt.
Vorsicht, das ist bei Umlenkungen Shell-spezifisch!

(t)csh erzeugt beim puren Anhängen (>>) keine neuen Dateien:

Code: Alles auswählen

>: ls datei.txt
ls: cannot access datei.txt: No such file or directory
>: echo "aaa" >> datei.txt
datei.txt: No such file or directory.
>: ls datei.txt
ls: cannot access datei.txt: No such file or directory
>: echo "aaa" > datei.txt
>: ls datei.txt
datei.txt
bash hingegen erzeugt auch beim Anhängen neue Dateien:

Code: Alles auswählen

$ ls datei.txt
ls: cannot access datei.txt: No such file or directory
$ echo "aaa" >> datei.txt
$ ls datei.txt
datei.txt

Benutzeravatar
Meillo
Moderator
Beiträge: 9232
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: mehrere zeilen text in datei

Beitrag von Meillo » 13.02.2017 12:03:56

hikaru hat geschrieben:
MegaV0lt hat geschrieben:Das touch ist nicht nötig. Die Datei wird beim ersten Schreiben automatisch erzeugt.
Vorsicht, das ist bei Umlenkungen Shell-spezifisch!
Fuer non-POSIX-Shells ja. In POSIX ist es aber klar definiert:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_03 hat geschrieben: Appended output redirection shall cause the file whose name results from the expansion of word to be opened for output on the designated file descriptor. The file is opened as if the open() function as defined in the System Interfaces volume of POSIX.1-2008 was called with the O_APPEND flag. If the file does not exist, it shall be created.
hikaru hat geschrieben: (t)csh erzeugt beim puren Anhängen (>>) keine neuen Dateien:
Wer mit einer csh arbeitet, sollte eigentlich wissen, dass da eine Menge anders laeuft als in Bourne-kompatiblen (POSIX-)Shells.
Use ed once in a while!

Benutzeravatar
hikaru
Moderator
Beiträge: 13901
Registriert: 09.04.2008 12:48:59

Re: mehrere zeilen text in datei

Beitrag von hikaru » 13.02.2017 12:51:54

Meillo hat geschrieben:Fuer non-POSIX-Shells ja. In POSIX ist es aber klar definiert:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_03 hat geschrieben: Appended output redirection shall cause the file whose name results from the expansion of word to be opened for output on the designated file descriptor. The file is opened as if the open() function as defined in the System Interfaces volume of POSIX.1-2008 was called with the O_APPEND flag. If the file does not exist, it shall be created.
Danke!
Meillo hat geschrieben:Wer mit einer csh arbeitet, sollte eigentlich wissen, dass da eine Menge anders laeuft als in Bourne-kompatiblen (POSIX-)Shells.
Manche meiner Kollegen wissen gar nicht, was eine Bourne-kompatible Shell oder POSIX ist. ;)
Für die ist Shell=csh, genauso wie Linux=Suse oder Taschentuch=Tempo.

Benutzeravatar
Meillo
Moderator
Beiträge: 9232
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: mehrere zeilen text in datei

Beitrag von Meillo » 13.02.2017 14:01:17

hikaru hat geschrieben:
Meillo hat geschrieben:Wer mit einer csh arbeitet, sollte eigentlich wissen, dass da eine Menge anders laeuft als in Bourne-kompatiblen (POSIX-)Shells.
Manche meiner Kollegen wissen gar nicht, was eine Bourne-kompatible Shell oder POSIX ist. ;)
Für die ist Shell=csh, genauso wie Linux=Suse oder Taschentuch=Tempo.
Ich habe auch schon gesehen, dass man Shellscripte *.csh nennt, dann aber /bin/bash in die Shebang schreibt. ;-)
Use ed once in a while!

Antworten