stdout - less vs. vim

_RM_

Cadet 4th Year
Registriert
Juli 2018
Beiträge
124
Hallo Forum,

ich habe gerade mit dem Tool "base64" herumgespielt und dort kann man z.B. mit cat encoded.file | base64 -d die Daten im File decoden. Genauso kann man auch echo Y29vbHRvb2wK | base64 -d schreiben.
Also im Endeffekt schickt man was nach stdout und das wird dann von base64 verarbeitet, und wiederum nach stdout geschickt.

Meine Annahme war nun, dass es mit dem Tool less nicht geht. Mein Gedanke dabei war, dass less nicht nur einfach Text nach stdout schickt, sondern es auch Funktionen anbietet, wie z.B. das Suchen nach Text indem man z.B. /irgendwas eingibt oder eben das zeilen- oder seitenweise "scrollen" mit Enter oder Bild-Auf/Ab.
Natürlich hab ich es dann ausprobiert und mein Gedanke hat sich als falsch herausgestellt und less encoded.file | base64 -d funktioniert in meinem Fall genauso gut wie mit cat oder echo, sogar wenn es seitenweise Text ist.

Ich tue mir etwas schwer nun meine erste Frage zu formulieren, also: Wie funktioniert das? :D
Wie weiß das Programm, dass es im einen Fall interaktiv mit allen Funktionen (scrollen, suchen, usw.) starten muss, und im anderen Fall einfach alle Daten auf einmal an stdout schicken muss?

Und weil ich so krass drauf bin und ich es dann so richtig wissen wollte, habe ich vim ausprobiert. Vom Look & Feel ist das ja irgendwie ähnlich, wie less. Oben wird der Text angezeigt und unten hat man eine Statusleiste und eine Art "Command Line", wo man z.B. :q eingeben kann, um das Programm zu verlassen.
So, und hier war mein Gedanke von vorhin wohl richtig und es geht wie "erwartet" nicht. Wenn ich nämlich vim encoded.file | base64 -d aufrufe, kommt ein Fehler Vim: Warning: Output is not to a terminal.

Wenn "Output is not to a terminal", wohin ist Output dann? Schlussendlich zeigt mir vim den Text ja fast gleich an, wie less.
Worin liegen nun also die technischen Unterschiede zwischen vim und less?

Und die vorerst letzte Frage, die ich mir stelle, wie die "interne Command Line" innerhalb eines solchen Programms funktioniert. Wie kommt der interne Befehl vom Terminal zum Programm? Hat das mit Terminfo und Termcap zu tun?

Ich würde mich über eine detaillierte Erläuterung und/oder spezifische Keywords nach denen ich googlen kann sakrisch freuen.
 
 
Zurück
Oben