Weshalb läuft in Linux (Ubuntu) so viel über das Terminal?

... komplette Frage anzeigen

12 Antworten

Hallo

Weshalb läuft in Linux (Ubuntu) so viel über das Terminal?

Weil, außer bei openSUSE, bei jeder Distribution für viele Funktionen keine GUI's (1) existieren.

Gibt es davon mehrere

  1. Terminal ist ein Begriff für eine Umgebung (2) über die man Zugriff auf die Shell (3) hat.
  2. Terminal (2) ist der Name eines solchen Programms das unter Ubuntu (nicht Kubuntu, Lubuntu oder Xubuntu) Standard ist.
  3. Ein anderer Ausdruck für eine solche Umgebung ist Konsole
  4. Auch das Wort Konsole wird irreführend für ein solches Programm verwendet, dieses ist bei openSUSE die Standard Terminalemulation.
  5. Bei allen Distributionen gibt es immer eine Shell (3) die für jeden Benutzer extra eingestellt werden kann.
  6. Die Shell (3) gibt es nativ sogar sieben mal bei einem GNU/Linux und kann über Strg+Alt+F[1-7] aufgerufen werden (Dazu braucht es keine Terminalemulation)

wozu sind die da?

Die Shell (3) ist das Bindeglied zwischen dem Kernel (also Linux in Reinform) und den Programm- & Benutzereingaben, sie schützt den Kern des Betriebssystems wie eine Muschel die darin befindliche Perle.

Wie erlernt man die ganzen Befehle?

Lesen der Manpages, aussprobieren (mit Backup), Bücher, Studium, Lehrgang usw.

Mir wurde schon geraten einfach häufig mit dem Terminal zu arbeiten

  • Der Hauptgrund ist der, das die allermeisten Kommandos im Terminal (der Konsole ect.) auf allen Distributionen gleich sind.
  • Auch der Umstand das man darin schneller zum Ziel kommt (wenn man weiß was zu tun ist) als über unzählige Klicks mit einem Zeigegerät.

man irgendwann seine 20 Befehle auswendig weiß, aber nicht weiß was
diese genau machen beziehungsweise was diese alphanumerischen Zeichen
bedeute.

Genau deswegen gibt es ja die Manpages!

Stell Dir doch mal vor Du wolltest alle Funktionen des Programms ls in einem grafischen Programm, einer so genannten GUI, unterbringen, es wäre absolut unübersichtlich und nur wenige Benutzer brauchen auch jede der möglichen Parameter & Optionen. Hier mal die Kurzform für ls zum ansehen:

man ls
-a, --all
-A, --almost-all
-b, --escape
-B, --ignore-backups
-c with -lt: sort by, and show, ctime (time of last modification of file status information); with -l: show ctime and sort by name; other-
-C list entries by columns
-d, --directory
-D, --dired
-f do not sort, enable -aU, disable -ls --color
-F, --classify
-g like -l, but do not list owner
-G, --no-group
-h, --human-readable
-H, --dereference-command-line
-i, --inode
-I, --ignore=PATTERN
-k, --kibibytes
-l use a long listing format
-L, --dereference
-m fill width with a comma separated list of entries
-n, --numeric-uid-gid
-N, --literal
-o like -l, but do not list group information
-p, --indicator-style=slash
-q, --hide-control-chars
-Q, --quote-name
-r, --reverse
-R, --recursive
-s, --size
-S sort by file size
-t sort by modification time, newest first
-T, --tabsize=COLS
-u with -lt: sort by, and show, access time; with -l: show access time and sort by name; otherwise: sort by access time
-U do not sort; list entries in directory order
-v natural sort of (version) numbers within text
-w, --width=COLS
-x list entries by lines instead of by columns
-X sort alphabetically by entry extension
-Z, --context

Das sind schon 39 Parameter die man übergeben kann (nicht alle gleichzeitig aber dennoch ordentlich viel.) Bei zypper, dem Konfigurationstool von openSUSE, sind es sogar 163 Parameter & Optionen! (4)

Ich möchte nicht nach dem Schema wenn A dann B lernen, ich möchte verstehen. 

Glücklicherweise gibt es dieses Wissen, genau wie jedes andere auch, nur durch lernen und nicht mit der Muttermilch oder einem Trichter - Jeder der diese Dinge heute kann hat sie auch irgendwann vorher auch mal erlernt!

Hier mal zwei einfache Beispiele:

zypper se -si who

ruft das Programm zypper auf und übergibt als Option das se (für search, was das Suchmodul startet) und gibt zusätzlich noch die Parameter -si (search installed only) mit an.

Oder

dpkg-query -l *who*

Ruft unter Debian (und Forks) das Programm dpkg auf und übergibt durch das -query gleich das gewünschte Modul als Option mit an. Der Parameter -l (List) wird als Parameter übergeben und am Ende noch der Suchbegriff *who* mit Platzhaltern um jedes Paket das who im Namen trägt (who, whois, ect.) zu finden.

Linuxhase

-------------------------------------------------------------------------------------------------

  • (1) grafische Benutzerschnittstelle
  • (2) Terminalemulation/Konsolenemulation
  • (3) (englisches Wort für Muschel) es gibt z.B.: sh, bash, dash, ksh, zshell uvm. Diese wird in der /etc/passwd jedem regulären Benutzer zugeordnet.
  • (4) Das Programm hat eine Modulare Schnittstelle so das es genau genommen mehrere "kleine" Programme sind die hier zusammengefasst sind.
Antwort bewerten Vielen Dank für Deine Bewertung

Betriebssysteme bestehen aus einem Kern und der wird durch andere Programme
einmal geschützt aber auch für den Bediener ( Benutzer , User) nutzbar
gemacht. Diese "anderen Programme" liegen, bildlich betrachtet, wie eine
Schale um den Kern und werden daher auch als Shell bezeichnet.

In Linux sind solche, vom User nutzbare Programme, die Shell's. Diese
stellen in einigermaßen verständlicher Form das Bindeglied zwischen Mensch
und dem Betriebssystem dar. Als solche Programme sind die bash (Standard
bei Linux), die ksh, die csh, die tclsh, die sh und weitere verfügbar.

In Linux kann man alles (auch wirklich alles) was einzustellen ist mit
Hilfe der Shell ( also der darin eingebauten Befehle) und weiteren
grundlegenden Programmen, erledigen.

Das funktioniert auch dann, wenn der Rechner gar keine Grafikkarte hat und
die schönen bunten Bilder mit Button und Menüs nicht benutzt werden können.

Nichts gegen grafische Oberflächen, kann man doch damit die interaktive
Arbeit in vielleicht 80% der Fälle erledigen. Das sollte ausreichend sein,
wenn man so einen PC für Büroarbeit benutzen will oder muss.

Was ist mit dem Rest? In einem Unternehmen ruft man den Support an, der
sollte dann auchdas können. Zu Hause ist man aber auch gleichzeitig der
Administrator oder man geht in einen Computerladen oder man meldet sich bei
gutefrage.net an.
Andere kaufen sich ein Buch, das nicht die grafischen Oberflächen
beschreibt, es muss die Konsolen- (oder auch Terminal-) Befehle beschreiben.

Wer dann als erstes etwas über die Befehle apropos und man gelesen hat,
der kann auch auf seinem Linux-PC alle Einzelheiten lesen.

Die erste Erkenntnis ist, dass es eine Unmenge von Möglichkeiten gibt an die
man nie im Leben gedacht hat (und wohl auch nie benötigt). Wenn doch, dann
ließt man einfach ( z.B. man ls ).
Deine Frage lief darauf hinaus, warum Linux für das, was zu erledigen ist,
kein grafisches Interface ( GUI) hat.
Finde den Programmierer, der die vielen Möglichkeiten eines Linux-Befehls
auf einem Bild zur Wahl stellen kann. Finde den Benutzer, der das dann
versteht oder auch nur in irgendwelchen Unter-Menüs findet.

Hier ein Start-Beispiel:

apropos copy

aus der Liste könnte man cp oder dd auswählen

man cp

man dd

und erhält alle Möglichkeiten angezeigt.

Und nein, das muss man nicht auswendig lernen, man muss wissen, wo man
anfängt. Irgendwann bleiben einige Dinge dann doch im Gehirn hängen und man muss nicht bei jeder Kleinigkeit das Manual ( man ) befragen.

Ein kleines Unix/Linux-Buch sollte aber unverzichtbar sein.


Leider verhindert die gutefrage.net-Software mal wieder, dass Befehle als Code-Beispiele formatiert werden.  Wenn ich hier
z.B. man cp  so darstellen will, wird alles zum Code.


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von guenterhalt
22.04.2016, 16:14

daran, dass andere eine Antwort nicht gut finden, muss sich der Autor gewöhnen und es akzeptieren.
Wenn man das aber nur mit einem "Pfeil nach unten" kund getan wird, ist das eine Verletzung der allgemeinen Regeln des Anstands.

Was hat dir, unbekannter Leser/Bewerter, an meiner Antwort gestört?


2

Naja im Grunde sind es kleine Programme die du ausführst. Und im Endeffekt lernst du aber "wenn A dann B", da du zum Beispiel wenn du den Inhalt des Verzeichnisses ausgben willst ls (für List) verwenden wirst.

Die wichtigsten und einfachsten Befehle:

ls (LiSt) - Gebe Inhalte des aktuellen Verzeichnisses aus

cd (Change Directory) - Gehe in Ordner. cd .. bringt dich in das Verzeichnis, das das aktuelle beinhaltet

pwd (Print Working Directory) - Gebe den absoluten Pfad des aktuellen Verzeichnisses aus

cat ... (concat. Wie sich die lange Form schreibt weiss ich nich aber heisst " zusammenfügen") - Füge den Inhalt/die Inhalte der angegeben Dateien zusammen und gebe des daraus resultierenden Text aus

cat ... | less - Das selbe wie obendrüber. Gibt aber nicht den Text einfach aus, sondern gibt dir ein neues Fenster in dem du durch den Text navigieren kannst, und ne Suchfunktion hast.

Die Pipe(|) lässt dich die Ausgabe eines Programms in ein anderes weiterleiten.

> - Speicher die Ausgabe von befehl in datei
Bsp.: echo Hallo > hallo.txt

Falls du noch was spezielles brauchst: Frag

Antwort bewerten Vielen Dank für Deine Bewertung

Wie andere schon geschrieben haben, gibt man über ein „Terminal“ Befehle per Tastatur ein ... die Maus bleibt da meist außen vor (Ausnahme: irgend etwas markieren ... und als Bestandteil eines Befehls übernehmen).

Da die GNU-Tools seit Jahren getestet sind und daher wohl auch fehlerfrei, kann man mit denen über Befehls-Verkettung (pipe) richtige kleine Programmen schreiben ... wenn man mehrere Kommandos im komplexen Zusammenhang braucht. packt man das Ganze in eine Datei und führt die als „Script“ aus.

Ein Beispiel:

#!/bin/bash
#
####Abfrage des BS-Version via Datei-Inhalt
#
#Walli2: Ubuntu
# *** last changed by $Author: guenter $/bin/ver
# *** Version in CVS: $Revision: 1.5
# *** From $Date: 2015/05/04 19:53:06 $last edit 04.05.2015

echo -e -n "\\n\\tBetriebs-System: "
#
####prüfe das laufende System
#
if [ -r /etc/SuSE-release ]; then
echo -e -n "SUSE, Version:\\n\\n"
cat /etc/SuSE-release

elif [ -r /etc/lsb-release ]; then
echo -e -n "Ubuntu\\nVersion:\\n"
cat /etc/lsb-release

elif [ -r /etc/sidux-version ]; then
echo -e -n "Sidux\\nVersion:\\n\\n"
cat /etc/sidux-version

elif [ -r /etc/fedora-release ]; then
echo -e -n "Fedora\\nVersion:\\n\\n"
cat /etc/fedora-release

elif [ -r /etc/debian_version ]; then
echo -e -n "Debian\\nVersion:\\n\\n"
cat /etc/debian_version
echo ""
cat /etc/os-release

elif [ -r /etc/system-release ]; then
cat /etc/system-release

else
echo Sonstige
cat /proc/version_signature
fi

Arch=$(getconf LONG_BIT)
echo -en "\\n\\tBS-Typ: $Arch Bit\\n"

echo -en "\\tKernel: "
uname -r
echo -e "\\n\\tCPU:"
lscpu |egrep "Archi|mode|Vendor|MHz"
echo ""

####Suchen der Datei mit den Versions-Daten:
#find /etc/ -name "*release*" 2>/dev/null
# oder
find /etc/ -name "*version*" 2>/dev/null
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von GWBln
24.04.2016, 00:43

.. irgendwie konnte ich da keine normalen Text mehr anhängen, deshalb als Kommentar:

Anstatt ein GUI zu basteln, kann man so regelrechte Programme schreiben.

Suche mal nach „Einzeiler“ + „Linux“ ... du wirst staunen, was man da alles anstellen kann!

Schau dir z.B. mal an:

http://www.torsten-traenkner.de/linux/oneliner.php

Diese Vielfalt hast du unter Windows nicht, du bist völlig frei in der Anwendung und Anordnung ... und ohne Lizenzkosten!

0

Mag am Anfang etwas ungewohnt sein, aber wenn du dich einmal richtig "eingearbeitet" hast wirst du das nicht mehr missen wollen, geht einfach vieles so deutlich schneller als mit dem Rumgeklicke in Windows :)

Antwort bewerten Vielen Dank für Deine Bewertung

Wenn du es verstehen möchtest, dann fang bei Null an.

Linux war früher nur über die Konsole bedienbar, da gab es kein Userinterface mit Desktop etc.

Lad dir z.B. Linux Debian runter, installiere es ohne grafisches Interface (ohne GUI) und dann fang mit einfachen Dingen an wie Ordner/Dateien erstellen, Programme installieren oder Berechtigungen setzen.

PS: Linux ist kein Windows.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von VBHHerzog
22.04.2016, 08:45

noch erwähnenswert ist das alle gängigen betriebssysteme auf unix basieren, bis auf windows :)

es gibt aber im netz auch viele open books die den umgang mit der kommandozeile erklären.

aber die konsole, ist eins der größten vorteile von linux, da linux sich so super administrieren lässt :)

1

Einfach dauernd damit arbeiten.
Ein guter Tipp um sich die Funktionen zu merken: alle Befehle sind abkürzungen Bsp.: cp - copy, ls - list, rm - remove usw.

Warum das Ubuntu soviel übers Terminal läuft?
Ich kann jetzt mit der Frage nicht so recht etwas anfangen, aber auch bei windows geht das(wenn auch nicht ganz so gut).

Wenn du das nicht magst kannst du aber auch eine Grafische Benutzeroberfläche installieren.
Wenn man sich aber mal mit der Konsole auskennt, kann man darüber alles wesentlich schneller erledigen, eine sehr tolle sache.

Antwort bewerten Vielen Dank für Deine Bewertung

Ich würde sagen "Learning by Doing". Installiere dir einfach ein Linux und fang an. Infos über Befehle bzw deren möglichen Parametern kannst du bei den meisten Befehlen mit "Befehl" /help in Erfahrung bringen. Ubuntu und Suse sind übrigens in einer sehr großen Communitiy im Netz vertreten. Findest also sehr viel Infos per Suchmaschiene. Beide können größtenteils über grafische Oberflächen gesteuert werden.

Es gibt aber auch so einige Distros die hauptsächlich per Terminal konfiguriert werden müssen. Benutzt du diese, lernst du es mMn man schnellsten.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von guenterhalt
22.04.2016, 12:17

"Befehl" /help

das muss aber ganz ganz ganz neu sein.  In den letzten 21 Jahren ( so lange benutze ich Linux, Unix noch länger) ging das bei vielen Befehlen nur mit

Befehl --help

wie sollte man auch die Kennzeichnung der Wurzel  ( / -> da wo alles anfängt) von der Kennzeichnung  für eine Option unterscheiden?

Eine Option wurde bei Unix und Linux immer mit einem - gekennzeichnet. Da man mehrere Optionen (zugehörige Einzelzeichen) auch ohne Trennzeichen als "ein Wort"  schreiben kann würde -help auch -h -e -l -p bedeuten. Um dem Programm zu sagen, dass das mit -help nicht erfolgen soll, wird ein zweites - davor gestellt, daher --help .

1

Meine Tochter nutzt seit 4 Jahren begeistert Ubuntu als Hauptbetriebssystem, eine Konsole hat sie noch nie benötigt.

Neben meinem Linux Rechner hingegen (mit verschiedenen Linuxen) liegen immer die im Web leicht auffindbaren Befehlslisten. Mit einem Terminalbefehl geht vieles deutlich schneller als über GUI (grafisches Benutzer Interface).

Ich kenne keine schnellere Moglichkeit ein Netzwerkgerät anzupingen (auf Vorhandensein zu testen) als mit dem Konsolenbefehl Ping.

Auch einen Webauftritt vollständig herunterzuzerren, so dass er mit dem Browser auf der lokalen Platte sofort genutzt werden kann, geht nur mit "wget www.irgendwas.de" nervenschonend und effektiv. 

Das Terminal ist für den kundigen Nutzer eine gute Möglichkeit, wesentlich schneller ans Ziel zu gelangen.

Antwort bewerten Vielen Dank für Deine Bewertung

Ich kann auch nicht alle Befehle auswendig, das kann vermutlich niemand. Aber die, die ich halt oft brauche schon. Was sie bedeuten ist eigentlich logisch, wenn man Englisch versteht. Schau am besten mal hier nach, das Terminal erleichtert dir einiges.:

https://wiki.ubuntuusers.de/Terminal/

Antwort bewerten Vielen Dank für Deine Bewertung

Gottseidank ist das so, wenn man damit umgehen kann, möchte man es nie mehr missen. 

Wenn du mit den wichtigsten Befehlen umgehen kannst, macht es Spaß.

Wenn du im Internet nach "Linux die wichtigsten Kommandos" suchst, bist du gleich auf dem laufenden.

Ich empfehle dir das folgende Buch: Linux Kommandoreferenz , Shell-Befehle von A bis Z von Michael Kofler, Galileo Press, Bonn.

Antwort bewerten Vielen Dank für Deine Bewertung

man <befehl> bringt Dich weiter. Da steht normalerweise alles drin.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?