Cat: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
Zeile 127: | Zeile 127: | ||
# https://wiki.ubuntuusers.de/cat/ | # https://wiki.ubuntuusers.de/cat/ | ||
[[Kategorie:Linux:Dateien]] | = Dateiinhalte anzeigen (cat) = | ||
<tt>'''cat'''</tt> (con''cat''enate) verkettet Dateien und schreibt sie in die Standardausgabe | |||
'''cat''' [-benstuvAET] [-number] [-number-nonblank] [-squeeze-blank] [-show-nonprinting] [-show-ends] [-show-tabs] [-show-all] [''Datei'' ...] | |||
<tt>'''cat'''</tt> liest beliebige Dateien und schreibt sie ohne Veränderung in die Standardausgabe. Durch Umlenkung der Ausgabe auf eine Datei ([../../../../ebooks/computer/betriebssysteme/linux/allgemein/unsortiert/linux_anwender_handbuch/linux_anwenderhandbuch_7-0/node26.html#umleitung siehe Ausgabeumleitung]) können so Dateien verkettet werden. | |||
Außerdem wird <tt>cat</tt> häufig benutzt, um Dateien an Programme zu übergeben, die nur von der Standardeingabe lesen. (Solche Programme werden im allgemeinen als Filter bezeichnet.) | |||
Für die Übergabe steht entweder die Ausgabeumlenkung der Shell mit `>' und `>>' zur Verfügung, oder die Ausgabe wird durch eine [../../../../ebooks/computer/betriebssysteme/linux/allgemein/unsortiert/linux_anwender_handbuch/linux_anwenderhandbuch_7-0/node26.html#pipelines Pipeline |] an den Filter weitergeleitet. | |||
== Beispiele == | |||
Mit dem <tt>cat</tt>-Kommando können Dateien ausgedruckt werden. Mit dem Kommando | |||
cat Adressenliste > /dev/lp1 | |||
können Sie die Datei <tt>Adressenliste</tt> direkt der Gerätedatei /dev/lp1 zuführen, die den ersten parallelen Druckerport im System darstellt. Diese Methode ist aber sehr unelegant. | |||
Sie umgeht und blockiert den Druckerspooler <tt>lpd</tt>, der über die reine Auslieferung hinaus noch die Formatierung der Dokumente erledigen kann. | |||
Wenn ein Druckerdämon installiert ist, sollten Sie die ,,direkte`` Methode nur in Ausnahmefällen benutzen. | |||
Wenn Sie zwei Dateien durch Umlenkung der Ausgabe von <tt>cat</tt> verketten wollen, müssen Sie den Standardausgabekanal immer in eine dritte Datei zielen lassen. | |||
cat foo bar > foo | |||
cat: foo: input file is output file | |||
führt NICHT zum erwünschten Ergebnis. Die Datei `foo' wird von der Shell vor der Ausführung von <tt>cat</tt> gelöscht, um die Ausgabe des Kommandos dorthin umzulenken. <tt>cat</tt> erkennt noch, dass eine Eingabedatei mit der Ausgabedatei übereinstimmt, Ihre Daten sind aber bereits verloren. | |||
Ein verwandtes Problem kann beim Anhängen von Daten an eine bestehende Datei entstehen. Der Befehl | |||
$ cat foo bar >> foo | |||
cat: foo: input file is output file | |||
$ _ | |||
würde zu einem ,,Kurzschluß`` führen, weil der schreibende Dateizeiger immer dem lesenden eine Dateilänge vorauseilen würde. Nicht unbedingt das gewünschte Ergebnis. <tt>cat</tt> erkennt diesen Fehler und verweigert die Ausführung. Die Datei <tt>foo</tt> bleibt also unverändert erhalten. | |||
== Problembehebung == | |||
Nach der Anzeige einer Binärdatei mit cat ist reaggiert das Terminal nicht mehr normal.* Das Terminal kann mit <tt>'''reset '''</tt>neu initialisiert werden. | |||
== Optionen == | |||
{| class="wikitable sortable" | |||
|- | |||
| | <tt>'''-b '''</tt> | |||
| | alle nicht leeren Zeilen erhalten eine Zeilennummer | |||
|- | |||
| | <tt>'''-e '''</tt> | |||
| | das gleiche wie <tt>-vE</tt> | |||
|- | |||
| | <tt>'''-n '''</tt> | |||
| | sämtliche Zeilen werden numeriert | |||
|- | |||
| | <tt>'''-s '''</tt> | |||
| | mehrere leere Zeilen in Folge werden zu einer einzigen leeren Zeile zusammengefaßt | |||
|- | |||
| | <tt>'''-t '''</tt> | |||
| | das gleiche wie <tt>-vT</tt> | |||
|- | |||
| | <tt>'''-u '''</tt> | |||
| | ohne Funktion | |||
|- | |||
| | <tt>'''-v '''</tt> | |||
| | alle Kontrollzeichen außer TAB und NEWLINE werden angezeigt | |||
|- | |||
| | <tt>'''-A '''</tt> | |||
| | das gleiche wie <tt>-vET</tt> | |||
|- | |||
| | <tt>'''-E '''</tt> | |||
| | gibt ein `<tt>$</tt>' Zeichen am Ende jeder Zeile aus | |||
|- | |||
| | <tt>'''-T '''</tt> | |||
| | die TAB werden als <tt>^I</tt> angezeigt | |||
|- | |||
|} | |||
== Dateien rückwärts ausgeben (tac) == | |||
<tt>'''tac'''</tt> wie cat, nur umgekehrt | |||
'''tac''' [-br] [-s ''Trenner''] [-before] [-regex] [-separator=''Trenner''] [''Datei'' ...] | |||
<tt>'''tac'''</tt> arbeitet in vieler Hinsicht wie <tt>cat</tt>. Es werden die einzelnen Felder der ''Datei'' zeilenweise ausgegeben, allerdings das letzte zuerst. Als Feldtrenner dient das Zeilenende, wenn kein anderer angegeben ist. | |||
Der Feldtrenner wird zu dem Feld gezählt, das er abschließt, also an dessen Ende ausgegeben. | |||
=== Optionen === | |||
{| class="wikitable sortable" | |||
|- | |||
| | <tt>'''-b '''</tt> | |||
| | (before) der Feldtrenner wird zum darauffolgenden Feld gezählt, also an dessen Anfang ausgegeben. | |||
|- | |||
| | <tt>'''-r '''</tt> | |||
| | der Feldtrenner ist ein regulärer Ausdruck | |||
|- | |||
| | <tt>'''-s ''Trenner'' '''</tt> | |||
| | benutzt ''Trenner'' als Feldtrenner | |||
|- | |||
|} | |||
[[Kategorie:Linux:Dateien:Ausgabe]] | |||
[[Kategorie:Linux:Befehl]] |
Version vom 26. Februar 2022, 11:10 Uhr
Bezeichnung
Mit dem Befehl cat können wir einzelne oder mehrere Dateien erstellen, Dateien enthalten, Dateien verketten und Ausgaben in Terminals oder Dateien umleiten.
Übersicht
$ cat
Oder
$ cat > filename
Oder
$ cat [OPTION] [FILE]...
Oder
$ cat file1 $ cat > file2 $ cat file3 | command $ cat file4 | grep something
Optionen
Option | Beschreibung |
---|---|
-A | Entspricht -vET. |
-b | Nummerieren Sie nicht leere Ausgabezeilen. |
-e | Entspricht -vE. |
-E | Zeigen Sie $ am Ende jeder Zeile an. |
-n | Nummerieren Sie alle Ausgangsleitungen. |
-s | Unterdrücken Sie wiederholte leere Ausgabezeilen. |
-t | Entspricht -vT. |
-T | TAB-Zeichen als ^ I anzeigen. |
-v | Notation ohne Druck anzeigen, außer für LFD und TAB. |
Beispiel
Eine Datei mit dem Befehl cat anzeigen
$ cat filename $ cat /path/to/file
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh .... ...
Mehrere Dateien mit dem Befehl cat anzeigen
$ cat test1 test2
Hello everybody Hi world,
Erstellen eine Datei mit dem Befehl cat
Geben Sie Folgendes ein, um eine Datei mit dem Namen "test.txt" zu erstellen:
$ cat >test.txt
Anzeigen einer großen Datei Mit Pipes
Wenn eine Datei mit einer großen Anzahl von Inhalten nicht in das Ausgabeterminal passt und der Bildschirm sehr schnell nach oben rollt, können wir mit dem Befehl cat mehr und weniger Parameter verwenden, wie oben gezeigt.
$ cat song.txt | more $ cat song.txt | less
Kombinieren zwei oder mehr Dateien mit cat
Sie können zwei Dateien kombinieren und eine neue Datei mit dem Namen report.txt erstellen.
$ cat score.txt names.txt > report.txt
$ cat report.txt
Daten an eine Textdatei anhängen
$ cat >>test.txt
Nummeriert alle Ausgabeleitungen
$ cat -n filename $ cat -n song.txt
1 "Heal The World" 2 There's A Place In 3 Your Heart 4 And I Know That It Is Love 5 And This Place Could 6 Be Much 7 Brighter Than Tomorrow 8 And If You Really Try
Nicht druckbare Zeichen anzeigen
Geben Sie Folgendes ein, um TAB-Zeichen als ^ I anzuzeigen:
$ cat -T filename
Geben Sie Folgendes ein, um $ am Ende jeder Zeile anzuzeigen:
$ cat -E filename
Verwenden Sie die Notation ^ und M, außer LFD und TAB, und zeigen Sie alle nicht druckbaren Elemente an:
$ cat -v filename
Geben Sie Folgendes ein, um alle anzuzeigen:
$ cat -A fileName
Sample outputs:
Links
Siehe auch
Extern
Dateiinhalte anzeigen (cat)
cat (concatenate) verkettet Dateien und schreibt sie in die Standardausgabe
cat [-benstuvAET] [-number] [-number-nonblank] [-squeeze-blank] [-show-nonprinting] [-show-ends] [-show-tabs] [-show-all] [Datei ...]
cat liest beliebige Dateien und schreibt sie ohne Veränderung in die Standardausgabe. Durch Umlenkung der Ausgabe auf eine Datei ([../../../../ebooks/computer/betriebssysteme/linux/allgemein/unsortiert/linux_anwender_handbuch/linux_anwenderhandbuch_7-0/node26.html#umleitung siehe Ausgabeumleitung]) können so Dateien verkettet werden.
Außerdem wird cat häufig benutzt, um Dateien an Programme zu übergeben, die nur von der Standardeingabe lesen. (Solche Programme werden im allgemeinen als Filter bezeichnet.)
Für die Übergabe steht entweder die Ausgabeumlenkung der Shell mit `>' und `>>' zur Verfügung, oder die Ausgabe wird durch eine [../../../../ebooks/computer/betriebssysteme/linux/allgemein/unsortiert/linux_anwender_handbuch/linux_anwenderhandbuch_7-0/node26.html#pipelines Pipeline |] an den Filter weitergeleitet.
Beispiele
Mit dem cat-Kommando können Dateien ausgedruckt werden. Mit dem Kommando
cat Adressenliste > /dev/lp1
können Sie die Datei Adressenliste direkt der Gerätedatei /dev/lp1 zuführen, die den ersten parallelen Druckerport im System darstellt. Diese Methode ist aber sehr unelegant.
Sie umgeht und blockiert den Druckerspooler lpd, der über die reine Auslieferung hinaus noch die Formatierung der Dokumente erledigen kann.
Wenn ein Druckerdämon installiert ist, sollten Sie die ,,direkte`` Methode nur in Ausnahmefällen benutzen.
Wenn Sie zwei Dateien durch Umlenkung der Ausgabe von cat verketten wollen, müssen Sie den Standardausgabekanal immer in eine dritte Datei zielen lassen.
cat foo bar > foo cat: foo: input file is output file
führt NICHT zum erwünschten Ergebnis. Die Datei `foo' wird von der Shell vor der Ausführung von cat gelöscht, um die Ausgabe des Kommandos dorthin umzulenken. cat erkennt noch, dass eine Eingabedatei mit der Ausgabedatei übereinstimmt, Ihre Daten sind aber bereits verloren.
Ein verwandtes Problem kann beim Anhängen von Daten an eine bestehende Datei entstehen. Der Befehl
$ cat foo bar >> foo cat: foo: input file is output file $ _
würde zu einem ,,Kurzschluß`` führen, weil der schreibende Dateizeiger immer dem lesenden eine Dateilänge vorauseilen würde. Nicht unbedingt das gewünschte Ergebnis. cat erkennt diesen Fehler und verweigert die Ausführung. Die Datei foo bleibt also unverändert erhalten.
Problembehebung
Nach der Anzeige einer Binärdatei mit cat ist reaggiert das Terminal nicht mehr normal.* Das Terminal kann mit reset neu initialisiert werden.
Optionen
-b | alle nicht leeren Zeilen erhalten eine Zeilennummer |
-e | das gleiche wie -vE |
-n | sämtliche Zeilen werden numeriert |
-s | mehrere leere Zeilen in Folge werden zu einer einzigen leeren Zeile zusammengefaßt |
-t | das gleiche wie -vT |
-u | ohne Funktion |
-v | alle Kontrollzeichen außer TAB und NEWLINE werden angezeigt |
-A | das gleiche wie -vET |
-E | gibt ein `$' Zeichen am Ende jeder Zeile aus |
-T | die TAB werden als ^I angezeigt |
Dateien rückwärts ausgeben (tac)
tac wie cat, nur umgekehrt
tac [-br] [-s Trenner] [-before] [-regex] [-separator=Trenner] [Datei ...]
tac arbeitet in vieler Hinsicht wie cat. Es werden die einzelnen Felder der Datei zeilenweise ausgegeben, allerdings das letzte zuerst. Als Feldtrenner dient das Zeilenende, wenn kein anderer angegeben ist.
Der Feldtrenner wird zu dem Feld gezählt, das er abschließt, also an dessen Ende ausgegeben.
Optionen
-b | (before) der Feldtrenner wird zum darauffolgenden Feld gezählt, also an dessen Anfang ausgegeben. |
-r | der Feldtrenner ist ein regulärer Ausdruck |
-s Trenner | benutzt Trenner als Feldtrenner |