Tastenzauber in der Konsole: Unterschied zwischen den Versionen

Aus Info-Theke
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Kategorie:Tutorials Übersicht über das Konsolen-Tutorial ==Kontextabhängige Ergänzung mittels Tabulator== Eine geniale Vereinfachung ist die Vervollst…“)
 
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Tutorials]]
[[Kategorie:Tutorials]]
[[Übersicht über das Konsolen-Tutorial]]
[[Übersicht über das Konsolen-Tutorial]]
==Die Eingabezeile==
Es gibt hier einen (Text-) Cursor, der bestimmt, wo die nächste sichtbare Taste (Buchstabe, Ziffer oder Sonderzeichen) erscheinen wird. Dieser Cursor kann nur mit den Pfeiltasten "rechts" und "links" oder der Rücktaste ("Backspace") verändert werden, '''nicht mit der Maus'''! Außerdem haben die Steuerungstasten eine Wirkung auf die Eingabezeile:
===Erste Schritte===
Öffne eine Konsole und tippe ein:
<pre>
ecco Hi
</pre>
Hm, da hat sich ein Fehler eingeschlichen: das sollte echo statt ecco heißen. Also mit der "Pfeil-links"-Taste so lange nach links gehen, bis der Cursor auf dem o steht (wenn der Cursor ein Block mit der Breite eines Zeichens hat oder hinter dem Buchstaben, wenn der Cursor ein senkrechter Strich ist), dann die Rücktaste (über der Enter-Taste, mit einem Linkspfeil markiert) drücken, dann wird das 2.te 'c' gelöscht. Die Taste 'h' drücken, dann steht da
<pre>
hm@ant:/home/hm$ echo Hi
</pre>
Die Enter-Taste kann jederzeit gedrückt werden, der Cursor muss nicht am Zeilenende stehen! Das Enter signalisiert der Shell, dass der Befehl vollständig ist und ausgeführt werden soll, und so schreibt der Befehl die Zeile "Hi".
Der Bildschirm sieht jetzt etwa so aus:
<pre>
hm@ant:/home/hm$ echo Hi
Hi
hm@ant:/home/hm$
</pre>
Der Prompt in der letzten Zeile fordert uns zu der nächsten Eingabe auf.
==Korrektur- und Suchmöglichkeiten im Shell-Eingabebereich==
Die Shell bash bietet bei der Eingabe Möglichkeiten eines Editors:
===Positionierung===
* Pfeil-links, Pfeil-rechts bewegen den Cursor in die jeweilige Richtung
* Pfeil-auf: Geht in der Historie Richtung "früher". Ein Tastendruck liefert den letzen Befeh, zwei mal Pfeil-auf liefert den vorletzten usw.
* Pfeil-ab: Geht in der Historie Richtung "später". Ist nur sinnvoll, wenn vorher Pfeil-auf gedrückt wurde.
* Strg-a ("Anfang") geht an den Anfang der Eingabe
* Strg-e ("Ende") geht an das Ende der Eingabe
* Strg-r ("search reverse") sucht inkrementell rückwärts: es wird nach jedem Tastendruck automatisch mit dem Begriff vervollständigt, der als erstes auf die bisherigen Eingaben passt. Wird nochmal Strg-r eingegeben, wird der nächste passende Befehl aus der Historie vorgeschlagen. Passt der Vorschlag, wird mit Enter der Befehl ausgeführt.
== Korrektur==
* Die Rücktaste löscht das Zeichen vor dem Cursor.
* Die Löschtaste löscht das Zeichen unter dem Cursor.
* Strg-k ("Kill") löscht vom Cursor bis zum Eingabeende.
==Kontextabhängige Ergänzung mittels Tabulator==
==Kontextabhängige Ergänzung mittels Tabulator==
Eine geniale Vereinfachung ist die Vervollständigung von Eingaben, und zwar kontextabhängig.
Eine geniale Vereinfachung ist die Vervollständigung von Eingaben, und zwar kontextabhängig.
Zeile 9: Zeile 47:
Wenn er nicht eindeutig ist, wird der gemeinsame Teil aller möglichen Begriffe ergänzt. Drückt man jetzt nochmal TAB, erscheint eine Auswahl der Begriffe, die in Frage kommen. Normalerweise müssen wir nur einen Buchstaben drücken und erneut TAB eingeben, die nächste Ergänzung erfolgt und so weiter, bis der Begriff vollständig ist.
Wenn er nicht eindeutig ist, wird der gemeinsame Teil aller möglichen Begriffe ergänzt. Drückt man jetzt nochmal TAB, erscheint eine Auswahl der Begriffe, die in Frage kommen. Normalerweise müssen wir nur einen Buchstaben drücken und erneut TAB eingeben, die nächste Ergänzung erfolgt und so weiter, bis der Begriff vollständig ist.
===Beispiel===
===Beispiel===
* Gegeben seien die Begriffe bild01.png, bild02.png und bilderrahmen.png.
Voraussetzungen schaffen:
* Wir geben ein 'B' TAB
<source lang="bash">
* Die Shell ergänzt Bild. Das ist die Gemeinsamkeit aller Begriffe.
cd /tmp ; mkdir bsp ; cd bsp
touch Text01.txt Text02.txt Textsammlung.txt
</source>
Hinweis: touch erzeugt die angegebenen Dateien.
 
Jetzt funktioniert folgendes Beispiel:
* Wir geben ein 'T' TAB
* Die Shell ergänzt Text. Das ist die Gemeinsamkeit aller Begriffe.
* Wir drücken TAB.
* Wir drücken TAB.
* Es werden alle 3 Begriffe ausgegeben: bild01.png, bild02.png und bilderrahmen.png
* Es werden alle 3 Begriffe ausgegeben: Text01.txt Text02.txt Textsammlung.txt
* Wir drücken '0', dann TAB
* Wir drücken '0', dann TAB
* Es werden die zwei passenden Begriffe ausgegeben: bild01.png und bild02.png. bilderrahmen.png passt ja wegen der '0' nicht mehr.
* Es werden die zwei passenden Begriffe ausgegeben: Text01.txt und Text02.txt. Textsammlung.txt passt ja wegen der '0' nicht mehr.
* Wir drücken '1' und TAB
* Wir drücken '1' und TAB
* Es wird der Rest von bild01.png ergänzt. Die Eingabe war jetzt eindeutig
* Es wird der Rest von Text01.txt ergänzt. Die Eingabe war jetzt eindeutig.


===Demonstration der Kontextabhängigkeit===
===Demonstration der Kontextabhängigkeit===
Zeile 41: Zeile 86:
Am meisten wird die Ergänzung bei Datei- und Verzeichnisnamen eingesetzt: Damit kann mit wenigen Tastendrücken eine Datei irgendwo im Verzeichnisbaum eingegeben werden. Das geht oft viel schneller als die Klickerei in GUI-Programmen.
Am meisten wird die Ergänzung bei Datei- und Verzeichnisnamen eingesetzt: Damit kann mit wenigen Tastendrücken eine Datei irgendwo im Verzeichnisbaum eingegeben werden. Das geht oft viel schneller als die Klickerei in GUI-Programmen.


==Korrektur- und Suchmöglichkeiten im Shell-Eingabebereich==
= Nächstes Kapitel =
Die Shell bash bietet bei der Eingabe Möglichkeiten eines Editors:
* [[Die häufigsten Befehle in der Konsole]]
 
===Positionierung===
* Pfeil-links, Pfeil-rechts bewegen den Cursor in die jeweilige Richtung
* Pfeil-auf: Geht in der Historie Richtung "früher". Ein Tastendruck liefert den letzen Befeh, zwei mal Pfeil-auf liefert den vorletzten usw.
* Pfeil-ab: Geht in der Historie Richtung "später". Ist nur sinnvoll, wenn vorher Pfeil-auf gedrückt wurde.
* Strg-a ("Anfang") geht an den Anfang der Eingabe
* Strg-e ("Ende") geht an das Ende der Eingabe
* Strg-r ("search reverse") sucht inkrementell rückwärts: es wird nach jedem Tastendruck automatisch mit dem Begriff vervollständigt, der als erstes auf die bisherigen Eingaben passt. Wird nochmal Strg-r eingegeben, wird der nächste passende Befehl aus der Historie vorgeschlagen. Passt der Vorschlag, wird mit Enter der Befehl ausgeführt.
 
== Korrektur==
* Die Rücktaste löscht das Zeichen vor dem Cursor.
* Die Löschtaste löscht das Zeichen unter dem Cursor.
* Strg-k ("Kill") löscht vom Cursor bis zum Eingabeende.

Aktuelle Version vom 22. August 2020, 02:50 Uhr

Übersicht über das Konsolen-Tutorial

Die Eingabezeile[Bearbeiten]

Es gibt hier einen (Text-) Cursor, der bestimmt, wo die nächste sichtbare Taste (Buchstabe, Ziffer oder Sonderzeichen) erscheinen wird. Dieser Cursor kann nur mit den Pfeiltasten "rechts" und "links" oder der Rücktaste ("Backspace") verändert werden, nicht mit der Maus! Außerdem haben die Steuerungstasten eine Wirkung auf die Eingabezeile:

Erste Schritte[Bearbeiten]

Öffne eine Konsole und tippe ein:

 ecco Hi

Hm, da hat sich ein Fehler eingeschlichen: das sollte echo statt ecco heißen. Also mit der "Pfeil-links"-Taste so lange nach links gehen, bis der Cursor auf dem o steht (wenn der Cursor ein Block mit der Breite eines Zeichens hat oder hinter dem Buchstaben, wenn der Cursor ein senkrechter Strich ist), dann die Rücktaste (über der Enter-Taste, mit einem Linkspfeil markiert) drücken, dann wird das 2.te 'c' gelöscht. Die Taste 'h' drücken, dann steht da

 hm@ant:/home/hm$ echo Hi

Die Enter-Taste kann jederzeit gedrückt werden, der Cursor muss nicht am Zeilenende stehen! Das Enter signalisiert der Shell, dass der Befehl vollständig ist und ausgeführt werden soll, und so schreibt der Befehl die Zeile "Hi". Der Bildschirm sieht jetzt etwa so aus:

hm@ant:/home/hm$ echo Hi
Hi
hm@ant:/home/hm$ 

Der Prompt in der letzten Zeile fordert uns zu der nächsten Eingabe auf.

Korrektur- und Suchmöglichkeiten im Shell-Eingabebereich[Bearbeiten]

Die Shell bash bietet bei der Eingabe Möglichkeiten eines Editors:

Positionierung[Bearbeiten]

  • Pfeil-links, Pfeil-rechts bewegen den Cursor in die jeweilige Richtung
  • Pfeil-auf: Geht in der Historie Richtung "früher". Ein Tastendruck liefert den letzen Befeh, zwei mal Pfeil-auf liefert den vorletzten usw.
  • Pfeil-ab: Geht in der Historie Richtung "später". Ist nur sinnvoll, wenn vorher Pfeil-auf gedrückt wurde.
  • Strg-a ("Anfang") geht an den Anfang der Eingabe
  • Strg-e ("Ende") geht an das Ende der Eingabe
  • Strg-r ("search reverse") sucht inkrementell rückwärts: es wird nach jedem Tastendruck automatisch mit dem Begriff vervollständigt, der als erstes auf die bisherigen Eingaben passt. Wird nochmal Strg-r eingegeben, wird der nächste passende Befehl aus der Historie vorgeschlagen. Passt der Vorschlag, wird mit Enter der Befehl ausgeführt.

Korrektur[Bearbeiten]

  • Die Rücktaste löscht das Zeichen vor dem Cursor.
  • Die Löschtaste löscht das Zeichen unter dem Cursor.
  • Strg-k ("Kill") löscht vom Cursor bis zum Eingabeende.

Kontextabhängige Ergänzung mittels Tabulator[Bearbeiten]

Eine geniale Vereinfachung ist die Vervollständigung von Eingaben, und zwar kontextabhängig. Das funktioniert zwar nicht immer, aber an den wichtigsten Stellen.

Das Prinzip der Vervollständigung[Bearbeiten]

Wir tippen einen Begriff nur teilweise ein und drücken dann die Tabulator-Taste (kurz TAB genannt). Wenn der Begriff schon eindeutig ist, wird der Rest des Begriffes automatisch ergänzt. Wenn er nicht eindeutig ist, wird der gemeinsame Teil aller möglichen Begriffe ergänzt. Drückt man jetzt nochmal TAB, erscheint eine Auswahl der Begriffe, die in Frage kommen. Normalerweise müssen wir nur einen Buchstaben drücken und erneut TAB eingeben, die nächste Ergänzung erfolgt und so weiter, bis der Begriff vollständig ist.

Beispiel[Bearbeiten]

Voraussetzungen schaffen:

 cd /tmp ; mkdir bsp ; cd bsp
 touch Text01.txt Text02.txt Textsammlung.txt

Hinweis: touch erzeugt die angegebenen Dateien.

Jetzt funktioniert folgendes Beispiel:

  • Wir geben ein 'T' TAB
  • Die Shell ergänzt Text. Das ist die Gemeinsamkeit aller Begriffe.
  • Wir drücken TAB.
  • Es werden alle 3 Begriffe ausgegeben: Text01.txt Text02.txt Textsammlung.txt
  • Wir drücken '0', dann TAB
  • Es werden die zwei passenden Begriffe ausgegeben: Text01.txt und Text02.txt. Textsammlung.txt passt ja wegen der '0' nicht mehr.
  • Wir drücken '1' und TAB
  • Es wird der Rest von Text01.txt ergänzt. Die Eingabe war jetzt eindeutig.

Demonstration der Kontextabhängigkeit[Bearbeiten]

Die Shell weiß, dass am Anfang einer Eingabe ein Befehl (Programm, Script oder Kommandosprachenelement) kommt. Geben wir nach dem Prompt also "apt-c" und TAB ein, werden nur Befehle mit diesem Anfang in die Vorschlagsmenge aufgenommen:

apt-cache   apt-cdrom   apt-config

Wir geben ein 'a' und TAB ein, es wird zu "apt-cache " ergänzt. Wir geben erneut ein TAB ein: Die Shell weiß jetzt, es muss ein Schalter von apt-cache sein und bietet an:

add        dotty      dumpavail  madison    policy     search     showpkg    stats      xvcg
depends    dump       gencaches  pkgnames   rdepends   show       showsrc    unmet      

Wir entscheiden uns für search, indem wir "se" und TAB drücken.

Die Shell ergänzt zu "apt-cache search ".

Ein erneutes TAB liefert nichts: Hier ist die Shell ratlos, denn es muss ein Suchstring folgen, und da gibt es keine vernünftigen Vorschlagsmöglichkeiten.

Noch ein Beispiel: Der Befehl "cd" erwartet danach ein Verzeichnis. Wir geben also ein "cd " TAB. Vorschlagsliste umfasst jetzt alle Verzeichnisse (und nicht etwa alle Dateien).

Am meisten wird die Ergänzung bei Datei- und Verzeichnisnamen eingesetzt: Damit kann mit wenigen Tastendrücken eine Datei irgendwo im Verzeichnisbaum eingegeben werden. Das geht oft viel schneller als die Klickerei in GUI-Programmen.

Nächstes Kapitel[Bearbeiten]