Katze (Unix)
Originalautor (en) | Ken Thompson, Dennis Ritchie |
---|---|
Entwickler (en) | AT & T Bell Laboratories |
Erstveröffentlichung | 3. November 1971 |
Betriebssystem | Unix, Unix-artig, Plan 9, Inferno, Reactos |
Plattform | Plattformübergreifend |
Typ | Befehl |
Lizenz | CoreUtils: GPLV3+ Reactos: GPLV2+ |
Katze
ist ein Standard UNIX -Dienstprogramm Das liest Dateien nacheinander und schreiben sie an Standardausgabe. Der Name wird von seiner Funktion zu (con) abgeleitetKatzeDateien (aus Lateinisch Catenare, "zu ketten"). Es wurde auf eine Reihe von Betriebssystemen portiert.
Geschichte
Katze
war Teil der frühen Versionen von Unix, z.B., Version 1und ersetzt pr
, a PDP-7 und Mehrheit Dienstprogramm zum Kopieren einer einzelnen Datei auf den Bildschirm.[1] Es wurde geschrieben von Ken Thompson und Dennis Ritchie. Die Version von Katze
gebündelt GNU CoreUtils wurde von Torbjorn Granlund geschrieben und Richard Stallman.[2] Das Reactos Die Version wurde von David Welch, Semyon Novikov und Hermès Bélusca geschrieben.[3]
Im Laufe der Zeit alternative Versorgungsunternehmen wie z. TAC
und Schläger
Ebenfalls verfügbar und brachte verschiedene neue Funktionen mit.[4][5]
Verwendungszweck
Das Einzel -Unix -Spezifikation definiert den Betrieb von Katze
So lesen Sie Dateien in der in ihren Argumenten angegebenen Sequenz und schreiben Sie ihren Inhalt in die Standardausgabe in derselben Sequenz. Die Spezifikation schreibt die Unterstützung eines Optionsflags vor, u Für die abgelöste Ausgabe, was bedeutet, dass jedes Byte nach dem Lesen geschrieben ist. Einige Betriebssysteme, wie diejenigen, die GNU verwenden KernversorgerTun Sie dies standardmäßig und ignorieren Sie die Flagge.[6]
Wenn eines der Eingabedateinamen als einzelner Bindestrich angegeben ist (-), dann Katze
liest an diesem Punkt in der Sequenz aus Standardeingabe. Wenn keine Dateien angegeben sind, Katze
liest nur aus Standardeingaben.
Der Befehl-Syntax ist:
CAT [Optionen] [Datei_Names]
Optionen
Beispiel einiger Katze
Optionen:[7]
- -b (GNU: -Number-Nonblank), Zahl nicht-Blank-Ausgangsleitungen
- -e impliziert -V Zeigen Sie aber auch Zeichen zum Ende der Line als an als $ (Nur GNU: -E Das gleiche, aber ohne zu implizieren -V)
- -n (GNU: --Nummer), Nummer alle Ausgangsleitungen
- -s (GNU: -Squeeze-Blank), drücken Sie mehrere benachbarte leere Linien zusammen
- -t impliziert -V, aber auch Registerkarten anzeigen als ^I (GNU: -T Das gleiche, aber ohne zu implizieren -V)
- -U Verwenden Sie abgelaufene E/A für Stdout. POSIX gibt das Verhalten ohne diese Option nicht an.
- -V (GNU: --how-nonprinting), Zeigt nicht druckende Zeichen an, mit Ausnahme von Registerkarten und dem Ende des Zeilenzeichens
Anwendungsfälle
Katze
Kann verwendet werden, um eine Datei in ein Programm zu leiten, das Klartext oder binäre Daten in seinem Eingabestream erwartet. Katze
zerstört keine Nicht-Text-Bytes, wenn sie verkettet und ausgibt. Daher sind die beiden Hauptanwendungsfälle Textdateien und bestimmte formatkompatible Arten von Binärdateien.
Die Verkettung des Textes ist auf Textdateien beschränkt, die mit derselben Legacy -Codierung wie z. ASCII. Katze
bietet keine Möglichkeit, Unicode -Textdateien mit a zu verkettet Byte -Bestellmarke oder Dateien, die verschiedene Textcodierungen voneinander verwenden.
Für viele strukturierte Binärdatensätze ist die resultierende kombinierte Datei möglicherweise nicht gültig. Wenn beispielsweise eine Datei eine eindeutige Header oder Fußzeile hat, dupliziert das Ergebnis diese fehlerhaft. Für einige Multimedia Digitale Containerformate, die resultierende Datei ist gültig und so Katze
Bietet ein effektives Mittel zum Anhängen von Dateien. Video -Streams können ein wesentliches Beispiel für Dateien sein, die Katze
kann ohne Probleme verkettet werden, z. das MPEG -Programmstream (MPEG-1 und MPEG-2) und Dv (Digitale Video) Formate, die grundsätzlich einfache Paketströme sind.
Beispiele
Befehl | Erläuterung |
---|---|
CAT -Datei1.txt | Dateiinhalte anzeigen |
cat file1.txt file2.txt | Verkettieren Sie zwei Textdateien und zeigen Sie das Ergebnis im Terminal an |
cat file1.txt file2.txt> newCompinedFile.txt | Verkettieren Sie zwei Textdateien und schreiben Sie sie in eine neue Datei |
cat> newfile.txt | Erstellen Sie eine Datei namens newfile.txt. Geben Sie die gewünschte Eingabe ein und drücken Sie Strg+D, um fertig zu werden. Der Text befindet sich in Datei newfile.txt. |
cat -n Datei1.txt File2.txt> newnumberedFile.txt | Einige Implementierungen von CAT mit Option -n können auch Zeilen zahlen |
cat file1.txt> file2.txt | Kopieren Sie den Inhalt von Datei1.txt in file2.txt |
CAT -Datei1.txt >> file2.txt | Fügen Sie den Inhalt von Datei1.txt an File2.txt an |
CAT -Datei1.txt File2.txt File3.txt | sort> test4 | Verkettieren Sie die Dateien, sortieren Sie die vollständige Zeilenmenge und schreiben Sie die Ausgabe in eine neu erstellte Datei |
cat file1.txt file2.txt | weniger | Führen Sie das Programm "weniger" mit der Verkettung von Datei1 und Datei2 als Eingabe aus |
CAT -Datei1.txt | GREP -Beispiel | Markieren Sie das Wort "Beispiel" in Datei1.txt |
Befehl | Katze | Abbrechen "Befehl" Spezialverhalten (z. B. Paging), wenn es direkt an TTY schreibt (vgl. UUOC unten) |
Unix -Kultur
Jargon -Datei -Definition
Das Jargon -Datei Version 4.4.7 listet dies als Definition von auf Katze
:
- Um eine gesamte Datei auf den Bildschirm oder eine andere Ausgabesöhne ohne Pause auszuspucken (Syn. Blast).
- Um große Datenmengen auf ein unvorbereitetes Ziel zu werfen oder ohne die Absicht, sie sorgfältig zu durchsuchen. Verwendung: als albern angesehen. Seltene Außen -UNIX -Standorte. Siehe auch dd, BLT.
Unter den UNIX -Fans, Katze (1) wird als hervorragendes Beispiel für ein hervorragendes Beispiel für Benutzeroberfläche Design, da es den Dateiinhalt ohne solche Ausführlichkeit wie Abstand oder Header zwischen den Dateien liefert und da die Dateien nicht aus Textzeilen bestehen, sondern mit Daten funktioniert.
Unter Unix -Kritikern, Katze (1) wird als kanonisches Beispiel für schlechtes Benutzer-Grenzface-Design aufgrund seines absolut unerwünschten Namens angesehen. Es wird weitaus häufiger verwendet, um eine einzelne Datei zu sprengen Standardausgabe als zwei oder mehr Dateien verkettet. Der Name Katze Denn die frühere Operation ist genauso unintuitiv wie beispielsweise: LISPELN's CDR.
Nutzloser Gebrauch von Katze
Nutzloser Gebrauch von Katze (UUOC) ist ein üblicher Unix -Jargon für Befehlszeilenkonstrukte, die dem Benutzer nur eine Funktion der Bequemlichkeit bieten.[8] Beim Computer, das Wort "Missbrauch",[9] Im zweiten Sinne der Definition wird die übermäßige oder unnötige Verwendung eines Sprachkonstrukts herabgesetzt. so Missbrauch von Katze
wird manchmal als "Katzenmissbrauch" bezeichnet. Beispiel eines gemeinsamen Katze
Missbrauch wird in der Auszeichnung vergeben:
Katzenmateiname | Befehl arg1 arg2 argn
Dies kann mit Verwendung neu geschrieben werden Umleitung von Stdin Stattdessen in einer der folgenden Formen (der erste ist traditioneller):
Befehl arg1 arg2 argn <Dateiname <Dateiname Befehl arg1 arg2 argn
Über die anderen Vorteile hinaus erlauben die Umleitungsformulare der Eingabe Befehl aufführen Zufallszugriff in der Datei, während die Katze
Beispiele nicht. Dies liegt daran, dass das Umleitungsformular die Datei als Stdin -Dateideskriptor öffnet, die Befehl kann vollständig zugreifen, während die Katze
Das Formular liefert einfach die Daten als Stream von Bytes.
Ein weiterer gemeinsamer Fall wo Katze
Es ist unnötig, wo ein Befehl standardmäßig zum Betrieb auf Stdin ist, wird jedoch aus einer Datei gelesen, wenn der Dateiname als Argument angegeben wird. Dies ist für viele gemeinsame Befehle der Fall; die folgenden Beispiele
Katze "$ file" | Grep "$ muster" kat "$ file" | weniger
kann stattdessen als geschrieben werden
Grep "$ muster" "$ file" weniger "$ file"
Eine häufige interaktive Verwendung von Katze
Für eine einzelne Datei besteht die Ausgabe des Inhalts einer Datei an die Standardausgabe. Wenn der Ausgang jedoch geleitet oder umgeleitet wird, Katze
ist unnötig.
A Katze
Mit UUOC geschrieben wird möglicherweise aus Lesbarkeitsgründen noch bevorzugt, da das Lesen eines links nach rechts links links leichten Lesens leichter zu konzipieren ist.[10] Außerdem kann eine falsche Verwendung des Umleitungssymbols ">" anstelle von "<" (häufig neben Tastaturen) den Inhalt einer Datei dauerhaft löschen, mit anderen Worten kuschelnund eine Möglichkeit, dies zu vermeiden, besteht darin Katze
mit Rohren. Vergleichen:
Befehl <in | command2> out <im Befehl | command2> out
mit:
Katze in | Befehl | command2> out
Siehe auch
- Einfügen
- Teilt, ein Befehl, der eine Datei in Stücke aufteilt, die Katze dann wieder anschließen kann.
- ZCAT
- weniger
Verweise
- ^ McIlroy, M. D. (1987). A Research Unix Reader: Annotierte Auszüge aus dem Programmierhandbuch, 1971–1986 (PDF) (Technischer Bericht). Cstr. Bell Labs. 139.
- ^ Linux Benutzerbefehle Handbuch - -
- ^ "ReactOS/cat.c bei Master · ReactOS/ReactOS · GitHub". github.com.
- ^ "TAC (1) - Linux Manual Page". Man7.org.
- ^ "Sharkdp/Fledermaus". 2. Dezember 2021 - über Github.
- ^ GNU CoreUtils. "GNU CoreUtils Handbuch", GNU, Abgerufen am 1. März 2017.
- ^ OpenBSD Manuelle Seite und die GNU Core Utiltites Version von Cat
- ^ comp.unix.shell. "Früher Auszeichnung Beispiel von UUOC (1994)", comp.unix.shell über Google Groups, Abgerufen am 1. März 2017.
- ^ "Merriam Websters Definition von Missbrauch". Abgerufen 2021-02-25.
- ^ Nguyen, Dan. "Stanford Computational Journalism Lab". stanford.edu. Abgerufen 2017-10-08.
Externe Links
- Die einzelne Unix -Spezifikation, Version 4 von Die offene Gruppe : Verkettungs- und Druckdateien - Shell and Utilities Referenz,
- Unix -Stil oder Cat -v als schädlich angesehen - Ein Papier von Rob Pike auf dem richtigen Unix -Befehlsdesign mit CAT als Beispiel.
- Katze (1) Originalhandbuchseite in der ersten Ausgabe von Unix.
- GNU CoreUtils Hinweis : Verkettete und schreibe Dateien -
- OpenBSD Allgemeine Befehle Handbuch : Verkettung und Druckdateien - -
- Freebsd Allgemeine Befehle Handbuch - -
- Plan 9 Programmierhandbuch, Volume 1 - -
- GNU CoreUtils Hinweis : Verkettete und schreiben Dateien umgekehrt -