• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] In einer Textdatei oben anfügen?

Hallo zusammen

Kennt zufällig jemand einen Befehl , mit dem man etwas an eine Textdatei oben anfügen kann?

Leitet man etwas mit >> um, dann wird es automatisch unten angefügt. Aber ich suche eine Lösung wie das umgeleitete oberhalb in der Textdatei landet.

Gruß Peter
 
OP
T

trommelpeter

Member
Hallo

Klingt logisch.
Aber irgendwie dachte ich , weil es doch für 100.000 Zwecke irgendwelche Befehle oder Optionen gibt, das es da vielleicht auch irgendeinen tollen Befehl gibt oder vielleicht sogar ein bash-Builtin.

Gruß Peter
 

abgdf

Guru
Hab ich mir schon gedacht, daß Du das glaubtest.
Das Anhängen von Text ist aber eigentlich nur ein Nebeneffekt von ">>".
Es geht da eher um die Umleitung von "stdout":

http://tldp.org/LDP/abs/html/io-redirection.html

auch

man 3 stdout

Die theoretische Grundlage ist also eine andere.

Gruß

P.S.: Du kannst es auch in nur eine Zeile tun:
Code:
echo -en "MyText\n"$(cat MyFile) > MyFile
 
OP
T

trommelpeter

Member
P.S.: Du kannst es auch in nur eine Zeile tun:

Code:
echo -en "MyText\n"$(cat MyFile) > MyFile

Seltsamer Befehl.
Das Newline löst sich beim nächsten mal einfach auf:

...
...
...
usw
trommel@linux-jiac:~/Desktop> echo -en "MyLive\n"$(cat MyFile) > MyFile
trommel@linux-jiac:~/Desktop> echo -en "MyLive\n"$(cat MyFile) > MyFile
trommel@linux-jiac:~/Desktop> echo -en "MyLive\n"$(cat MyFile) > MyFile
trommel@linux-jiac:~/Desktop> cat MyFile
MyLive
MyLive MyLive MyLive MyText MyText MyText MyText MyText

Gruß Peter
 

abgdf

Guru
Oh, Entschuldigung :oops::

Die Code-Zeile im P.S. war aus mehreren Gründen ziemlich schlecht (war schon spät).

Wenn es in einer Zeile sein soll, dann mach's lieber so (mit Perl):
Code:
echo "MyText" | perl -e '$file= "MyFile";open(FH,"<$file") or die;@a=<FH>;close(FH);open(FH,">$file") or die;while(<>){print FH $_} print FH @a;close(FH);'
Den Namen von "MyFile" mußt Du dann einmal im Perl-Teil eintragen, aber ich glaube, das ist ok.

Sonst mach Dir halt ein Skript: Da ist dann aber auch das Problem, bei den Aufrufoptionen für das Skript (also bei den Positionsparametern) den Dateinamen von dem Text getrennt zu halten.

Viel Grüße
 

abgdf

Guru
Du kannst natürlich auch die Shell-Befehle oben in einer Zeile ausführen:
Code:
echo "MyText" > temp; cat Myfile >> temp; mv temp Myfile
Sicher einfacher zu merken als die Perl-Konstruktion :wink:.

Gruß
 
OP
T

trommelpeter

Member
Ich glaube ich nehme doch lieber die Bash-Version :)
Bei der Perl-Version komme ich mir vor wie ein Archäologe der alte Schriftzeichen entziffern muss ;-)

Gruß Peter
 

abgdf

Guru
komme ich mir vor wie ein Archäologe der alte Schriftzeichen entziffern muss
Genau ! Das mag ich so an Perl: Es weckt den Indiana Jones in mir :lol:.

Früher hab' ich dafür "Fate of Atlantis" gespielt ("Hermocrates, Bwaaak !") (geht übrigens auch mit ScummVM), heute schreibe ich Perl-Skripte ... :p.
 

regexer

Advanced Hacker
abgdf schrieb:
Code:
echo "MyText" > temp; cat Myfile >> temp; mv temp Myfile
Sorry für meine Besserwisserei: Aus meiner Sicht wäre es besser, statt den Strichpunkten && zu nehmen. Falls z.B. aus irgendwelchen Gründen ein Befehl weiter vorne abbricht, würde er nicht weitermachen...
 
Code:
( echo "MyText" ; cat Myfile ) > temp ; mv temp Myfile
Und mit nur einer Umleitung geht es auch.

Haveaniceday
 
OP
T

trommelpeter

Member
( echo "MyText" ; cat Myfile ) > temp ; mv temp Myfile

Und mit nur einer Umleitung geht es auch.

Der Befehl gefällt mir am besten. Das mag ich so an Scripting:
Und wenn man meint man hat schon viel gelernt gibt es doch immer noch mal eine bessere Möglichkeit.

Gruß Peter
 
Oben