Wofür wird "Katze" verwendet?

13

Ich habe den Befehl cat in einigen Online-Inhalten gesehen und war neugierig, was catpassiert ist und wofür er im Kontext von jemandem gedacht ist, der nur einige einfache Befehlszeilen-Inhalte ausführt.

cosmoflop12
quelle

Antworten:

12

cat‚s Hauptzweck ist es , con Katze enate Dateien. cat file1 file2 ...zeigt den Inhalt file, file2und die anderen nacheinander, als ob der Inhalt in einer einzigen Datei war. Siehe die Manpage :

NAME
       cat - concatenate and print files

Es ist für die Verwendung gedacht, wenn entweder:

  • Ein Zielbefehl kann nicht aus Dateien lesen, und Sie müssen mehrere Dateien an ihn übergeben. Ein Beispiel ist das trDienstprogramm. Normalerweise würden Sie mit einer Datei Folgendes tun:

    tr < file
    

    Bei mehreren Dateien kann die Umleitung jedoch nicht verwendet werden. Sie müssen also Folgendes tun:

    cat file1 file2 ... | tr
    
  • Ein Zielbefehl kann aus mehreren Dateien lesen, aber sein Verhalten kann sich ändern, wenn er mehrere Dateien enthält. Ein Beispiel ist wc, das die Anzahl für jede Datei zusammen mit den Dateinamen ausgibt, bei denen Sie möglicherweise nur die Gesamtsumme ohne Dateinamen haben wollten.

Denken Sie daran , dass die meisten Befehle auftreten ( grep, sed, awk, sort, ...) können Dateien völlig in Ordnung lesen.

Wenn Sie möchten , sehen Sie den Inhalt einer Datei, verwenden Sie einen Pager - lessund moresind beide hervorragend geeignet Dateien präsentieren für die Anzeige, und sind viel bequemer zu bedienen.

muru
quelle
Umleitung kann sehr gut mit mehreren Dateien verwendet werden , wie Sie es mit Prozess- und Kommandosubstitution kombinieren können: < <(cat file[12]) trsowie <<<$(cat file[12]) trbeide absolut gültige Möglichkeiten sind mehrere Dateien zu umleiten. Natürlich brauchen Sie catdas auch, nur die Rohrleitungen sind nicht der einzige Weg.
Dessert
@dessert Wenn Sie umständlich sein müssen, verwendet diese Umleitung immer noch nur eine einzige Datei - die Datei, die die stdout des Befehls darstellt (oder stdin, wenn umgekehrt). Bash unterstützt keine echte Umleitung mehrerer Dateien wie zsh.
muru
9

catist einer der am häufigsten verwendeten Befehle unter Unix-ähnlichen Betriebssystemen. Es hat drei verwandte Funktionen in Bezug auf Textdateien:

  1. Anzeigen von ihnen
  2. Kopien davon kombinieren
  3. neue erschaffen.
  4. Dateien kopieren

Die allgemeine Syntax der Katze lautet:

cat [options] [filenames] [-] [filenames]

Dateien lesen

Die häufigste Verwendung von cat ist das Lesen des Inhalts von Dateien, und cat ist häufig das bequemste Programm für diesen Zweck. Um eine Textdatei zur Anzeige auf dem Anzeigemonitor zu öffnen, müssen Sie lediglich das Wort cat gefolgt von einem Leerzeichen und dem Namen der Datei eingeben und anschließend die EINGABETASTE drücken. Im Folgenden wird beispielsweise der Inhalt einer Datei mit dem Namen file1 angezeigt:

cat file1

Verkettung

Die zweite Rolle der Katze ist die Verkettung. (Dies ist die Quelle für den merkwürdigen Namen der Katze.) Die Originaldateien sind nicht betroffen.

Der folgende Befehl verkettet beispielsweise Kopien des Inhalts der drei Dateien file1, file2 und file3:

cat file1 file2 file3

Der Inhalt jeder Datei wird auf dem Monitorbildschirm angezeigt. Diese Ausgabe kann genauso einfach mit dem Ausgabeumleitungsoperator in eine andere Datei wie Datei4 umgeleitet werden.

cat file1 file2 file3 > file4

Dateierstellung

Dank @muru comment: cat ist in der Lage, neue Dateien abhängig von der Shell-Umleitungsfunktion und nicht von sich selbst zu erstellen

Bei kleinen Dateien ist dies oft einfacher als mit vi, gedit oder anderen Texteditoren. Dazu geben Sie cat gefolgt vom Umleitungsoperator für die Ausgabe und dem Namen der zu erstellenden Datei ein ENTERund drücken dann und zuletzt gleichzeitig die Tasten Ctrl& d.

Beispielsweise kann eine neue Datei mit dem Namen file1 durch Eingabe erstellt werden

cat > file1

Drücken Sie dann ENTERund gleichzeitig die Tasten Ctrl& d.

PS1: Wenn eine Datei mit dem Namen file1 bereits vorhanden ist, wird sie überschrieben

PS2: Sie können an die verlassene Datei anhängen, indem Sie den Operator append ( >>Beispiel cat >> file1) verwenden

Dateien kopieren

Der Befehl cat kann auch verwendet werden ( abhängig von der Shell-Umleitungsfunktion), um eine neue Datei zu erstellen und die Daten aus einer vorhandenen Datei zu übertragen. Beispiel: Kopie der Datei erstellen oldfile.txt:

cat oldfile.txt > newfile.txt

Verweise:

Maythux
quelle
1
Zu 3: catDiese Dateien werden nicht erstellt - die Shell ist, wenn Sie die Umleitung verwendet haben. Das hättest du auch tun können echo foo > file1.
muru
@muru Sie haben völlig recht, aber es ist immer noch eine Verwendung von Cat-Befehl
Maythux
1
Nein, das ist es nicht. Sie schreiben zucat was tatsächlich von etwas anderem getan wird. Zum Beispiel hat das Ausführen less file1 > file2(oder grep '.*' file1 > fileoder awk 1 file1 > file2oder ...) den gleichen Effekt. Das Gleiche gilt für 4. Dies sind nur Missbräuche.
muru
Ich weiß, ich könnte es einfach verwenden > fileund das gleiche Ergebnis liefern, aber kann ich es nicht für gültig halten, das mit cat zu tun ?!
1.
1
Sie können, wenn Sie angeben, dass catdie Datei nicht erstellt wird. Zu sagen, dass catdie Datei erstellt oder kopiert wird, ist schlichtweg falsch.
muru
1

Es kann verwendet werden, um den Inhalt einer Datei anzuzeigen. Zum Beispiel: cat "my file.txt". Sie können auch tun man cat, um Details darüber anzuzeigen, wofür catverwendet werden kann.

Puneet Gill
quelle
0

Hier ist andere Möglichkeit zum Erstellen von Dateien mit Shell-Umleitung (oder Piping) und cat:

cat << EOF > foo.sh
#!/bin/sh
echo 'Hello World!'
EOF

cat << EOFgibt die folgenden Zeilen aus, bis die Zeichenfolge EOFerneut angetroffen wird. Dann leitet >( >>) die Ausgabe in die Datei um foo.sh. Wenn Sie alternativ eine Datei als Root erstellen müssen, können Sie die Ausgabe an den Befehl weiterleitentee ( tee -a) leiten, der vom Befehl ausgeführt wird sudo:

cat << EOF | sudo tee foo.sh && sudo chmod +x foo.sh
#!/bin/sh
HELLO='Hello World!'
echo "\$HELLO"
EOF
  • Das Obige macht die Datei ausführbar ( chmod +x), wenn sie erfolgreich erstellt wurde ( &&).
  • Die spezielle Bedeutung einiger Zeichen (as $) sollte \innerhalb der Ausgabe von (mit ) maskiert werden cat.
pa4080
quelle