VERBOTEN Linux-Anleitung
alexanderbraun.de

Die Linux-Konsole - arbeiten im Terminal

Einführung

Terminal

Die meisten hier erwähnten Informationen sind für alle Linux-Derivate gültig, wobei leichte Unterschiede zu Tage treten können. Erstellt und getestet sind die Informationen jedoch nur unter Ubuntu 16.04

Linux ist inzwischen großteils grafisch bedienbar. Aber dennoch lässt sich vieles auf der Konsole schneller und effektiver erledigen. Die mächtigsten Werkzeuge sind auf der Konsole verfügbar und lange bevor ein aufwändiges Programm gestartet wurde, das eine Aufgabe erledigt, ist diese mit einem einfachen Konsolenbefehl oft schon drei mal durchgeführt. Daher hat Die Konsole unter Linux nichts an ihrer Aktualität verloren.

Und auch wenn sich viele Anwender noch scheuen Text in ein schwarzes Fenster ein zu geben, so ist das Interesse mit diesen Tools umzugehen nach wie vor ungebrochen.

Das Terminal wird gestartet mit der Tastenkombination Ctrl-Alt-T

Allgemeines

Folgende Dinge sind im folgenden zu beachten:

  • Im Terminal werden Aufgaben ausgeführt, in dem man Befehle aufruft
  • Linux verfügt über viele Befehle - ein paar sind auf dieser Seite beschrieben
  • Um Text auszugeben, kann man den Befehl echo "irgendwas" verwenden. Wörtlich so aufgerufen steht anschließend der Text"irgendwas" in der Kommandozeile.
  • Was sind Optionen und Argumente?
    • Ein Befehl hat Optionen und Argumente. Er wird aufgerufen indem die Optionen nach dem Befehl und die Argumente nach den Optionen stehen.
    • Optionen fangen immer mit entweder einem "-" oder einem "--" an - sie sind zu verstehen wie Schalter, die dem Befehl sagen was er tun soll. Z.b. sagt cp -r dem Copy-Befehl (cp) dass er rekursiv (-r) arbeiten soll. Der Copy-Befehl wird weiter unten beschrieben
    • Argumente sind oftmals einfach die Dateien mit denen etwas getan werden soll. Im obigen Beispiel des echo-Befehls ist der Text "irgendwas" das Argument. Argumente sind also der Teil des Befehls, der sagt mit was etwas gemacht werden soll
    • Befehl, Optionen und Argumente werden durch ein oder mehrere Leerzeichen getrennt
  • Die Konsole schreit nicht herum. Wenn ein Befehl ohne Fehler durchgeführt wurde, wird man im Allgemeinen keine Antwort lesen können. Nur wenn bei einem Befehl ein Fehler aufgetreten ist, geben die meisten Befehle eine Fehlermeldung aus.
  • Es gibt Kommentare. Ein Kommentar ist ein Teil, der nicht ausgeführt oder verwendet wird, sondern mit dem zusätzlche Informationen eingegeben werden können, die man nur hinschreibt, um etwas besser verständlich zu machen.
    Ein Kommentar in der Shell beginnt immer mit Startzeichen "#". Alles was nach einem "#" steht, wird nicht mehr ausgeführt. Auf dieser Seite verwende ich Kommentare, um in den Beispielen deutlicher zu machen, was gerade geschieht.

Verzeichnisse und Dateien

/
├── bin
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lib
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── sys
├── tmp
├── usr
└── var
Typischer Verzeichnisbaum unter Linux

Eines der fundamentalen Unix-Konzepte ist die Datei; alles ist eine Datei. Da unter Unix die Arbeit im Terminal von zentraler Bedeutung ist sind diese Dateien meist ASCII-Dateien oder zumindest suggerieren sie dies. Daher sind ein Großteil der Linux-Kommandos Text-basiert. Unter Linux ist damit alles eine Datei. Geräte werden als Dateien dargestellt (z.b. /dev/sda ist eine Festplatte), Laufzeit und Hardwareinformationen können aus Dateien abgerufen werden (z.B. /proc/cpuinfo beinhaltet Informationen zum Prozessor), Verzeichnisse sind Dateien und die abgelegten Programme und Daten sind ebenfalls Dateien.

Daher ist für das Verständnis erst einmal wichtig, zu verstehen, wie die Dateien auf dem System abgelegt sind. Ein neuen Linux-Anwender findet in seinem Dateimanager oft einen Ordner "Persönlicher Ordner". Unter Ubunutu ist dies zumindest der Fall. Obwohl dies dazu gemacht wurde, um den Neulingen den Einstieg zu erleichtern sorgt es doch für mehr Verwirrung als es hilft.

Es gibt keinen Ordner "Persönlicher Ordner"!!! ; es sei denn man würde einen anlegen.

Hierbei handelt es sich um das sogenannte Home-Verzeichnis!!!!!

Jeder Anwender hat ein Home-Verzeichnis - das ist sein persönlicher Bereich auf der Festplatte, in dem er arbeitet. Es gibt Bereiche auf der Platte, die mit Konfigurationen gefüllt sind, in anderen sind Programme, wiederum andere sind für Log-Dateien gedacht. Der Home bereich liegt immer unter
/home/<username>
auf der Festplatte, wobei <username> durch den Namen des Anwenders ersetzt wird.

Der User alexander findet also sein Home-Verzeichnis unter /home/alexander

Sich durch den Dateibaum bewegen

Jeder kennt einen Datei-Manager um sich den Inhalt der Platte an zu zeigen. In der Konsole gibt es hierfür eine Hand voll Befehle:

  • pwd
  • cd
  • ls

pwd

pwd steht für "Print Working Directory"; Das heißt so viel, wie: "Zeige mir den aktuellen Pfad"- also den Punkt im Dateisystem, an dem man sich gerade befindet. Hat man gerade ein neues Terminal geöffnet so befindet man sich beispielsweise im Home-Verzeichnis:
Dies wird angezeigt durch eine Tilde: ~ oder durch den kompletten Pfad: /home/alexander.

Mit pwd wird also der aktuelle Pfad ausgegeben.

cd

Möchte man sich in ein anderes Verzeichnis bewegen, dann verwendet man den Befehl cd <verzeichnis>

Verzeichnis-Angaben in der Konsole können immer entweder relative oder absolut sein:

  • Absolute Verzeichnisangaben: Es wird der komplette Pfad vom ersten "/" an verwendet. Absolute Verzeichnisangaben beginnen daher immer mit einem "/". Ein absoluter Pfad ist von überall gültig und verweist immer auf das gleiche Verzeichnis.
    Beispiele:
    cd /home/alexander 
    				
    Wechselt in das Verzeichnis /home/alexander
    cd /opt 
    				
    Wechselt in das Verzeichnis /opt
  • Relative Verzeichnisangaben: relative Verzeichnisangaben beginnen nie mit einem "/". Es wird das Verzeichnis in dem Stil "zwei hoch, dann Verzeichnis xy ... usw. " angegeben. In der folgenden Erklärung gehen wir von folgendem Verzeichnisbaum aus:

    In den Beispielen unten gehen wir von folgender Verzeichnisstruktur aus:

    .
    ├── drei
    │   ├── a
    │   │   ├── i
    │   │   ├── ii
    │   ├── b
    │   │   ├── i
    │   │   ├── ii
    ├── eins
    │   ├── a
    │   │   ├── i
    │   │   ├── ii
    │   ├── b
    │   │   ├── i
    │   │   ├── ii
    └── zwei
        ├── a
        │   ├── i
        │   ├── ii
        ├── b
        │   ├── i
        │   ├── ii
        └── c
            ├── i
            └── ii				
    				

    Es gelten folgende Schreibweisen:

    • . oder ./
      Das ist das aktuelle Verzeichnis. Diese Schreibweise ist vor allem dann von Bedeutung, wenn man später ein Programm im aktuellen Verzeichnis ausführen möchte - hierzu später mehr. Um das Verzeichnis ./texte anzugeben kann man auch einfach nur texte schreiben.
      Befindet man sich im obigen Beispiel im Verzeichnis drei, dann bezeichnet man die Verzeichnisse ii mit der Verzeichnis-Angabe ./a/ii oder ./b/ii
    • .. oder ../
      Ein Verzeichnis nach oben. Wenn man sich also im Verzeichnis
      zwei/b/ii
      befindet und das Verzeichnis
      drei/a/ii
      benennen möchte, so gibt man dies wie folgt an:

      ../../../drei/a/ii

    Um dies noch weiter zu verdeutlichen folgendes Beispiel:

    cd ./drei 
    cd ./b
    cd ../
    cd a
    cd ../zwei/b/ii 
    				

Anzeigen des Ordner-Inhalts: ls [Optionen] [<verzeichnis>]

Mit dem Befehl ls kann man sich den Inhalt eines Verzeichnisses anzeigen lassen. Wird der Befehl ohne weitere Angaben aufgerufen wird der Inhalt des aktuellen Verzeichnisses ausgegeben. Hierbei werden die Dateien und Ordner in mehreren Spalten angezeigt

alex@rechner:~$ cd /etc
/etc

alex@rechner:/etc$_ ls
acpi                           hosts                    printcap
adduser.conf                   hosts.allow              profile
alternatives                   hosts.deny               profile.d
anacrontab                     hp                       protocols
apache2                        ifplugd                  pulse
....				
				

ls besitzt eine Vielzahl von Optionen und Möglichkeiten. Zwei werden besonders häufig verwendet:

  • ls -l: Zeigt die Dateien in einem langen Format.
    alex@rechner:~$ cd /etc
    /etc
    
    alex@rechner:/etc$_ ls -l		
    drwxr-xr-x  3 root root     4096 Jul 19  2016 acpi
    -rw-r--r--  1 root root     3028 Jul 19  2016 adduser.conf
    drwxr-xr-x  2 root root     4096 Dez 27 16:42 alternatives
    -rw-r--r--  1 root root      401 Dez 29  2014 anacrontab
    drwxr-xr-x  8 root root     4096 Jan  2 18:25 apache2
    -rw-r--r--  1 root root      112 Jan 10  2014 apg.conf
    drwxr-xr-x  6 root root     4096 Jul 19  2016 apm
    drwxr-xr-x  3 root root     4096 Okt 19 17:14 apparmor
    drwxr-xr-x  8 root root     4096 Jan  2 11:50 apparmor.d
    drwxr-xr-x  5 root root     4096 Nov 21 10:47 apport
    -rw-r--r--  1 root root      389 Apr 18  2016 appstream.conf
    drwxr-xr-x  6 root root     4096 Okt 20 12:18 apt
    drwxr-xr-x  3 root root     4096 Jul 19  2016 aptdaemon
    				
    Die Spalten bedeuten folgendes von links nach rechts:
    • Zugriffsrechte; beginnt dieser Text mit d so handelt es sich um ein Verzeichnis
    • Anzahl Hardlinks (wird an anderer Stelle erklärt)
    • User, dem die Datei / das Verzeichnis gehört
    • Gruppe, dem die Datei / das Verzeichnis gehört
    • Dateigröße in Byte
    • Monat Tag Jahr der letzten Änderung
    • Dateiname
  • ls -a: Zeigt alle Dateien; Dateien, die mit einem Punkt beginnen, sind versteckte Dateien. Diese sind ohne -a nicht sichtbar
    alex@rechner:~$ cd 
    alex@rechner:~$_ ls -a				
    .                                      .gradle
    ..                                     .gramps
    .adobe                                 .hplip
    .aliases                               images
    .aliases~                              iso
    
    				

Übung

  1. Starte ein Terminal mit Ctrl-Alt-T
  2. Gebe den aktuelle Pfad aus. (pwd)
  3. Wechsle mit absoluten und relativen Pfadangaben durch dein Dateisystem
  4. Lass dir jeweils die Dateien anzeigen: einmal normal, einmal im langen Ausgabeformat und schließlich inklusiver versteckter Dateien

Verzeichnisse erstellen und entfernen

mkdir

Um ein Verzeichnis zu erstellen genügt der Befehl: mkdir [Verzeichnisnahme] wobei [Verzeichnisnahme] der Verzeichnisnahme ist.
alex@rechner:~$ mkdir testDir
alex@rechner:~$ ls 	
testDir
				

rmdir

Analog zu mkdir wird verwendet..

Mit rmdir verzeichnisnahme wird ein leeres Verzeichnis wieder entfernt. Ein leeres Verzeichnis!. Versucht man mit rmdir ein Verzeichnis zu löschen, das noch Dateien oder weitere Verzeichnisse enthält, so wird dieses nicht entfernt, wie im folgenden Beispiel zu sehen.

alex@rechner:~$ rmdir testDir
alex@rechner:~$ ls 	

alex@rechner:~$ rmdir testDir
rmdir: konnte 'testDir' nicht entfernen: Das Verzeichnis ist nicht leer

				

Es ist sehr empfehlenswert, immer zu versuchen diesen Befehl zu verwenden. Verzeichnisse können auch mit ihrem gesamten Inhalt gelöscht werden. Aber wenn dies getan wird, ist alles was darin war wirklich weg. Es gibt auf der Kommandozeile keinen Papierkorb. Was hier gelöscht wurde bleibt gelöscht. Daher ist Sorgfalt angesagt, wenn man nicht seine Daten verlieren möchte.

Dateien löschen - rm

Verzeichnisse lassen sich, wenn sie leer sind, mit dem Befehl rmdir löschen, wie wir gerade gesehen haben. Aber wie löscht man Dateien? Hierfür existiert der Befehl rm für "remove.

Auch an dieser Stelle nochmals: Dateien, die man auf der Konsole löscht sind wirklich gelöscht!!! Es gibt keinen Papierkorb und keinen anderen Mechanismus irrtümlich gelöschte Dateien wieder herzustellen.

rm löscht einzelne Dateien, Dateien mit Schreibschutz, Ordner und ganze Verzeichnisbäume - je nachdem, wie es aufgerufen wird.

Eine einzelne Datei wird mit rm dateiname gelöscht.

Verzeichnisse lassen sich nur rekursiv löschen - das heißt inklusive all ihren Inhalts. Dies geschieht mit der Option -r. Im obigen Fall wäre das dann

alex@rechner:~$ rm -r testDir
alex@rechner:~$ ls 	
				
				

Kopieren,verschieben und umbenennen

cp

Mit dem Befehl cp datei ziel (copy) werden Dateien oder Verzeichnis kopiert. Das erste Argument des Befehls ist immer das, was kopiert werden soll und der zweite das Verzeichnis, wo es hin kopiert werden soll oder der Name in den es kopiert werden soll. Also zum Beispiel:

alex@rechner:~$ mkdir testDir                # erstellt ein Verzeichnis
alex@rechner:~$ echo "test-Text" > test.txt  # erstellt erst mal eine Datei, die wir kopieren können
alex@rechner:~$ cp test.txt test1.txt        # Kopiert die Datei test.txt -> test1-txt
alex@rechner:~$ ls
test1.txt  test.txt
alex@rechner:~$ cp test.txt testDir          # nun kopieren wir test.txt in das Verzeichnis testDir
alex@rechner:~$ ls testDir
test.txt
alex@rechner:~$ cp -r testDir testDir1       # kopiert das ganze Verzeichnis testDir
alex@rechner:~$ ls
test1.txt  test.txt testDir testDir1
				

Es gilt zu beachten, dass beim Kopieren eines Vereichnisses die Option -r notwendig ist, damit das Verzeichnis rekursiv (also mit seinem Inhalt) kopiert wird.

mv

Will man Dateien verschieben so benötigt man den Befehl mv. Achtung: wenn eine Datei nur umbenannt werden soll, wird ebenfalls mv verwendet.

alex@rechner:~$ mv test.txt test-neu.txt        # Benennt die Datei um
alex@rechner:~$ mv test-neu.txt testDir         # Verschiebt die Datei
				

Kopieren,verschieben und umbenennen

cp

Mit dem Befehl cp datei ziel (copy) werden Dateien oder Verzeichnis kopiert. Das erste Argument des Befehls ist immer das, was kopiert werden soll und der zweite das Verzeichnis, wo es hin kopiert werden soll oder der Name in den es kopiert werden soll. Also zum Beispiel:

alex@rechner:~$ mkdir testDir                # erstellt ein Verzeichnis
alex@rechner:~$ echo "test-Text" > test.txt  # erstellt erst mal eine Datei, die wir kopieren können
alex@rechner:~$ cp test.txt test1.txt        # Kopiert die Datei test.txt -> test1-txt
alex@rechner:~$ ls
test1.txt  test.txt
alex@rechner:~$ cp test.txt testDir          # nun kopieren wir test.txt in das Verzeichnis testDir
alex@rechner:~$ ls testDir
test.txt
alex@rechner:~$ cp -r testDir testDir1       # kopiert das ganze Verzeichnis testDir
alex@rechner:~$ ls
test1.txt  test.txt testDir testDir1
				

Es gilt zu beachten, dass beim Kopieren eines Vereichnisses die Option -r notwendig ist, damit das Verzeichnis rekursiv (also mit seinem Inhalt) kopiert wird.

mv

Will man Dateien verschieben so benötigt man den Befehl mv. Achtung: wenn eine Datei nur umbenannt werden soll, wird ebenfalls mv verwendet.

alex@rechner:~$ mv test.txt test-neu.txt        # Benennt die Datei um
alex@rechner:~$ mv test-neu.txt testDir         # Verschiebt die Datei
				

Inhalte: Was ist in Dateien

Es gibt unterschiedlichste Dateien. Es gibt Bild-Dateien, Video-Dateien, Office-Dateien, Text-Dateien, Skripte, Programme und viele, viele mehr. Typischerweise werden Dateien auf nahezu allen Betriebssystemen mit ihren Dateiendungen identifizierbar gemacht. Typische Dateiendungen (englisch: Extension) wären:

Endung Dateiart
  • jpg
  • png
  • bmp
  • gif
Hierbei handelt es sich um Bild-Formate. Diese können mit Bildbetrachtern (z.b. eog) betrachtet oder mit Bearbeitungsprogrammen (z.B. Gimp) bearbeitet werden.
  • mp3
  • ogg
Das sind die gängigsten Audio-Formate um z.B. Musik zu speichern. Um Musik unter Linux abzuspielen gibt es unendlich viele Programme. Beliebt sind clementine, rhythmbox, vlc, oder totem
  • mp4
  • avi
  • mpg
  • 4gp
Hierbei handelt es sich um gängige Video-Formate. Betrachtet können diese werden mit totem, vlc und noch vielen weiteren Programmen.
  • odt / doc
  • ods / xls
  • odp / ppt
  • odg
Diese Dateiendungen sind allesamt Endungen der beiden Office-Suiten Libreoffice (auch OpenOffice) und Microsoft Office. Die Dokumentformate odt (LibreOffice) und doc (Word) erfüllen einen ähnlichen Zweck, ebenso, wie die Spreadsheet Formate ods und xls (Excel), sowie auch odp und ppt (Powerpoint). odg Steht für Zeichnungen mit Libre-Draw.
  • txt
  • html
  • conf
  • sh
Hierbei handelt es sich um ASCII - oder Text-Dateien. Es gibt eine nahezu unendliche Liste mit Dateiendungen, die Dateien bezeichnen, welche aus ASCII-Text bestehen. In *.txt Dateien sind meist nur Texte enthalten, *.html-Dateien sind Webseiten, *.conf wird gerne für Konfigurationen verwendet, und sh bezeichnet eine Datei als Shell-Datei. Ihnen allen gemeinsam ist, dass die Inhalte lesbar sind, wenn die Datei geöffnet wird und keine speziellen Programme, wie ein Office-Programm, einen Bildbetrachter oder ähnliches benötigt. Diese Dateien haben unter Linux eine besondere Bedeutung, da es auf der Konsole sehr viele Werkzeuge gibt, mit der Textdateien behandelt werden.

Text-Dateien und Inhalte anzeigen

Beispiele ausprobieren

Die Dateien für die in diesem Kapitel verwendeten Beispiele finden sich in der Datei ex1_dat_anzeigen.zip

Diese Datei an geeigneter Stelle einfach auspacken, um die Beispiele unten in der Konsole nachvollziehen zu können

cat - Dateien ausgeben

Um eine Datei ganz einfach in der Konsole auszugeben, kann man den Befehl cat verwenden. Dieser gibt die Datei einfach in der Konsole aus - von der ersten bis zur letzten Zeile.

alex@rechner:~$ cat lorem.txt
Sed et non fugit eveniet sunt dolores unde. 
A nisi aut nihil. Eius qui quis repellendus.

Ipsa velit deleniti quam accusantium consectetur aliquam. 
Dicta rem molestias eum est sed reprehenderit quis. 
Nihil fugiat ut unde. Rerum iusto ut perferendis. 
Assumenda dolorum culpa neque consequatur cupiditate aliquid.					
					

Möchte man Dateien in rückwärts anzeigen - also die letzte Zeile zuerst, dann macht dies der Befehl tac

alex@rechner:~$ tac lorem.txt
Assumenda dolorum culpa neque consequatur cupiditate aliquid.					
Nihil fugiat ut unde. Rerum iusto ut perferendis.
Dicta rem molestias eum est sed reprehenderit quis.
Ipsa velit deleniti quam accusantium consectetur aliquam.

A nisi aut nihil. Eius qui quis repellendus.
Sed et non fugit eveniet sunt dolores unde.

Gerade für große Dateien will man oft nur die ersten oder letzten Zeilen lesen. Hierfür gibt es die beiden Befehle head(engl. Kopf) für die ersten Zeilen und tail(engl. Schwanz) für die letzten Zeilen einer Datei.

Beide Befehle verstehen die Option -n anzahl um "anzahl" Zeilen auszugeben. Ohne diese Option werden die ersten bzw. letzten 10 Zeilen ausgegeben.

Folgende Befehle geben jeweils 4 Zeilen aus
alex@rechner:~$ head -n4 lorem-40.txt #gebe die ersten 4 Zeilen der Datei aus 
Sed et non fugit eveniet sunt dolores
unde. A nisi aut nihil. Eius qui quis
repellendus.

alex@rechner:~$ tail -n4 lorem-40.txt # und die letzten 4 Zeilen
molestias eum est sed reprehenderit
quis. Nihil fugiat ut unde. Rerum iusto
ut perferendis. Assumenda dolorum culpa
neque consequatur cupiditate aliquid.
					

tail hat noch eine weitere sehr nützliche Option: tail -f datei gibt ebenfalls die letzten Zeilen der Datei "datei" aus - aber das Programm beendet sich damit nicht: Es wartet ob in die Datei weitere Zeilen eingefügt werden und gibt diese ebenfalls aus. Im folgenden Beispiel benötigen wir daher zwei Terminals, um das sehen zu können.

Am besten es werden die beiden Terminals vor Ausführung des folgenden Befehls geöffnet. In beiden Terminals muss man sich im gleichen Verzeichnis befinden, damit es so abläuft, wie unten beschrieben.

Terminal 1: Im ersten Terminal erzeugen wir eine Datei, und jede Sekunde wird eine neue Zeile an diese Datei angefügt:

alex@rechner:~$ for i in $(seq 50); \
do echo "Dies ist die Zeile $i" >> \
zeilen.txt;sleep 1; done
					

In diesem Terminal ist nichts weiter zu sehen.

Terminal 2: Im zweiten Terminal geben wir den Befehl: tail -f zeilen.txt ein. In diesem Terminal erscheint nun jede Sekunde eine neue Zeile.

Pipes - Programme miteinander verbinden

Pipes

Linux verfügt über hunderte von Programmen und Befehlen, um Texte zu editieren. Mit einem Schatz von 20 - 30 davon kann man schier alles damit machen was notwendig ist. Aber um das tun zu können, fehlt noch etwas wesentliches: nämlich Pipes (engl. Rohre)

Zwei Dinge haben die Arbeit in der Shell am Leben erhalten: die Vorliebe für Textdateien und Pipes - natürlich neben all den kleinen Werkzeugen, die einem zur Verfügung stehen. Mit diesen beiden Konzepten kann auf der Konsole eine unglaubliche Flexibilität erreicht werden und es können unterschiedlichste Programme miteinander verknüpft werden.

Was sind denn nun Pipes?

Gebe ich unter Linux einen Befehl ein, so kommt auf der Konsole ein Text wieder heraus. Die meisten Befehle nehmen wiederum Texte als Eingabe, machen etwas damit und geben das Ergebnis wieder aus. Nehmen wir echo als Beispiel:
echo "Das ist ein Text"
gibt genau diesen Text wieder auf der Konsole aus. "Das ist ein Text" ist damit die Eingabe für den Befehl - und in diesem Fall auch die Ausgabe.

Wenn man nun die Ausgabe eines Befehls wieder als Eingabe für den nächsten Befehl möchte - dann schiebt man sie durch ein Rohr - also durch die Pipe

Der Befehl ls -l / gibt beispielsweise den Inhalt des Verzeichnisses / aus. Zum Verständnis: In diesem Fall wäre / die Eingabe, -l ist eine Option, die den Befehl auffordert das Ergebnis in einer langen Darstellung auszugeben und die Ausgabe wäre der Inhalt des Verzeichnisses.

Wir wollen nun aber nur die ersten 3 Zeilen der Ausgabe lesen. Mit head haben wir einen Befehl kennen gelernt, der aus einem Text die ersten Zeilen wieder gibt. Beide Befehle lassen sich nun kombinieren:

alex@rechner:~$ ls -l / | head -3
insgesamt 119
drwxr-xr-x   2 root root  4096 Nov  3 10:19 bin
drwxr-xr-x   4 root root  3072 Jan 15 19:51 boot					

					

Wie man sieht, erhält man so nur die ersten 3 Zeilen der Ausgabe: ls -l / gibt den kompletten Verzeichnisinhalt über das Pipe-Symbol | an den Befehl head -3, der davon (aufgrund der Option -3) nur die ersten 3 Zeilen ausgibt.

Texte verändern - Utilities zum täglichen Gebrauch

Zeilen zählen mit wc

wc ist keine Abkürzung für das stille Örtchen, sondern steht für "word-count". Es kann in einem Text Worte und Zeilen zählen. Ohne Parameter gibt das Progrämmchen Zeilen, Worte und Bytes (also die Größe des Dateiinhalts) aus.

für das folgende Beispiel mit cd in das Verzeichnis der ausgepackten Zip-Datei aus dem Kapitel Texte anzeigen wechseln. Dort liegt die Datei lorem-40.txt. Ruft man wc mit dieser Datei auf, so erhält man:

alex@rechner:~$ wc lorem-40.txt 
 10  46 312 lorem-40.txt				

					

In der Ausgabe steht an erster Stelle die Anzahl der Zeilen in der Datei. An zweiter Stelle die Zahl der Worte und an dritter Stelle die Anzahl der Bytes. Also hat lorem-40.txt 10 Zeilen, 46 Worte und 312 Byte. Als letzter Ausgabe-Text findet sich nochmals der Dateiname

Möchte man nur die Anzahl der Zeilen, so verwendet man die Option -l

alex@rechner:~$ wc -l lorem-40.txt 
 10 lorem-40.txt				

					

Möchte man die Zahl der Zeilen nicht nochmals verändern und den Dateinamen in der Ausgabe entfernen, dann bietet es sich an diese Aufgabe so zu lösen:

alex@rechner:~$ cat lorem-40.txt | wc -l 
 10 

					

Mit cat lorem-40.txt wird der Inhalt der Datei ausgegeben und über eine Pipe in wc -l geleitet - in diesem Fall fällt der Dateiname weg. Das gleiche ist auch zum Zählen der Worte möglich, indem man statt -l die Option -w verwendet.

alex@rechner:~$ cat lorem-40.txt | wc -w 
 46

					

Buchstaben ersetzen mit tr

Zeilen nur teilweise wiedergeben cut

Texte sortieren: sort

Texte suchen: grep

Glossar

ASCII
ASCII ist eigentlich eine Codierung für Text-Zeichen. Die Buchstaben werden durch Zahlen dargestellt, um diese im Computer verarbeiten zu können. Spricht man von ASCII-Dateien, so ist im Allgemeinen die Rede von Text-Dateien - also eine Datei mit Buchstaben - im Gegensatz zu Binärdateien, wie Bildern, Filmen oder Office-Dokumenten. Ascii-Tabellen finden sich auf Wikipedia
Kommandozeile (CLI)
Die Kommandozeile (oder englisch Command-Line-Interface: CLI ) ist der Bereich, in dem Kommandos eingegeben werden können. Hierbei sieht der Anwender oftmals nur ein Prompt und muss die Befehle mit der Tastatur eingeben. "Kommandozeile", "CLI", "Terminal" "Eingabezeile" und ähnliche werden synonym verwendet
Konsole
In Kontext dieser Anleitung ist eine Konsole das schwarze Terminal-Fenster inklusive des darin laufenden Shell-Programmes. Der Ausdruck kommt ursprünglich von der Systemkonsole, einem Arbeitsplatz an einem Großrechner. Heutzutage wird der Ausdruck "Konsole" oft synonym mit "Kommandozeile" verwendet
Shell
Eine Shell stellt die Ausführungsumgebung für Befehle dar. Die unter Linux am gängigsten verwendete Shell ist die Bash; weitere oft verwendete Shells sind ksh (Korn-Shell), csh (C-Shell) oder tcsh. Die vorliegende Seite beschäftigts sich nur mit der Bash
Terminal
Ein Terminal ist im Ursprung das Endgerät und von der Bedeutung synonym zu Konsole. Heutzutage stehen unterschiedlichste Terminal-Programme unter Linux zur Verfügung, wie z.B. xterm, kterm, gnome-terminal oder konsole. In dem Terminal Programm läuft eine sogenannte Shell, in der Befehle eingegeben werden können.