Diskussion:Cat (Unix)

aus Wikipedia, der freien Enzyklopädie

letztes Beispiel

Hi, was bedeutet denn "cat -"? Fehlt da nicht ein Buchstabe als Schalter? Außerdem: Wo kommt die Zeile, die das Wort Wikipedia enthält, her? --91.64.61.156 12:32, 25. Okt. 2012 (CEST)

die Zeile ist schon richtig, auch wenn das Beispiel trotzdem Unsinn ist. Genau diesen Quatsch bezeichnet man als "useless use of cat" und es ist dermaßen verpönt, daß es dazu sogar ironisch gemeinte Preisverleihungen gibt (hier). Mit "-" wird stdin bezeichnet und das ist die Eingabe, keine Option. Es ist quasi ein spezieller Dateiname. --bakunin (Diskussion) 08:00, 8. Mai 2013 (CEST)

GNU-Lastigkeit

Der Artikel beschreibt leider nicht das Unix-cat, sondern eher das GNU-cat. Das ist zwar ähnlich, aber eben nicht gleich. Zu behaupten, daß "UNIX-Varianten typischerweise implementieren" was das GNU-cat halt so kann, ist TF, außerdem irreführend und darüber hinaus durch nichts belegt.

Dazu kommt, daß der Autor des Einleitungssatzes wohl selbst nicht weiß, was man mit cat macht. Der Satz "Das Unix-Programm cat wird zum Anzeigen [...] genutzt." erhebt "useless use of cat" zum Zweck des Programms, was wohl nicht sein kann. --bakunin (Diskussion) 08:12, 8. Mai 2013 (CEST)

Beispiele für Alternativen zum Missbrauch

häufigste Verwendung des Kommandos cat - nämlich mit einer einzigen Datei als Argument - ist eigentlich ein Missbrauch - und wie lautet nun die Alternative zu # cat /home/irgendwas.txt, also nur zur Ausgabe des Dateiinhalts auf stdout ohne weitere Verarbeitung? 5.153.122.54 09:29, 11. Jun. 2014 (CEST)

more --Ath (Diskussion) 10:16, 11. Jun. 2014 (CEST)

Defekte Weblinks

GiftBot (Diskussion) 05:23, 1. Feb. 2016 (CET)

cat zum Anzeigen von Dateien

@bakunin: Du meintest, man würde cat nicht zum Anzeigen von Dateiinhalten benutzen. Genau dafür ist es aber das Standardprogramm. Es gibt auch keine populäre Alternative (und nein, more, less und ähnliches sind keine Alternativen, da sie etwas anderes machen und daher an anderen Stellen (beispielweise einem TTY-Terminal) eingesetzt werden). Useless use of cat wird zwar meist so formuliert, dass es dir Recht gibt, in den Beispielen geht es aber immer nur um Pipelining. Reines Anzeigen scheint zumindest nicht in erster Linie gemeint zu sein. Und selbst wenn es das wäre, würde es trotzdem dafür benutzt werden, die Aussage in der Einleitung nach meinem Edit wäre also auch dann faktisch richtig. Gedacht ist es dafür aber tatsächlich nicht. Daraus allerdings auch nur die Andeutung abzuleiten, man solle es nicht, wäre POV. Seiten, auf denen gesagt wird, man solle cat zum Anzeigen benutzen: [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15] (letztere enthält eine doppeldeutige Formulierung, aber das Beispiel macht klar, was gemeint ist). --Zupanto (Diskussion) 15:07, 9. Sep. 2016 (CEST)

Nachtrag: Außerdem sind UUOCs auch nicht unbedingt schlecht. Einige finden es zumindest in einigen Fällen eleganter ([16], [17] (es gibt bei beiden mehrere interessante Beiträge))). Denk an das NPOV-Prinzip. Zum anlegen von Dateien kann man es außerdem auch benutzen ([18]). --Zupanto (Diskussion) 15:16, 9. Sep. 2016 (CEST)

cat eignet sich nur zum anzeigen kurzer Textdateien. Bei längeren Dateien sieht man nur das Ende. Enthält die Datei Steuersequenzen, kann durch die ausgabe die Einstellungen des Terminals verändert werden. Der Terminal muss dann resetet werden. Auch werden nichtdruckbare Zeichen nicht angezeigt. Es ist deshalb besser, spezielle Anzeigeprogramme , wie more oder less zu benutzen. --Ath (Diskussion) 20:43, 9. Sep. 2016 (CEST)

Zumindest in meiner Installation kann man einfach cat -v benutzen, um das Problem mit den Steuerzeichen zu beheben. Soweit ich weiß schneidet cat selbst auch bei großen Dateien nichts ab und bei Terminalemulationen dürfte auch das Terminal keine Probleme machen. Aber es ist sowieso Fakt, dass es häufig zum Anzeigen verwendet wird, und es nur wegzulassen, weil es dir nicht gefällt, wäre POV. --Zupanto (Diskussion) 22:58, 10. Sep. 2016 (CEST)

~Schluchz~
"cat -v" kannst du vielleicht in deiner LINUX-Distribution benutzen, aber der POSIX-Standard (UND DAS IST, VERFLUCHTE SCHEISSE NOCHEINMAL, DIE EINZIGE AUTORITÄT FÜR UNIX-SYSTEME) kennt keine Option "-v"! Dieses Lemma beschreibt aber - siehe auch den Zusatz "(Unix)" - das UNIX-Kommando "cat" und nicht das GNU-Kommando "cat", das zwar genauso heißt, aber was anderes (wenn auch ähnliches) tut. Daß "GNU" (was ausdrücklich für "GNU (is) Not Unix" steht) eben NICHT UNIX ist, schreibe ich mittlerweile unter den gefühlt hunderttausendsten Artikel. Etwas, nur weils auf meinem Laptop funktioniert, ist noch lange nicht "in allen modernen Betriebssystemen" so, aber dergleichen Schmonzes wird jedem dritten UNIX-Artikel von Leuten hinzugefügt, nur weil sie sich mal eben ein Ubuntu installiert haben und da zufällig irgendwas so war.
Sieh dir die von dir angeführten "Quellen" an: das sind praktisch ausschließlich Linux-Seiten und die verwenden (weil Linux nur ein Kernel ist und keine eigenen Systemprogramme hat) eben die GNU-Utilities und beziehen sich auf diese. Was man unter Linux oder mit GNU-Utilities zum Standard erhebt, interessiert hier aber nicht, weil es um ein UNIX-Programm geht. Du wirst auf der Seite über "Mercedes" aus demselben Grund auch keine Beschreibung des Spielzeugs von Matchbox finden, nur weil die auch ein paar Mercedes-Modelle haben, sondern die Autos des gleichnamigen Herstelles - und zwar nur diese! --bakunin (Diskussion) 13:49, 17. Sep. 2016 (CEST)
Nachtrag: Genau auf das erwähnte "cat -v" bin ich im Artikel eigens eingegangen. Andererseits: wer ist schon Brian Kernighan und warum sollte es ausgerechnet der wissen? --bakunin (Diskussion) 14:01, 17. Sep. 2016 (CEST)

Artikel sind keineswegs nur auf den POSIX-Standard beschränkt, sondern können sehr wohl auch auf übliche Abweichungen und Ergänzungen eingehen, auch in der Einleitung. Auch Free-, Open-, und NetBSD sowie OS X haben -v implementiert ([19], [20], [21], [22]) und geben als Zweck unter Anderem das Ausgeben der Dateien an (auch wenn die Formulierung mehrdeutig ist). Damit ist die Möglichkeit in den wichtigsten unixoiden Betriebssystem implementiert. Außerdem wird es − unabhängig davon − nun einmal dafür verwendet. Es gibt, auch wenn ich mich schon wieder wiederhole, auch keine Alternative unter den Standardwerkzeugen.

Mit der aktuellen Einleitung kann ich allerdings leben, dass man es auch zum Anzeigen verwenden kann folgt ja daraus.

Übrigens ist GNU selbstverständlich nicht UNIX, dann wäre es schrecklich veraltet, aber es ist Unix (beachte die Groß- und Kleinschreibung), im Sinne eines unixoiden Betriebssystems − auch wenn der Kernel noch in der Entwicklungsphase ist.

--Zupanto (Diskussion) 17:53, 5. Okt. 2016 (CEST)

Die Abkürzung GNU steht für "GNU's not Unix". Offenbar betrachten sich die Entwickler dieser Software selbst als EBEN NICHT Unix, wenn sie sich schon so nennen. Da der Artikel aber "cat (Unix)" heißt (und nicht "cat (Unix und alles was damit entfernte Ähnlichkeit hat)", wird hier das Unix-cat und nicht irgendwas ähnliches referiert. Auf der Seite "Mercedes" stehen auch ausschließlich die Autos des gleichnamigen Herstellers beschrieben und nicht die Spielzeug-Modelle, die Matchbox davon baut.

Was genau "Unix" ist, ist eine Frage der Zertifizierung, denn "Unix" ist eine Marke (die eigentlich "UNIX" heißt). Die Marke gehört der Open Group, die auch die Zertifizierungen anbietet. Um die Zertifizierung zu bekommen, muß man eben den POSIX-Standard und alle Vorschriften bzw. Anforderungen darin erfüllen. Der Standard ist keineswegs "veraltet", sondern aktuell und er wird laufend aktualisiert. Beispiele für solche zertifizierten Unixe sind (ohne Anspruch auf Vollständigkeit): IBM AIX, HP-UX, Solaris, Tru64 und andere mehr. Aber das alles hast du ja sicherlich gewußt, als du "UNIX" als "schrecklich veraltet" bezeichnet hast, oder? Die letzte AIX-Version auf meinem NIM-Server ist 7.1.4 und gerade mal ein paar Wochen alt. Ganz schön veraltet, möchte ich sagen.

Nur so nebenbei gesagt: gerade HURD, der GNU-Kernel ist nicht nur in der Entwicklungsphase (und das seit etwa 20 Jahren), er ist auch ganz bewußt eben KEIN Unix-System - sondern eben HURD! (Mit dem selben Recht könnte man die Programmiersprache Java als C++-Dialekt bezeichnen, nur weil sie sich in gewissen Punkt ähnlich sind. Ich maße mir kein Urteil darüber an, ob das gut, schlecht oder einfach nur anders ist, aber Fakt ist, daß GNU bisher nur eine Sammlung von allen möglichen Utilities und kein Betriebssystem ist. Alles weitere ist zu klären, wenn HURD irgendwann fertig wird und ein GNU-Betriebssystem tatsächlich existiert.

Schließlich sage ich es gerne nochmal, denn entweder hast du den Artikel nicht gelesen oder das dort Gesagte nicht verstanden: es gibt Gründe, warum "cat" unter Unix besser kein "-v" unterstützt (bzw. man sich besser nicht drauf verläßt, daß es das tut) und diese Gründe sind in den angeführten Quellen von Rob Pike und Brian Kernighan dargelegt worden. Und da jeder, der eine vielfältige Landschaft mit vielen unterschiedlichen Unix-Varianten zu betreuen hat, sich beim Abfassen von Kommandos peinlich genau an den POSIX-Standard hält, weil der der kleinste gemeinsame Nenner aller dieser Platformen ist, ist es völlig wurscht, ob irgendein Hersteller glaubt, ein "-v" einbauen zu müssen oder nicht. Es wird nicht verwendet werden. Das Rechenzentrum, in dem ich arbeite, betreibt etwa 600 Unix-Systeme, die meisten AIX, daneben Solaris, HP-UX und zwei oder drei SCO-Systeme. Dieser Grad der Diversifizierung ist durchaus der Normalfall. Alle meine Scripte müssen auf allen diesen Platformen verläßlich dasselbe tun. Was glaubst du, wie weit ich kommen würde, wenn ich irgenwelche Spezialitäten einzelner Dialekte verwenden würde? Ich würde aus lauter Fallunterscheidungen wenn OS=dieses mach das, aber nur wenn Version>=soundso, hingegen wenn ... nicht mehr wissen, wo oben und unten ist. Einige meiner Scripte sind jetzt schon weit über tausend Zeilen lang, das würde sie dann vermutlich auf das Zehnfache aufblähen.

--bakunin (Diskussion) 21:04, 5. Okt. 2016 (CEST)

Was UNIX angeht hast du wohl Recht, Sorry (außer das es nicht reicht, nur den POSIX-Standard zu erfüllen, die SUS hat noch weitere Bedingungen).

Du hast ja selbst gesagt, eigentlich heißt die Marke „UNIX“. Ich denke, hätte man die SUS gemeint, hätte den Begriff auch großgeschrieben. Guck dir mal Unix#Typologie_der_Varianten an. Nur eine Minderheit aller unixoiden Betriebssysteme unterstützt übrigens POSIX komplett, darauf ist also streng genommen auch kein Verlass. Auf -v kann man sich in der Praxis stärker verlassen, als auf exotische Teile von POSIX. Es ist natürlich trotzdem gut, sich beim Schreiben von Skripten, die für unterschiedliche Systeme gedacht sind, an den POSIX-Standard zu halten, aber es soll ja Menschen geben, die die Shell tatsächlich auch für andere Sachen benutzen…

Den Namen „GNU“ muss man aus dem Kontext sehen. Als GNU geschaffen wurde, war Unix noch ein konkretes und aktives Betriebssystem, das, trotz Ähnlichkeiten, eben nicht GNU war.

--Zupanto (Diskussion) 14:52, 6. Okt. 2016 (CEST)

Überarbeitung vom 2016 10 03

Die Erwähnung des UUOC habe ich aus der Einleitung wieder rausgenommen. Man kann alles Mögliche mit allem Möglichen machen, aber das bedeutet nicht, daß in der Einleitung auch alles mögliche stehen sollte. Zum Vergleich: das Lemma Automobil erwähnt auch nicht, daß man es dazu benutzen kann, sich von der Brücke zu stürzen, auch wenn das zweifellos möglich ist und auch öfter vorkommt.

cat datei ist (bzw. hat als Ergebnis) übrigens ein(en) Datenstrom (der dann via Pipeline, Redirection, FIFO oder was-auch-immer weiter verarbeitet werden kann). Das habe ich durch Änderung des Texts klarzustellen versucht.

--bakunin (Diskussion) 13:38, 3. Okt. 2016 (CEST)