Inhalt von einer Datei an andere anhängen

Hallo,

ich möchte den Inhalt von einer Datei (Logfiles) an andere anhängen. Welchen befehl kann ich dazu unter Suse 9.0 nutzen?

Vielen Dank & viele Grüße
Michael

Hi,

ich möchte den Inhalt von einer Datei (Logfiles) an andere
anhängen. Welchen befehl kann ich dazu unter Suse 9.0 nutzen?

>cat
#> echo „erste Zeile“ > Datei1.txt
#> echo „zweite Zeile“ > Datei2.txt
#> cat Datei2.txt >> Datei1.txt
#> cat Datei1.txt
„erste Zeile“
„zweite Zeile“
#>

J+

Hi…

ich möchte den Inhalt von einer Datei (Logfiles) an andere
anhängen.

cat teil2.log >> teil1.log

genumi

Hi!

ich möchte den Inhalt von einer Datei (Logfiles) an andere
anhängen. Welchen befehl kann ich dazu unter Suse 9.0 nutzen?

Einerseits mit dem eben schon von 2 Leuten vorgeführten „Append“ Redirector ‚>>‘ oder einfach mit dem Programm das genau das macht: cat (conCATenate = zusammenhängen).

$ cat file1 file2 file3 ... \> fileA

Bye
Hansi

Hi…

oder einfach mit dem Programm
das genau das macht: cat (conCATenate = zusammenhängen).

Rah!
Ich benutze cat täglich und wusste bis heute nicht, daß es das kann :frowning:

Eindeutig die eleganteste Antwort.

ge>>numi

Hi,

Ich benutze cat täglich und wusste bis heute nicht, daß es das
kann :frowning:

das geht sogar (in Grenzen) mit Binärdaten (mp3, …)

Eindeutig die eleganteste Antwort.

Kommt drauf an was man will :wink:) und ob eine neue Datei entstehen soll.

g,
J+

Hi,

Ich benutze cat täglich und wusste bis heute nicht, daß es das
kann :frowning:

das geht sogar (in Grenzen) mit Binärdaten (mp3, …)

Eindeutig die eleganteste Antwort.

Kommt drauf an was man will :wink:) und ob eine neue Datei
entstehen soll.

hm,

noe

cat file1 file2 \> /dev/stdout 
cat file1 file2 \> file1
  1. gar keine datei (da wird aber eh standardmaessig hingeschrieben)
  2. eine alte datei wird ueberschrieben

richtig extrem kann man es auch haben

cp file1 file2 /dev/stdout \> file

hm, aber echt shice das so zu machen, warum pipe ich eigentlich dann erst nach stdout?
cat piped auch immer erst nach stdout. ist eigentlich echt unschick, gibt es nicht etwas mit dem man direkt zwei dateien verbinden kann ohne erst alles nach stdout zu schieben?
Ich kann mich dunkel daran errinnern dass es mal einen Flamewar ueber das verwenden von cat in einem aehnlichtn zusammenhang gab.

hm

J+

gruss vom josh

Hi,

cat file1 file2 > file1

  1. eine alte datei wird ueberschrieben

das ist nicht erlaubt, siehe

#> cat file1 file2 > file1
cat: file1: Eingabedatei ist Ausgabedatei

Nur der Vollständigkeit halber :wink:

g,
J+

hiho,

Hi,

cat file1 file2 > file1

  1. eine alte datei wird ueberschrieben

das ist nicht erlaubt, siehe

#> cat file1 file2 > file1
cat: file1: Eingabedatei ist Ausgabedatei

Nur der Vollständigkeit halber :wink:

oh richtig! und das mit dem cp ueber mehrere Dateien geht auch nicht. wie ich gerade bemerke, da meckert er.

cp: bacher@QotSA:~$ cp bla blabla /dev/stdout
copying multiple files, but last argument `/dev/stdout' is not a directory
Try `cp --help' for more information.

dennoch mache ich bei cat ja immer den umweg ueber stdout, wenn ich mehrere Dateien Konkateniere, warum? warum leite ich das nicht alles direkt in eine Datei ohne den Umweg.

g,
J+

mist, da will ich mal so richtig klugschei**en und brabbel nur wirres zeug :smile:
gruss vom beschaemten josh

hiho,

Hoho,

cat file1 file2 > file1

Das arme cat.

  1. eine alte datei wird ueberschrieben

das ist nicht erlaubt, siehe
#> cat file1 file2 > file1
cat: file1: Eingabedatei ist Ausgabedatei

 $ cat file1 file2 |cat \>file1

(Nein, funktionieren tut es trotzdem nicht, aber damit kann’s cat nicht mehr an inodes rumschnueffeln. Ausserdem kann man nur mit sowas awards gewinnen.)

> cp: bacher@QotSA:~$

Oh Gott, ein case sensitiver hostname.

dennoch mache ich bei cat ja immer den umweg ueber stdout,
wenn ich mehrere Dateien Konkateniere, warum? warum leite ich
das nicht alles direkt in eine Datei ohne den Umweg.

Weil das arme cat doch gar keine Dateien schreiben kann. Das macht die Shell und die kommt vor allem anderen. Die sieht das >file1 und knippert stdout des Programms O_RWONLY|O_CREATE|O_TRUNC an die Datei. Und dabei wird sie nun mal leer. Erst dann kommt cat ueberhaupt zum Zuge und kann die Dateien O_RDONLY oeffnen. Leider ist da die eine Datei schon leer.

Gruss vom Frank.

Har Har

Hoho,

dennoch mache ich bei cat ja immer den umweg ueber stdout,
wenn ich mehrere Dateien Konkateniere, warum? warum leite ich
das nicht alles direkt in eine Datei ohne den Umweg.

Weil das arme cat doch gar keine Dateien schreiben kann. Das
macht die Shell und die kommt vor allem anderen. Die sieht
das >file1 und knippert stdout des Programms
O_RWONLY|O_CREATE|O_TRUNC an die Datei. Und dabei wird sie

gr, ich rede erst wieder mit Dir wenn ich mehr ueber O_RWONLY|O_CREATE|O_TRUNC weiss. das ist keine drohung!
Heisst das soviel wie, die shell kommt gar nicht erst auf die idee das nach stdout zu schieben. es ist keine weiterleitung sondern eine echte umleitung?

Gruss vom Frank.

zurueck :smile:

gr, ich rede erst wieder mit Dir wenn ich mehr ueber
O_RWONLY|O_CREATE|O_TRUNC weiss. das ist keine drohung!

 $ man 2 open

O_RWONLY ist darueberhinaus noch ein Typo.

Heisst das soviel wie, die shell kommt gar nicht erst auf die
idee das nach stdout zu schieben. es ist keine weiterleitung
sondern eine echte umleitung?

Die Shell schreibt gar nix. Fuer jeden Prozess werden schon beim Starten drei File-Descriptoren geoeffnet: stdin (0), stdout (1) und stderr (2). Normalerweise gibt eine Shell ihre eigenen Descriptoren an den Prozess weiter. Mit den Umleitungszeichen kann man die Shell anweisen, andere zu oeffnen. /dev/sdtout et al sind uebrigens einfach nur Geraete, die auf die Dateidescriptoren des aktuellen Prozesses zeigen.

Gruss vom Frank.

Hi!

dennoch mache ich bei cat ja immer den umweg ueber stdout,
wenn ich mehrere Dateien Konkateniere, warum? warum leite ich
das nicht alles direkt in eine Datei ohne den Umweg.

Nein, machst du nicht. Die Shell leitet das direkt in die Ausgabedatei um. Einfach indem es ‚cat‘ den Filediscriptor auf ./file3 gibt anstatt den Filedescriptor für „den Bildschirm“.

Bye
Hansi