Katze (Unix)

Katze
Cat-example-command.gif
Originalautor (en) Ken Thompson,
Dennis Ritchie
Entwickler (en) AT & T Bell Laboratories
Erstveröffentlichung 3. November 1971; vor 50 Jahren
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:

  1. Um eine gesamte Datei auf den Bildschirm oder eine andere Ausgabesöhne ohne Pause auszuspucken (Syn. Blast).
  2. 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

Verweise

  1. ^ McIlroy, M. D. (1987). A Research Unix Reader: Annotierte Auszüge aus dem Programmierhandbuch, 1971–1986 (PDF) (Technischer Bericht). Cstr. Bell Labs. 139.
  2. ^ Katze (1)- -Linux Benutzerbefehle Handbuch
  3. ^ "ReactOS/cat.c bei Master · ReactOS/ReactOS · GitHub". github.com.
  4. ^ "TAC (1) - Linux Manual Page". Man7.org.
  5. ^ "Sharkdp/Fledermaus". 2. Dezember 2021 - über Github.
  6. ^ GNU CoreUtils. "GNU CoreUtils Handbuch", GNU, Abgerufen am 1. März 2017.
  7. ^ OpenBSD Manuelle Seite und die GNU Core Utiltites Version von Cat
  8. ^ comp.unix.shell. "Früher Auszeichnung Beispiel von UUOC (1994)", comp.unix.shell über Google Groups, Abgerufen am 1. März 2017.
  9. ^ "Merriam Websters Definition von Missbrauch". Abgerufen 2021-02-25.
  10. ^ Nguyen, Dan. "Stanford Computational Journalism Lab". stanford.edu. Abgerufen 2017-10-08.

Externe Links