Früher habe ich cat
zum Anzeigen von Dateien verwendet. Dann habe ich gelernt, dass less
das normalerweise besser ist und ein Muss ist, wenn die Datei länger als ein paar Dutzend Zeilen ist.
Meine Frage: Gibt es jemals einen Grund, cat
statt zu verwenden less
? Gibt es eine Situation, in der cat
es eine bessere Lösung gibt?
less
undcat
lösen verschiedene Probleme und sie sind besser als die anderen in ihrer eigenen Problemdomänecat
es nur, um die Ausgabeless
danach weiterzuleiten.cat
, um sehr kurze Dateien auf die Konsole zu drucken, die Dateien in/proc
und/sys
sind sehr gute Kandidaten. Auf diese Weise kann ich den Inhalt mehrerer Dateien gleichzeitig sehen.Antworten:
Ich persönlich bevorzuge
view
statische odertail -f
dynamische Inhalte.Dies beantwortet Ihre Frage jedoch nicht. Es gibt ein Sprichwort "warum mehr verwenden, wenn Sie weniger haben" ;-)
Aber es gibt Fälle, in denen ich Katze weniger bevorzuge: Ich arbeite normalerweise mit X11-Fenstern. Diese Fenster haben einen Bildlaufpuffer, der auf einige hundert Zeilen eingestellt werden kann.
Ein
cat
For - sagen wir mal 200 Zeilen und dann die Maus mit der Bildlaufleiste zu benutzen ist für mich angenehmer alsless
in diesen Fällen.quelle
view
Sie das Üblichevim -R
oder haben Sie etwas anderes mit diesem Namen?less +F
macht wastail -f
macht.view
kein Alias; es ist eine Verbindung (zuvi
odervim
).vi
Schaut nach,argv[0]
wann es gestartet wird (um zu sehen, unter welchem Namen es aufgerufen wurde) und legt , wenn diesview
oder istrview
, den schreibgeschützten Modus fest (als ob Sie eingegeben hättenvim -R
).Obwohl Sie mit beiden Befehlen den Inhalt einer Datei anzeigen können, unterscheiden sich ihre ursprünglichen Zwecke erheblich.
weniger erweitert die Möglichkeiten von mehr . Letzteres wurde erstellt, um den Inhalt einer Datei bildschirmweise anzuzeigen. less fügt Funktionen wie Rückwärtsbewegungen und eine bessere Speicherverwaltung hinzu (Sie müssen nicht die gesamte Datei lesen, bevor Sie die ersten Zeilen sehen können).
cat verknüpft Dateien und druckt das Ergebnis auf der Standardausgabe. Wenn Sie nur eine Datei angeben, wird der Inhalt dieser Datei angezeigt. Es wird "leistungsstark", wenn Sie mehrere Dateien bereitstellen. Ein gutes Beispiel ist die Kombination von Split und Cat. Der erste Befehl teilt eine große Datei in kleine Teile. Der zweite verkettet dann die kleinen Teile zu einer einzigen Datei.
Zurück zu Ihrer Frage, cat wird in einem autonomen Skript bevorzugt, bei dem Dateien vollständig (oder verkettet) ohne Interaktion gelesen werden müssen. In Bezug auf die Anzeige von Dateien denke ich, ist es eher eine Frage des Geschmacks.
quelle
less
Ermöglicht immer die Suche in der Datei, wascat
nicht der Fall ist.Ich benutze normalerweise,
cat
wenn ich einen Befehl basierend auf etwas in der Datei eingeben muss.cat
Dies ist praktischer, da Sie die Datei (wenn sie klein ist) sehen können, während Sie auf die Shell-Eingabeaufforderung zugreifen können. Es ermöglicht auch das Auskleiden von Rohren.quelle
Wenn Sie mit mehr als einer Datei arbeiten und diese verketten möchten.
Von der Manpage:
quelle
Es gibt Menschen , die heftig argumentieren , dass der einzige Zweck
cat
zu con ist Katze enate Dateien. Für jede andere Verwendung gibt esmore
(oderless
).Dabei wird jedoch eine ganz wichtige Tatsache außer Acht gelassen:
cat
Ist ein Zeichen weniger einzugeben? Ich benutze diese Befehle so oft, dass ein Zeichen weniger ein Kinderspiel ist.Ein weiterer Grund ist, wenn Sie eine Datei erstellen möchten. Ich kopiere und füge häufig Text aus dem Internet in eine Datei wie diese ein (Eingabeaufforderung wird angezeigt):
Das heißt, ich öffne eine Datei
filename
für den Schreibzugriff, füge den Inhalt ein und schließe den Stream, indem ich Ctrl- drücke D. Wederless
nochmore
kann das und es ist schneller als das Öffnen eines Editors.quelle
$<filename
(wo$
die Eingabeaufforderung ist) $ PAGER mit stdin aufgerufen wird, das mit verbunden istfilename
. Das sind noch weniger Zeichen alscat
.pbpaste > filename
und ich glaube, X hat etwas Ähnliches. Ich benutze immer nochcat
für die schnelle Dateierstellung, nur nicht zum Einfügen.pbcopy
/pbpaste
für andere Zwecke benutze .q
zu beendenless
: DManchmal möchten Sie nicht die Paginierung, die dies
less
tut, und nur die vollständige Datei, die Sie verwenden möchtencat
.quelle
Ich verwende
cat
dazugrep
(mehrere) Dateien.cat <filename1> [<filename2> <filename3>] | grep -i "string of interest"
Ich weiß, dass
grep
Dateinamen unterstützt werden, aber wenn Sie dieselbe Datei nach verschiedenen Suchbegriffen durchsuchen, ist es einfacher, einen Befehl zu bearbeiten, bei dem der Suchbegriff das letzte in der Zeile ist, als Strg + Pfeiltaste in der Zeile zu drücken.quelle
cat
kann verwendet werden, um mehrere Binärdateien zu einer großen zusammenzufassen:quelle
Ich benutze
less -FX
, wasless
sich so verhält,cat
wenn eine Datei auf einem Bildschirm angezeigt werden kann. Aus derless(1)
Manpage:quelle
Ich denke, aufgrund der Poularität der Unix-Varianten müssen viele Leute ihre Systeme nicht mehr administrieren (mit einer Vergeltung). Im Ernstfall können Sie möglicherweise einen Neustart durchführen und Ihr System in einer so genannten eingeschränkten Umgebung betreten.
Sie erhalten eine Befehlszeile und Zugriff auf einen kleinen Satz von als nützlich erachteten Befehlen, die klein und normalerweise statisch verknüpft sind. Sie könnten vi als Editor oder sogar den kleineren ed bekommen, aber nicht Emacs oder Vim. Sie würden Katze bekommen, aber nicht weniger. Die Idee ist, Ihnen genügend Tools zur Verfügung zu stellen, mit denen Sie Ihr System reparieren können, ohne zu viele Ressourcen in Anspruch zu nehmen, da diese möglicherweise falsch konfiguriert oder alle Ressourcen verbraucht sind. Je weniger Befehle unter diesen Umständen vorliegen, desto überflüssiger ist es.
quelle
Und
less
ist nicht auf allen GNU / Linux-Distributionen vorinstalliert. (zB Gentoo)cat
ist wahrscheinlich überall.quelle
Der
cat
bleibt auf dem Bildschirm. Allesless
verschwindet.Abgeklärt von / für Volker Siegel:
Die Ausgabe von
cat
bleibt auf dem Bildschirm. Alles, was durch angezeigt wird,less
verschwindet nach dem Schließen.quelle
Es kann ein Problem mit der Rechteerweiterung geben, da Sie in "less" "v" drücken können, um eine Datei zu bearbeiten, oder "!" um einen Shell-Befehl zu senden.
Möglicherweise möchten Sie einigen Benutzern erlauben, eine Datei anzuzeigen, die nur vom Superuser gelesen werden kann, diesen Benutzern jedoch nicht erlauben, die Datei zu bearbeiten oder Superuser-Berechtigungen im Allgemeinen zu verwenden. Sie können dies tun, indem Sie '/ etc / sudoers' bearbeiten, damit diese 'sudo / bin / cat / etc / importantfile' verwenden können. Sie möchten 'sudo / usr / bin / less / etc / importantfile' nicht zulassen, da sie 'v' zum Bearbeiten der Datei oder '!' um eine Shell mit vollen Superuser-Rechten zu starten.
Natürlich könnten die Benutzer 'sudo / bin / cat / etc / importantfile | verwenden less 'und immer noch' less 'verwenden, ohne die Sicherheitsrisiken.
quelle
Die beiden sind unterschiedlich.
less
ist ein Nicht-Standard-Pager (more
der Standard -Pager ), der zum Anzeigen von Text verwendet wird, währendcat
es sich um ein Standard-Dienstprogramm handelt, mit dem alle Arten und Anzahlen von Datenströmen zu einem verkettet werden.Sie scheinen unter bestimmten Umständen dasselbe zu tun, aber auch andere Dienstprogramme.
quelle
Zur Bequemlichkeit. Katze hat 3 Zeichen, während mehr / weniger 4 Zeichen haben. Und das Tippen von Katzen erfordert nur Ihre linke Hand.
quelle
In Bezug darauf, wie die Zeichen auf dem Bildschirm angezeigt werden sollen,
less
können Sie tun, was Siecat
können. Und vieles mehr.Aber es gibt einen sehr guten Grund, in manchen Fällen Katze zu benutzen: Sie
less
ist einfach zu komplex, um sie auf sehr einfache Probleme zu werfen. Ich habe so viele Optionen, dass es schwierig ist, diecat
entsprechenden in der Manpage zu finden.Wollen Sie die Registerkarten in einer zeigen
Makefile
?In
man cat
ist die erste Option-A
.Die Beschreibung ist nicht hilfreich:
-vET
.Aber die lange Option Name klingt genau richtig:
--show-all
.Und
cat -A Makefile
macht was ich brauche.Nun, finden Sie das für
less
.quelle
Sowohl 'less' als auch 'more' funktionieren genau wie 'cat', wenn die Ausgabe kein Terminal (tty) ist. Bei Pipes und Dateien werden beide auf keine Paginierung zurückgesetzt.
Ich denke, man kann mit Sicherheit sagen, dass 'cat' auf jedem Unix-System, das Sie jemals finden werden, immer vorhanden ist. Das Vorhandensein von "weniger" und / oder "mehr" auf jedem System ist weniger vorhersehbar.
Wenn Sie daher in Skripten nur eine Operation ohne Paginierung benötigen, ist "cat" überall dort vorhanden, wo Ihr Skript auf einem Unix-System verwendet wird.
quelle
more
dies verfügbar sein wird, da es in der Single Unix-Spezifikation vorgeschrieben ist.less
oder einmore
vorhanden sein wird, aber ich denke, man kann einem bestimmten nicht vertrauen, noch dass es eine "wahre" Implementierung ist ... oft ist man auf den anderen ausgerichtet, manchmal sind sie " Es handelt sich um eine minimale, leichte Version.Das Piping von cat durch grep ist nützlich:
quelle
grep
ein Dateiname als Argument verwendet wird oder Sie die Umleitung verwenden könnten. Das Rohr ist teuer.less
" ist in der Frage Titel ...grep [search term] [filename]
Grund ist es mühsamer, den Suchbegriff zu bearbeiten, wenn ich das Terminalprotokoll verwende. Durch Weiterleiten an grep ist der Suchbegriff das Letzte in der Zeile und einfacher zu bearbeiten.cat
:< [filename] grep [search term]
und zu verwenden< filename tail -n 1000 | grep pattern
. Die Umleitung kann praktisch überall in einer Befehlszeile erfolgen.