Linux Bash für Anfänger

In diesem How To zeige ich euch ein paar Linux- und Bashbasics. Das tolle an Linux ist, das man alle Einstellungen und Aufgaben über eine simple Eingabezeile - die Bash oder auch Terminal genannt - erledigen kann. Dabei gilt, je mehr man die verschiedenen Konzepte verinnerlicht, desto effektiver und einfacher können Aufgaben erledigt werden.

Vim

Der Vim (Vi IMproved) ist eine Weiterentwicklung des im Jahre 1976 erschienenen Texteditors Vi. Neben dem Vim gibt es noch den benutzerfreundlicheren Nano- und den Emacs-Editor. Jedoch ist der Vim - insbesondere von Entwicklern - wegen seiner Effektivität und der Syntaxhervorhebung für viele Programmiersprachen die erste Wahl. Da eine komplette Beschreibung der Funktionen dieses Tutorial sprengen würde, gehe ich wirklich nur auf die Basics ein.

Um eine neue oder vorhandene Datei zu editieren rufen wir folgenden Befehl auf:
pi@raspberrypi ~ $ vi MeineDatei
Der Vim arbeitet in drei verschiedenen Modi.
Insert-Modus - Der eigentliche Editierungsmodus. Jede Tastatureingabe wird als Text interpretiert.
Command-Modus - Hier kann man Text suchen und ersetzen, zu Zeilen springen oder den Vim konfigurieren.
Visual-Modus - Im Visual Mode kann man Text zeichen-, zeilen- oder blockweise markieren.

Zunächst startet Ihr im Command-Modus. In der folgenden Grafik seht Ihr wie man zwischen den verschiedenen Modi's umschalten kann.
Vim Modi
Kommen wir nun zum Command-Modus. Mit diesem lassen sich die verschiedensten Aktionen durchführen.
yyAktuelle Zeile kopieren
ddAktuelle Zeile ausschneiden
pKopierte / Ausgeschnittene Zeile wieder einfügen
oFüge eine neue leere Zeile ein
:5Springe zur Zeile 5
:$Springe zur letzten Zeile
/fooDurchsuche das Dokument nach den String 'foo'.
Mit der Taste N bzw. P könnt ihr durch die Vorkommen browsen
:%s/foo/bar/gDurchsuche das Dokument nach den String 'foo' und ersetze ihn mit 'bar'.
Lässt man das 'g' am Ende weg wird nur das nächste Vorkommen ersetzt
:wDatei speichern
:qVim beenden (ohne Speichern)
:wqDatei speichern + Vim beenden
:w! :q! :wq!Mit dem Ausfrufezeichen bestätigt ihr mögliche Rückfragen

Tipp: Sollte beim drücken der Richtungstasten irgendwelche Großbuchstaben auftauchen tippt folgende Zeile im Command-Modus ein:
:set nocompatible

Screen

Screen ist ein praktischer Fenstermanager für die Bash. Vergleichbar mit den Tabs von Browsern kann man mit einer Screensitzung in vielen verschiedenen Terminals gleichzeitig arbeiten.

Screen muss für Raspbian erst einmal nachinstalliert werden
pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get install screen
Zunächst navigieren wir in unser Arbeitsverzeichnis. Wenn wir zum Beispiel gerade an einer Website arbeiten wechseln wir nach /var/www. Jedes neue 'Terminal-Tab' wird nun immer in diesem Verzeichnis gestartet. Das spart uns jedesmal den Verzeichniswechsel.
pi@raspberrypi ~ $ cd /var/www/
pi@raspberrypi /var/www/ $ screen
Nun sehen wir ein bisschen Text des Entwicklers und unsere nun leere Bash.
Mithilfe verschiedener Hotkeys können wir die Screensitzung steuern:
Strg + A + CNeues Terminal
Strg + A + N oder 2x Strg + A Nächstes Terminal
Strg + A + PVorheriges Terminal
Strg + A + 0-9Springe direkt zum Terminal 0-9
Strg + A + DScreen Sitzung pausieren
Um ein Terminal zu beenden tippt einfach exit in das entprechende Fenster. Sind alle Terminals zu, beendet sich Screen automatisch.
Sollte eure SSH-Verbindung einmal unterbrochen oder das System abschmieren, dann könnt ihr mit den folgenden Befehlen eure Sitzung wiederherstellen.
pi@raspberrypi ~ $ screen -R
There are several suitable screens on:
2039.pts-0.raspberrypi (28/04/13 11:45:43) (Detached)
1999.pts-0.raspberrypi (28/04/13 11:25:34) (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
In meinem Beispiel sind zwei Screens pausiert. Kopiert die blau markierte Zahl und stellt die Sitzung mit screen -R 2039 wieder her.

Basics

Leere Datei anlegen / löschen

pi@raspberrypi ~ $ touch MeineDatei
pi@raspberrypi ~ $ rm MeineDatei


Ordner erstellen / löschen

pi@raspberrypi ~ $ mkdir MeinOrdner
pi@raspberrypi ~ $ rm -R MeinOrdner
Vorsicht: Die Option -R löscht ohne Rückfrage den kompletten Inhalt des Ordners


Ordnerinhalt auflisten

pi@raspberrypi ~ $ ls -la
total 44
RechteBesitzerGruppeGrößeÄnderungsdatumName
drwxr-xr-x5pipi4096Apr 28 20:51. <- aktuelles Verzeichnis
drwxr-xr-x3rootroot4096Feb 9 01:24.. <- übergeordnetes Verzeichnis
-rw-------1pipi949Apr 28 22:01.bash_history <- unsichtbar
-rw-r--r--1pipi220Feb 9 01:24.bash_logout <- unsichtbar
-rw-r--r--1pipi3243Feb 9 01:24.bashrc <- unsichtbar
drwxr-xr-x2pipi4096Feb 9 02:17Desktop
drwxr-xr-x3pipi4096Apr 28 20:51dev
-rw-r--r--1pipi5781Feb 3 05:07ocr_pi.png
-rw-r--r--1pipi675Feb 9 01:24.profile <- unsichtbar
drwxrwxr-x2pipi4096Jul 20 2012python_games
Die zusätzlichen Optionen -la zeigen euch alle Dateien (a) - auch unsichtbare - mit ihren Eigenschaften (l) an.


Absoluten Pfad anzeigen

pi@raspberrypi ~ $ pwd
/home/pi


Ordner wechseln

Unter Linux bewegt man sich entweder mit absoluten oder relativen Pfadangaben.
Mithilfe einer absoluten Pfadangabe kann man von jedem Punkt aus in einen anderen Ordner springen:
pi@raspberrypi ~ $ cd /var/www/
Relative Pfadangaben sind für Projekte und bekannte Ordnerstrukturen geeignet.
Dabei muss man sich zwei Dinge merken: Ein . steht für den aktuellen Ordner und ein .. ist der jeweils übergeordnete Ordner.

Nehmen wir beispielsweise folgende Ordnerstruktur an:
Ordnerstruktur Beispiel
Springe zu /var/www/images/big/
pi@raspberrypi /var/www/ $ cd images/big/
Springe von /var/www/images/big/ nach /var/www/pages/
pi@raspberrypi /var/www/images/big $ cd ../../pages/


Pipes

Mit sogenannten Pipes kann man Ausgaben von einem Befehl zu einem anderen schleusen. Wollen wir zum Beispiel alle Wörter dieser Seite zählen dann kombinieren wir die Befehle cat zum Ausgeben des Dateiinhaltes und wc zum Zählen der Wörter.
pi@raspberrypi /var/www/pages $ cat howto_bash.tpl | wc -w
875


Dateien zeilen- oder seitenweise anzeigen

pi@raspberrypi /var/www/pages $ cat howto_bash.tpl | less
Enter: Scrolle eine Zeile weiter
Leertaste: Scrolle eine Seite weiter


Dateien nach Text durchsuchen

Lassen wir uns als Beispiel die letzten drei SSH-Verbindungen zum Raspberry anzeigen.
pi@raspberrypi ~ $ grep 'Accepted password' /var/log/auth.log | tail -n 3
Apr 28 20:38:26 raspberrypi sshd[1909]: Accepted password for pi from 192.168.178.21 port 57047 ssh2
Apr 28 20:40:38 raspberrypi sshd[1915]: Accepted password for pi from 192.168.178.21 port 57054 ssh2
Apr 28 22:04:12 raspberrypi sshd[2101]: Accepted password for pi from 192.168.178.21 port 60683 ssh2


Dateien finden

1. Möglichkeit
Mit locate findet man alle Dateien die eine gesuchte Zeichenfolge im Dateinamen oder Pfad beeinhaltet. Unter Raspbian muss das Paket zunächst nachinstalliert werden.
pi@raspberrypi ~ $ sudo apt-get install locate
pi@raspberrypi ~ $ sudo updatedb
Um den Suchvorgang erheblich zu verschnellern, benutzt locate eine Datenbank. Diese muss jedoch mit updatedb aktualisiert werden.
pi@raspberrypi ~ $ locate passwd
/etc/cron.daily/passwd
/etc/pam.d/chpasswd
/etc/pam.d/passwd
/etc/passwd

2. Möglichkeit
Da die zweite Möglichkeit das Dateisystem nach der gesuchten Datei zur Ausführungszeit durchsucht, sollte man um Zeit zu sparen ein Start-Suchverzeichnis eingeben.
pi@raspberrypi ~ $ sudo find /etc -name 'passwd'
/etc/cron.daily/passwd
/etc/pam.d/chpasswd
/etc/pam.d/passwd
/etc/passwd


Sudo

Bestimmt ist euch in diesem Tutorial schon der Befehl sudo aufgefallen. Mit sudo führt ihr euren Befehl mit root-Rechten aus, d.h. ihr bekommt für die Ausführungszeit die höchsten Rechte und könnt alles machen - aber auch alles kaputt machen.
Lassen wir uns als Beispiel das verschlüsselte Passwort des Benutzers pi ausgeben:
pi@raspberrypi ~ $ cat /etc/shadow | grep 'pi'
cat: /etc/shadow: Permission denied
Mit sudo ist das kein Problem:
pi@raspberrypi ~ $ sudo cat /etc/shadow | grep 'pi'
pi:$6$hzHyOMiJ$rtJ38ig5mQGbScLbQV922rFfb3vQtjQGQouclA2Y8Vn6k4tn94ZRWC4lVi8uRuIANQrobXRp4Hj9il2brPolk1:15818:0:99999:7:::
Hat dir dieser Artikel gefallen? Bewerte ihn!
Linux Bash für Anfänger << Raspberry Pi Guide
4.3/5 bei 150 Bewertungen

8 Kommentare


  • patric fredrich schrieb am 6.1.2014 um 13:49 ich habe das
    sudo cat /etc/shadow | grep patric
    amgewändet weiß aber nicht wie ich mein konto reaktivieren kann
    Antworten Direktlink
  • RGuide schrieb am 6.1.2014 um 23:31 Der obige Code ist nur ein Beispiel für den sudo-Befehl.
    Ich weiß nicht ganz was du meinst, aber um das Passwort eines Benutzers zu
    ändern versuche mal mit 'sudo passwd patric'
    Antworten Direktlink
  • Klapprobot schrieb am 25.2.2015 um 11:50 Danke ;)
    Antworten Direktlink
  • Inrouder schrieb am 12.4.2015 um 23:11 Vielen Dank für die tolle einführung!

    dank screen und locate, kann ich jetzt endlich auch in andere verzeichnisse switchen und diese einsehen.

    Dies ging vorher leider nicht mit dem normalen pi User.
    Antworten Direktlink
  • Gerri schrieb am 9.5.2016 um 19:30 Hi there, just became aware of your blog through Google, and found that it is truly intoemafivr. I am gonna watch out for brussels. I’ll be grateful if you continue this in future. A lot of people will be benefited from your writing. Cheers!
    Antworten Direktlink
  • Jaylin schrieb am 11.5.2016 um 18:52 I&2;817#ve been absent for a while, but now I remember why I used to love this blog. Thanks , I’ll try and check back more often. How frequently you update your web site? http://ronzmg.com [url=http://hznxodgcf.com]hznxodgcf[/url] [link=http://nshskoru.com]nshskoru[/link]
    Antworten Direktlink
  • Shanna schrieb am 14.5.2016 um 08:59 Ola Valdirene, tb sou dentista em lordirna-pananá, e tb tenho interesse em cadastro pelo sus, se vc tiver alguma informação podemos nos ajudar neste sentido.Agradeço e aguardo retorno. http://dalecg.com [url=http://viluvy.com]viluvy[/url] [link=http://nzhcadosad.com]nzhcadosad[/link]
    Antworten Direktlink
  • RocioXRuma schrieb am 30.11.2016 um 20:51 Hi! Where I can download the XRumer 12? This URL is not working - http://freecheapxrumer.com/ :(
    Antworten Direktlink

Kommentar verfassen


Name:
Text:
Erlaubte Tags: [code][/code]
Sicherheitsabfrage: