Mit der Befehlszeile können Sie einen Computer ohne GUI steuern. In diesem Modul lernen Sie die grundlegenden Befehle für die Interaktion mit unserem Computer kennen.
Das Wichtigste in Kürze
- Die Schüler bewegen sich mit Sprachbefehlen auf ihren Computer.
- Schüler und Studenten können Dateien und Ordner erstellen, verschieben, kopieren und löschen.
Was ist die Befehlszeile?
In den meisten Fällen verwenden Nutzer eine grafische Benutzeroberfläche (Graphical User Interface, GUI), um mit dem Computer zu interagieren. GUIs funktionieren in der Regel mit Maus oder Touch, um Fenster mit Symbolen, Schaltflächen, Bildlaufleisten usw. zu bearbeiten.
Die Befehlszeile ist eine alternative Ansicht zum Computer. Manchmal auch als „Shell“ bzw. „Terminal“ und für „Bash“ oder „Bash“ oder als „Textschnittstelle“ bezeichnet:
- Eine Möglichkeit der Interaktion mit einem Computerprogramm, bei der der Nutzer Befehle eingibt, z. B.:
open README.txt
- Eine Möglichkeit, den Computer ohne Maus zu bedienen und zu bedienen.
- Eine nicht explizite Möglichkeit, Dateien und Verzeichnisse zu erstellen, zu lesen, zu aktualisieren, zu bearbeiten oder zu löschen. Beispiel:
mv README.txt readme.txt
GUI und Befehlszeile: Es handelt sich dabei um verschiedene Möglichkeiten der Interaktion mit dem Computer.
Wann wird die Befehlszeile verwendet?
Befehlszeilenschnittstellen werden häufig von Entwicklern bevorzugt:
- Sie sind prägnanter, um ein Programm oder Betriebssystem zu steuern. Warum? Da alles im selben Fenster passiert und das Üben mit der Arbeit einfacher ist als mit einer Maus.
- Sie bieten leicht Optionen zum Steuern eines Befehls. Warum? Menüs in GUIs bieten nur sehr wenige Optionen. In der Befehlszeile gibt es Hunderte von Befehlen und mit einigen Zeichen können Sie viele verschiedene Befehle ausführen. Zum Beispiel:
ls
Grundlegende Listendateienls -a
Hiermit werden alle Dateien aufgelistet, auch normal ausgeblendete Dateienls -l
Lange Liste mit Informationen zu jeder Dateils -R
Wiederkehrend, Inhalte der Verzeichnisse auflistenls -la
Lange Liste mit allen Dateien- So können Sie viele Dateien gleichzeitig mit mehreren Aktionen gleichzeitig bearbeiten.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
- Sie bieten eine Möglichkeit zur Programmierung des Betriebssystems (Shell-Programme). Das Beispiel oben ist ein sehr einfaches Shell-Programm, mit dem Bilder mit Dateinamen enden können, die auf
.png
enden.
Befehlszeile in Aktion
Bestandteile eines Befehlszeilenbefehls
Alle Befehle bestehen aus drei Teilen:
- Der Befehl (oder das Dienstprogramm) steht immer an erster Stelle.
- Flags sind optional, je nach Dienstprogramm. Kennzeichnungen beginnen immer mit einem Minuszeichen (-).
- Argumente sind die Dinge, auf die der Befehl reagieren kann, oder erforderliche Informationen. Oft Dateinamen.
Framing
Kontext &Zweck
Mit der Befehlszeile können Sie einen Computer ohne Maus oder ein GUI (Graphical User Interface) steuern. Bevor Apple Computer mit dem Erstellen von Computern mit Symbolen und Ordnern begann, auf die Sie klicken konnten, konnten Sie nur über die Befehlszeile mit Ihrem Computer interagieren.
Als Entwickler verwenden wir die Befehlszeile, weil sie wesentlich schneller und leistungsstärker ist als die GUI - keine Zeitverschwendung. Mit der Befehlszeile können Sie fast alle Interaktionen mit Ihrem Computer ausführen.
Da das Terminal eine wesentlich einfachere Schnittstelle ist, bietet es einen deutlichen Vorteil gegenüber dem GUI, wenn Sie per Netzwerk-Link eine Remote-Verbindung zu einem Computer herstellen müssen. Das machen Entwickler sehr häufig, zum Beispiel auf Reisen.
In dieser Lektion lernen Sie die grundlegenden Befehle für die Interaktion mit unserem Computer kennen, indem wir Dateien und Verzeichnisse erstellen, Ordner verschieben, Verzeichnisse ändern und die Inhalte eines Ordners auflisten.
Lernziele
Für Schüler und Studenten gilt:
- Mit dem Terminal in Dateien und Ordnern navigieren
- Inhalte eines Ordners auflisten
- Dateien und Ordner über die Befehlszeile erstellen
- Dateien und Ordner verschieben
- Dateien und Ordner kopieren
- Dateien und Ordner löschen
Einstieg
Auf das Terminal zugreifen
Bildausschnitt und Zweck
Das Terminal bietet eine Befehlszeile (Command Line Interface, CLI) für das Betriebssystem. Damit können Sie Ihrem Computer direkte, textbasierte Anweisungen geben.
Dazu müssen wir Ihr Terminal basierend auf dem von Ihnen verwendeten System starten.
Sobald das Terminal gestartet wird, wird es im Basisverzeichnis Ihres Computers gespeichert. Das Basisverzeichnis ist durch eine Tilde ~
gekennzeichnet.
Wenn wir über das Terminal sprechen, unterscheiden sich die Verzeichnisse nicht von Ordnern. Wir nennen sie manchmal einfach Verzeichnisse.
Verzeichnisse ändern
Bildausschnitt und Zweck
Damit wir im Terminal mit unserem Computer sprechen und uns mitteilen können, was wir tun sollen, müssen wir eine gemeinsame Sprache sprechen. Die Befehlszeile erkennt Befehle, die in der Bash-Skriptsprache geschrieben sind. Die Befehle sind Akronyme oder Abkürzungen englischer Wörter.
Arbeitsverzeichnis drucken (pwd
)
Wenn Sie im Terminal navigieren, ist es wichtig, dass Sie wissen, wo Sie sind. Dies ergibt sich auch direkt in die Realität – wenn Sie unterwegs sind, müssen Sie also zuerst Ihren aktuellen Standort kennen.
# See your current location - abbreviation for 'print working directory'
pwd
Verfügbare Dateien und Verzeichnisse auflisten
Im Arbeitsverzeichnis befinden sich wahrscheinlich mehrere Dateien, auf die Sie zugreifen können. Normalerweise setzen wir auf visuelle Hinweise wie Symbole, um uns mitzuteilen, welche Inhalte verfügbar sind. Es ist jedoch schwierig, sich auf unserem Computer zurechtzufinden, wenn wir nur erraten, wo sich Dateien und Ordner befinden. In der Befehlszeile geben wir einen bestimmten Befehl ein, um festzulegen, auf welche Daten wir in einem bestimmten Verzeichnis oder an einem beliebigen Verzeichnis zugreifen können.
Wenn Sie sehen möchten, welche Dateien oder Ordner sich in unserem aktuellen Verzeichnis befinden, rufen Sie mit dem Befehl ls
(Abkürzung für Listen) eine Listenansicht der Inhalte auf.
# See files and folders in current location - abbreviation for 'list'
ls
Arbeitsverzeichnis ändern
Wenn Sie Zugriff auf eine Datei oder ein Verzeichnis benötigen, die nicht in der Liste aufgeführt ist, können Sie Ihr Arbeitsverzeichnis ändern, um einfacher darauf zugreifen zu können.
Die Syntax, mit der die Befehlszeile angewiesen wird, Sie in ein neues Verzeichnis (auch Ordner genannt) zu verschieben, folgt cd
(in derselben Zeile) der Pfad zum neuen Ordner.
Wenn Sie zu einem Verzeichnis gehen, das sich in dem Verzeichnis befindet, in dem Sie sich derzeit befinden, also einem Unterordner Ihres Arbeitsverzeichnis, verwenden Sie den Befehl cd
, gefolgt von dem Namen des Ordners.
# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents
Sie können auch mit dem Stammverzeichnis ~ beginnen.
# Add a `~/` to begin from the home directory.
cd ~/Downloads
Wenn Sie das Verzeichnis gewechselt haben, aber zurück zum Basisverzeichnis wechseln möchten, gehen Sie entweder direkt zurück zur Startseite mit ~
oder mit ..
eine Ebene nach oben.
# Option 1: navigate directly to the home directory
cd ~
# Option 2: navigate back one level
cd ..
Hinweis: cd ..
geht nur eine Ebene nach oben, also wenn Sie Verzeichnisse bis jetzt dreimal (drei Ebenen nach unten gewechselt haben) verwenden, müssen Sie cd ..
dreimal drücken, um den Weg nach Hause zu nehmen, brauchen aber cd ~
nur einmal.
Mini-Wettkämpfe
- Mit
ls
können Sie sehen, was sich in Ihrem aktuellen Verzeichnis befindet. - Wechseln Sie zurück zum Basisverzeichnis und verwenden Sie
ls
, um den Inhalt des Ordners zu sehen. - Wählen Sie den Namen eines der Ordner im Basisverzeichnis aus und wechseln Sie zum neuen Ordner.
- Mit dem Befehl „list“ können Sie sehen, was sich darin befindet.
Tipp: Automatische Vervollständigung mit tab
Wenn Sie Verzeichnisse mit dem Befehl cd
ändern, wird durch einen einzelnen Tippfehler verhindert, dass der Befehl korrekt ausgeführt wird. Die Verwendung der Schlüssel tab
wird jedoch automatisch mit dem Namen aller verfügbaren Verzeichnisse innerhalb Ihres aktuellen Verzeichnisses automatisch vervollständigt. Anstatt cd Documents
einzugeben, müssen Sie also nur cd Do
eingeben und dann die tab
-Taste drücken. Das Terminal führt den Befehl cd Documents/
für Sie automatisch aus. /
am Ende ist optional, aber Sie erfahren, dass das Ziel ein Verzeichnis ist.
Die automatische Vervollständigung spart nicht nur Zeit, wenn sie funktioniert, sondern bietet auch wertvolle Informationen, wenn sie nicht funktioniert. Hat die Tab-Taste keine automatische Vervollständigung, liegt das wahrscheinlich an einem von drei häufig auftretenden Problemen:
- Das Verzeichnis, zu dem Sie gehen möchten, ist über Ihr aktuelles Arbeitsverzeichnis nicht zugänglich.
- Es gibt zwei Verzeichnisse mit ähnlichen Anfangsnamen (z. B.
Documents
undDownloads
) und Sie haben für die automatische Vervollständigung nicht genügend Informationen angegeben. Drücken Sietab
noch einmal, um eine Liste der Verzeichnisse aufzurufen, die möglicherweise mit Ihren Angaben übereinstimmen. Geben Sie ein wenig mehr ein (so viel, dass es nur eine Übereinstimmung gibt) und drücken Sietab
noch einmal. - Wurde in der ersten Hälfte des Worts bereits ein Tippfehler eingefügt?
Je öfter Sie Ihre Befehle zur automatischen Vervollständigung der Befehle verwenden, desto wahrscheinlicher ist es, dass Sie damit frustriert sind, wenn Ihre Befehle nicht funktionieren.
Eltern- und Kinderverzeichnisse
Verzeichnisse und Dateien können untergeordnete und übergeordnete Beziehungen haben. Befindet sich directory_b
innerhalb von directory_a
, wird directory_b
als untergeordnetes Element von directory_a
bezeichnet. directory_a
wird dann als Elternteil von directory_b
bezeichnet. Wenn sich ein drittes Element, my_file
, innerhalb eines directory_b
-Elements befindet, wird es als untergeordnetes Element von directory_b
und als grandchild als directory_a
betrachtet.
Diese Beziehungen werden häufig in Foren anhand eines Textdiagramms dargestellt:
directory_a/ directory_b/ my_file
Verzeichnisnamen enden auf /
, nicht auf Dateinamen. Diese hierarchische Organisation wird allgemein als Baumstruktur eines Dateisystems bezeichnet.
Geschwister
Wenn auf derselben Ebene mehrere Dateien oder Ordner vorhanden sind, werden sie als Geschwister bezeichnet. Wenn sich file_b
und file_c
beispielsweise in directory_a
befinden, sind sie Geschwister.
Dieses Textdiagramm würde dann so aussehen:
directory_a/ file_b file_c
Da file_b
und file_c Geschwister sind, werden sie um den gleichen Betrag eingerückt.
Dateipfade
Hier ist ein komplexeres Textdiagramm, das sowohl Beziehungen zwischen Eltern als auch Zwillinge zeigt.
north_america/ united_states/ new_york/ new_york_city/ manhattan queens staten_island bronx brooklyn california/ mountain_view los_angeles illinois/ chicago mexico/ mexico_city
In diesem Beispiel ist new_york_city/
ein Verzeichnisname, es hat aber auch einen Pfad, in dem angegeben wird, wie man dorthin gelangt: ~/north_america/united_states/new_york/new_york_city/
.
Um in das Verzeichnis new_york_city/,
zu wechseln, können Sie mithilfe von Namen in Schritten navigieren oder mit einem Befehl den gesamten Pfad aufrufen.
# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/
# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/
Übersicht über die Navigationsbefehle
# See your current location - abbreviation for 'print working directory'
pwd
# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads
# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory
# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..
# Will take you back home
cd
Mini-Wettkämpfe
- Mit
pwd
können Sie den aktuellen Ordner ermitteln, in dem Sie sich befinden. - Wechseln Sie zu einem anderen Verzeichnis und bestätigen Sie Ihren neuen Standort.
- Versuchen Sie es noch einmal und wechseln Sie zu einem anderen Ordner. Verwenden Sie die neuen Befehle, um Ihren Speicherort und die Dateien in diesem Verzeichnis zu sehen.
Dateien erstellen &Verzeichnisse
Bildausschnitt und Zweck
Als Entwickler müssen Dateien mit Code erstellen. Damit diese Dateien übersichtlich sind, müssen wir Ordner / Verzeichnisse erstellen, in denen wir unsere Dateien speichern.
Geben Sie Ihren Speicherort im Terminal an, bevor Sie Dateien und Ordner erstellen.
# See your current location.
pwd
Zum Erstellen einer Datei verwenden Sie den Befehl touch
gefolgt vom Dateinamen.
# `touch` creates a new file.
touch style.css
Fügen Sie beim Erstellen von Dateien eine Dateierweiterung hinzu, um den Typ anzugeben. Beispiele für Dateitypen:
.js
als JavaScript-Datei erstellen.html
erstellt eine HTML-Datei.css
erstellt eine CSS-Datei.md
erstellt eine Markdown-Datei
Die Dateinamen dürfen keine Leerzeichen enthalten.
# make a file - this will create a file in the current folder
touch my_text_file.txt
# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css
Mehrere Dateien erstellen
Sie können mehrere Dateien gleichzeitig erstellen. Dazu verwenden Sie Leerzeichen zwischen den Namen.
# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html
Verzeichnisse erstellen
Um ein Verzeichnis/einen Ordner zu erstellen, verwenden Sie den Befehl mkdir
- eine Abkürzung für "make Directory' - gefolgt vom Namen des Ordners.
# make a folder - this will create a directory in the current folder
mkdir my_new_folder
# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder
Mehrere Verzeichnisse erstellen
Sie können mehrere Ordner gleichzeitig erstellen, indem Sie zwischen den Namen Leerzeichen einfügen.
# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three
Mini-Wettkämpfe
- Eine neue Datei erstellen.
- Erstellen Sie mit einem Befehl mehrere Dateien.
- Erstellen Sie ein neues Verzeichnis.
- Erstellen Sie noch ein paar neue Verzeichnisse. Führen Sie dazu nur einen Befehl aus.
- Erstellen Sie mithilfe Ihrer Kenntnisse zu Verzeichnissen und dem Erstellen von Dateien und Ordnern auf Ihrem Computer eine Datei und einen Ordner.
Verschieben &Kopieren
Dateien werden verschoben
Bildausschnitt und Zweck
Wir können eine Datei oder einen Ordner über die Befehlszeile verschieben, müssen aber immer drei Dinge angeben:
- Wir verwenden den Befehl
mv
– Abkürzung für move. - Geben Sie den Namen der Datei oder des Ordners ein, den Sie verschieben möchten.
- Geben Sie den Namen der Datei ein, die das Ziel enthält.
Angenommen, Sie haben eine Dateistruktur wie diese:
my_child_folder/ my_parent_folder/
Wie du siehst, sind sie perfekt organisiert. Sie sind Geschwister, wenn sie Eltern und Kinder sein sollten. Verwenden Sie diesen Befehl:
# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/
Die resultierende Struktur sieht so aus:
my_parent_folder/ my_child_folder/
Hier sind einige andere Varianten des mv
-Befehls:
# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder
# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder
# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder
Warnung: mv
ist auch der Befehl zum Umbenennen einer Datei mit der Syntax mv old_name new_name
. Das heißt, wenn Sie eine Datei in ein Verzeichnis verschieben, das nicht vorhanden ist, oder wenn Sie das Ziel falsch eingeben, wird die Datei selbst umbenannt und nicht verschoben.
Mini-Wettkämpfe
- Erstellen Sie fünf Textdateien (TXT).
- Erstellen Sie ein neues Verzeichnis.
- Verschieben Sie die fünf erstellten Dateien in den Ordner.
- Erstellen Sie einen Ordner und verschieben Sie diesen neuen Ordner in einen anderen Ordner.
Dateien kopieren &Verzeichnisse
Bildausschnitt und Zweck
Wir erstellen bei der Erstellung unserer Web-Apps möglicherweise eine Datei (wenn wir zwei ähnliche Webseiten erstellen, die wir nicht von vorn beginnen möchten). Die Syntax für den Befehl cp
(Kopieren) ist der mv
-Syntax sehr ähnlich.
Eine Datei kopieren
Der Befehl besteht aus drei Teilen:
- Der Befehl
cp
– Abkürzung für copy - Der Name der zu kopierenden Datei
- Name der Kopie (wenn sie im selben Ordner bleiben) oder Speicherort und Name (wenn sie in einen anderen Ordner verschoben werden)
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt
Wenn Sie möchten, dass die Kopie denselben Namen wie das Original erhält, können Sie den Ort ohne Dateinamen angeben.
# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/
Viele Dateien mit demselben Namen können verwirrend sein. Daher sollten Sie diese Methode nur verwenden, wenn Sie sich sicher sind, dass Sie sie benötigen.
Verzeichnis kopieren
Das Kopieren eines Ordners oder Verzeichnisses ist etwas komplizierter, da Sie wahrscheinlich nicht nur den Ordner, sondern auch alle Inhalte darin kopieren möchten.
- Der Befehl
cp -R
– die Abkürzung für rekursive Kopie – wird sowohl für leere als auch für nicht leere Ordner verwendet - Der Name der Quelle (Ordner oder Datei, die wir verschieben möchten)
- Name der Kopie (wenn sie im selben Ordner bleiben) oder Speicherort und Name (wenn sie in einen anderen Ordner verschoben werden)
Warnung: Wenn Sie den Namen der Kopie angeben, wird die Datei auch dann erstellt, wenn Sie sie zuvor noch nicht erstellt haben. Wenn die Datei vor dem Ausführen des Kopierbefehls erstellt wurde, wird alles überschrieben, was sich in der Datei befand.
# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy
# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy
Hinweis: Die Komponente -R
des cp -R
wird als Flag bezeichnet. Flags beginnen immer mit einem Bindestrich und werden in Kombination mit Befehlen verwendet, um spezifischere Anweisungen für die Ausführung dieses Befehls zu erhalten.
Mini-Wettkämpfe
- Erstelle eine Datei mit dem Namen
my_original.txt
. - Erstellen Sie eine Kopie von
my_original.txt
im Namen eines neuen Ordners. - Erstellen Sie ein neues Verzeichnis.
- Erstellen Sie eine Kopie dieses Verzeichnisses, geben Sie ihm aber einen anderen Namen.
- Kopieren Sie die kopierte Datei aus Schritt 2, platzieren Sie sie aber im kopierten Verzeichnis (siehe Schritt 4).
Dateien und Ordner entfernen
Bildausschnitt und Zweck
Wir können Dateien und Ordner über die Befehlszeile löschen, aber das ist endgültig.
Dateien entfernen
Um eine Datei zu entfernen, können wir den Befehl rm
(Abkürzung für remove) gefolgt vom Namen der Datei verwenden.
# delete a file in the working directory
rm unwanted_file.txt
# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt
Leeres Verzeichnis entfernen
Um ein leeres Verzeichnis zu entfernen, verwenden wir den Befehl rmdir
– die Abkürzung für Remove-Verzeichnis – gefolgt vom Namen des Ordners.
# delete an empty folder
rmdir empty_directory
# delete an empty folder
rmdir ~/Documents/my_files/empty_directory
Ein nicht leeres Verzeichnis entfernen
Um einen nicht leeren Ordner zu entfernen, müssen Sie das Flag -R
– die Abkürzung für rekursiv – hinter dem Befehl rm
setzen. Dadurch wird der Computer angewiesen, den Inhalt im Ordner zu löschen. Einige Entwickler verwenden zur schnelleren Verwendung das Flag -Rf
. Hierdurch wird alles streng entfernt. Andernfalls erhalten Sie möglicherweise Aufforderungen zum Löschen einiger untergeordneter Dateien oder Ordner.
# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty
# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty
Warnung: Der Befehl rm
ähnelt nicht der Papierkorb bzw. der Löschung Ihrer E-Mails. Diese Dateien können nicht einfach wiederhergestellt werden. Wenn Sie Dateien auf diese Art löschen, achten Sie darauf, dass Sie sehr vorsichtig sind.
Mini-Wettkämpfe
- Erstellen Sie vier Dateien.
- Löschen Sie zwei Dateien.
- Erstellen Sie einen Ordner.
- Erstellen Sie einen weiteren Ordner und erstellen Sie eine Datei in diesem Ordner.
- Löschen Sie beide Verzeichnisse.
Sie finden den Code für dieses Lab im folgenden Ordner des Schüler-/Studenten-Repositorys, das Sie von GitHub heruntergeladen haben: command-line/labs/around-the-world
Hintergrund
Dein Semester im Ausland rückt näher und die Planung deiner europäischen Reisen hat begonnen.
In Anbetracht der drei Monate wichtiger Lebensweise in der nahen Zukunft möchten Sie sichergehen, dass Sie sich jede Wochenendreise zunutze machen.
Glücklicherweise beginnen Sie nicht von vorn und Ihre Freunde haben Ihnen einige ihrer Lieblingsaktivitäten an ihrem Aufenthalt im Ausland angeboten. Einige Dateien sind leider durcheinander...
Mit der Befehlszeile können Sie sie im Handumdrehen fertigstellen.
Aufgabe
Jede Stadt muss sich im richtigen Land befinden und jeder Ordner muss die richtigen Monumente enthalten. Vorsicht, vielleicht wirst du in Amsterdam nach dem Eiffelturm suchen!
Wenn Sie sich damit echt fühlen, können Sie das GUI ausblenden und sich direkt über die Befehlszeile mit diesem Wettkampf auseinandersetzen. Bleiben Sie dabei im globalen Ordner, da die absolute Pfade auf Ordner und Dateien verweisen.
Wenn du dir sicher bist, dass alles an der richtigen Stelle ist, bist du an der Reihe, in den nächsten Monaten den Befehl zu geben. Überleg dir neue Städte, Länder und Denkmäler, die du ERFORDERLICH brauchst, um sie in deinem Dateibaum zu sehen.
Glückwunsch! Du hast offiziell gelernt, wie man Computer spricht. Noch einen Schritt weiter? Anruferweiterungen...
Erweiterungen
- Jetzt können Sie alle Ihre Dateien zusammenfassen und in einer Stadt Ihrer Wahl ankommen. Organisieren Sie die Dateien wieder und bleiben dabei in dieser Stadt.
- Probiere eines der unten aufgeführten lustigen Befehlszeilenspiele aus
Endus Game
Advanced Game (bereit für Google) - Ein großer Fan von Star Wars? Führen Sie
telnet towel.blinkenlights.nl
in der Befehlszeile aus und drücken Sie die Eingabetaste... Hinweis: In neueren macOS-Versionen ist der Befehltelnet
nicht mehr standardmäßig installiert. In diesem Fall kann stattdessen der Befehlnc towel.blinkenlights.nl 23
verwendet werden.
Sie finden den Code für dieses Lab im folgenden Ordner des Schüler-/Studenten-Repositorys, das Sie von GitHub heruntergeladen haben: command-line/labs/bashing-away-repetition
Bist du bereit, die Wiederholung zu reduzieren? Sehr gut!
Hintergrund
Programmierer lieben Wiederholung. Als Informatiker ist es unsere Aufgabe, diesen Computer so viel wie möglich zu erledigen. Durch das Erstellen von Bash-Skripts können wir unsere Befehlszeilennutzung effizienter gestalten.
Zuerst einmal: Was ist ein Bash-Skript?
GREAT-Frage. Zum Glück hat unser Freund Ryan Chadwick in diesem großartigen Ort, in dem wir Befehlszeilenanleitungen finden, eine Antwort für uns.
Mit einem Bash-Skript können wir eine Reihe von Aktionen definieren, die der Computer ausführt, ohne dass wir die Befehle selbst eingeben müssen. Wenn eine bestimmte Aufgabe häufig oder wiederkehrend ausgeführt wird, kann ein Skript hilfreich sein.
Keine Wiederholungen? Darum geht es.
Tutorial
Damit Sie das Skript ausführen können, müssen Sie Ihrem Computer zuerst die Berechtigung erteilen. Führen Sie dazu den folgenden Befehl aus.
chmod 755 myScript.sh
Zeit, dein erstes Programm zu schreiben. Rufe myScript.sh
auf, um zu sehen, ob du die Datei über die Befehlszeile öffnen kannst. Fügen Sie am Ende der Datei Folgendes hinzu:
echo "Hello World"
Führen Sie jetzt diesen Befehl aus:
./myScript.sh
im Terminal. ** TA DA ** sollte auf Ihrem Terminal die Meldung „Hello World“ sehen.
Alles, was Sie in Ihrem Bash-Skript schreiben, wird so ausgeführt, als ob Sie es in Ihr Terminal eingegeben hätten. Sehen wir uns ein weiteres Beispiel an, bevor wir zu den Erweiterungen wechseln. Zuerst erstellen Sie eine Datei für Ihr Skript. Sie können sie nach Belieben benennen. Sie sollte jedoch die Erweiterung „.sh
“ haben. Achten Sie darauf, dass das Skript ausgeführt wird. Geben Sie dazu chmod 755
, dann den Namen des Skripts im Terminal und die Eingabetaste ein. Jedes Mal, wenn Sie ein neues Bash-Skript starten, müssen Sie diese beiden Schritte ausführen.
Einführungsherausforderung
Versuchen Sie nun, ein Skript zu schreiben, mit dem ein neuer Ordner erstellt wird. Mit welchem Befehl wird ein neuer Ordner erstellt? Wenn Sie über ein Wort nachdenken, das mit m
beginnt und mit kdir
endet, sind Sie auf dem richtigen Weg. Schreiben Sie den Befehl, durch den der neue Ordner erstellt wird, und nennen Sie ihn in der neuen .sh
-Datei. Geben Sie ihm einen coolen Namen und führen Sie ihn dann in Ihrem Terminal aus.
Wenn es funktioniert, fahren Sie mit den anderen unten aufgeführten Herausforderungen fort. Wenn Sie immer noch verwirrt sind, werfen Sie einen Blick auf die globale Lab-Ebene und überlegen Sie, wie Sie neue Ordner für Länder und Städte erstellt haben.
Die oben verlinkte Anleitung hilft Ihnen auch dabei, Ihre Kenntnisse zu Google-Wissen unter Beweis zu stellen. Skripts erstellen und ausführen, die Folgendes tun:
Hauptaufgaben
- Fügen Sie der oben erstellten Datei einen Befehl hinzu, der zum Ordner führt, den Sie gerade erstellen. Mit welchem Befehl wechseln Sie in die Verzeichnisse?
- Datumsstempel des neuen Ordnernamens. Ihr Programm sollte beispielsweise einen Ordner mit dem Namen "
2017-12-07my_super_cool_folder
"
- Gedruckt ist „Mein aktuelles Verzeichnis“ „" gefolgt von Ihrem Arbeitsverzeichnis“; „"Hier ist eine Liste aller Inhalte in diesem Verzeichnis!“ Nach dem Inhalt Ihres aktuellen Verzeichnisses.
- Finden Sie heraus, wie Sie dem Bash-Skript eine Eingabe geben und basierend auf diesem Eingabestring eine Datei erstellen. Die zuvor im Lab verlinkte Anleitung zeigt einige gute Beispiele im Abschnitt „Variablen“.
- Frage den Nutzer nach seinem Namen und drucke ihn aus. Hallo, deinen Namen hier einfügen.
- Bitten Sie den Nutzer um weitere Informationen und erstellen Sie eine persönliche Nachricht für ihn.
KONTEXT
Über die Befehlszeile (Terminal) können Sie direkt mit dem Betriebssystem des Computers interagieren. Das ist alles, was mit der grafischen Benutzeroberfläche (Graphical User Interface, GUI) über Textbefehle verbunden ist – vom Navigieren über das Erstellen neuer Dateien bis hin zum Ausführen von Skripts. Sie wird verwendet, um Dateien zu öffnen und die Entwicklungsumgebung zu starten, wenn Sie Google App Engine verwenden.
Befehlszeile in Aktion
Auf das Terminal zugreifen
Tastenkombination Mac:
- Öffnen Sie Spotlight mit der Befehlstaste + Leertaste.
- Geben Sie Terminal in das Feld Spotlight Search ein.
Navigation im Terminal
# See your current location - abbreviation for 'print working directory'.
pwd
# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads
# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory
# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..
# Return home.
cd
# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```
#### File Path Shorthand `~`
The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.
This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.
### <a id="view"></a>Viewing the Contents of Folders
```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls
Dateien und Ordner erstellen
Dateien erstellen
# Make a file - this will create a file in the current folder.
touch my_text_file.txt
# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css
# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html
Ordner erstellen
# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder
# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder
# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three
Dateien verschieben und Ordner
Dateien verschieben
# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist. Read below for more details on renaming.
# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder
Ordner verschieben
# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder
# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder
Umzug ist umbenannt
Beachten Sie, dass mit mv
auch der Befehl zum Umbenennen von Dateien oder Ordnern verwendet wird.
# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt
Dateien &Ordner kopieren
Dateien kopieren
# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt
Ordner kopieren
# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy
# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy
Dateien &Ordner löschen
Dateien löschen
# Delete a file in the current working directory.
rm unwanted_file.txt
# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt
Ordner löschen
# Delete an empty folder.
rmdir empty_directory
# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty
Tipps und Tricks
- Üben Sie die Befehlszeile, auch wenn Sie dies nicht möchten. Besser werden sie mit der Zeit.
- Mit dem Schlüssel
tab
wird Ihre Datei oder Ihr Ordner automatisch vervollständigt. Die Groß- und Kleinschreibung muss dabei berücksichtigt werden. - Wenn nur eine übereinstimmende Datei oder ein Ordner übereinstimmt, wird sie automatisch vervollständigt.
- Wenn es mehrere übereinstimmende Dateien oder Ordner gibt, drücken Sie die Tabulatortaste zweimal, um eine Liste der verbleibenden Übereinstimmungen aufzurufen.
- Mit dem Aufwärtspfeil / Abwärtspfeil wird der Befehlsverlauf durchgestrichen, sodass Sie keine neuen Befehle eingeben müssen.
- Verwenden Sie den Befehl
clear
, um das Terminalfenster zu löschen. So bleiben alle Ihre bisherigen Aufgaben erhalten. Scrollen Sie nach oben, um sie zu sehen. - Starten Sie das Terminal mit
reset
. Dadurch werden Ihre früheren Arbeiten nicht auf dem Bildschirm angezeigt. Sie können jedoch mehrere Probleme beheben, wenn sich das Terminal unvorhersehbar verhält. option
+arrow
drücken, um den Cursor um ein Wort zu bewegen
Zusammenfassung der Best Practices
- Gehen Sie im Terminal mit
cd
,cd ..
odercd <folder name>
. - Mit
ls
können Sie sich den Inhalt von Ordnern ansehen. - Dateien mit
touch
erstellen, Ordner mitmkdir
erstellen. - Dateien und Ordner mit
mv <item to move> <destination>
verschieben. - Dateien und Ordner mit
cp <item to copy> <destination>
kopieren. - Dateien und Ordner mit
rm <item to remove>
löschen
Frage 1
Wie würden Sie Ihr aktuelles Arbeitsverzeichnis identifizieren?
pwd
ls
cd
mkdir
touch
Frage 2
Wie könnten Sie zwei Ebenen aus Ihrem aktuellen Arbeitsverzeichnis nach oben verschieben?
mv ~
cd ../..
mv up/up
cd ^(2)
Frage 3
Mit welchem Befehl können Sie eine Datei umbenennen?
mv
cd
ls
python
rename
Frage 4
Warum gibt der Befehl mv script.py
einen Fehler aus?
- Da „
script.py
'“ ein ungültiger Dateiname ist. - Weil auf den Befehl
mv
keine weiteren Informationen folgen können - Das ist eine einfache Frage, bei der kein Fehler ausgegeben wird.
- Weil für das Verschieben einer Datei mindestens zwei Argumente erforderlich sind: ein Ziel und ein Ziel
Frage 5
Was bewirkt der Befehl cd ~
?
- Ändern Sie Ihr Arbeitsverzeichnis in das Basisverzeichnis.
- Wiederholen Sie den vorherigen Befehl.
- Verwende den Algorithmus, um den nützlichsten Befehl zu finden.
- Es wird ein Fehler ausgegeben.
Frage 6
Welchen der folgenden Gründe verwenden Sie NICHT zur automatischen Vervollständigung von Dateinamen auf dem Tab?
- Das spart Zeit.
- da dadurch Rechtschreibfehler vermieden werden.
- weil sie weniger Rechenleistung benötigt.
Frage 7
Wenn ein neuer Entwickler versucht, eine Datei namens „my script.py
“ zu erstellen, funktioniert der Befehl „touch my script.py
“ dann nicht?
- Da
touch
keine neuen Dateien erstellen kann. - Weil
.py
keine gültige Dateiendung ist. - Da damit zwei Dateien erstellt werden, eine mit dem Namen "
my
" und eine mit dem Namen "script.py
" anstatt nur eine. - Da es unmöglich ist, neue Dateien über die Befehlszeile zu erstellen.
Frage 1
Wie würden Sie Ihr aktuelles Arbeitsverzeichnis identifizieren?
pwd
Frage 2
Wie könnten Sie zwei Ebenen aus Ihrem aktuellen Arbeitsverzeichnis nach oben verschieben?
Mit cd ../..
wechselst du zwei Ebenen nach oben. Jede ..
steht für eine Ebene oben.
Frage 3
Mit welchem Befehl können Sie eine Datei umbenennen?
mv
wird verwendet, um eine Datei von einem Ort zu einem anderen zu verschieben, und kann auch verwendet werden, um den Dateinamen zu ändern.
Frage 4
Warum gibt der Befehl mv script.py
einen Fehler aus?
Für den Befehl mv
sind zwei Argumente, eine Quelldatei und eine Zieldatei erforderlich.
Frage 5
Was bewirkt der Befehl cd ~
?
Dadurch wird Ihr Arbeitsverzeichnis in Ihr Basisverzeichnis geändert. Das Sonderzeichen ~ wird verwendet, um das Basisverzeichnis des aktuellen Nutzers zu identifizieren. Sie kann auch in Kombination mit einem anderen Nutzernamen verwendet werden: ~user2, um auf ihren Basisordner zu verweisen.
Frage 6
Welchen der folgenden Gründe verwenden Sie NICHT zur automatischen Vervollständigung von Dateinamen auf dem Tab?
Weil das System weniger Rechenleistung benötigt, ist das Problem nicht korrekt. tab
benötigt eine (vernachlässigte) Rechenleistung, um Ordner, die nach dem Dateinamen suchen, zur automatischen Vervollständigung zu scannen. Dabei wird jedoch Zeit gespart und Rechtschreibfehler werden vermieden.
Frage 7
Wenn ein neuer Entwickler versucht, eine Datei namens „my script.py
“ zu erstellen, funktioniert der Befehl „touch my script.py
“ dann nicht?
Es werden zwei Dateien erstellt, nicht nur eine. Mit dem Befehl touch
werden neue Dateien erstellt. Im Terminalbereich sind Trennzeichen keine Zeichen, die im Dateinamen enthalten sein sollen. Am besten ist es, sie vollständig zu vermeiden. Wenn Sie sie jedoch verwenden müssen, muss der Dateiname in doppelte Anführungszeichen gesetzt werden:
touch "my script.py"
Frage 1
Der Terminalbefehl für die Verzeichnisänderung lautet:
move
mkdir
pwd
cd
Frage 2
Mit welchem Befehl können Sie zum übergeordneten Ordner Ihres aktuellen Arbeitsverzeichnisses wechseln?
cd up
cd .
cd ..
cd ~
Frage 3
Mit welchem Befehl werden Dateien erstellt?
touch
mkdir
create
pwd
Frage 4
Mit welchem der folgenden Befehle werden zwei Dateien mit dem Namen index.html
und style.css
erstellt?
touch index.html, touch style.css
touch index.html, style.css
touch index.html style.css
touch index.html + style.css
Frage 5
Mit welchem Befehl umbenennen Sie eine Datei oder einen Ordner?
rename
move
mv
rm
Frage 6
Welches Flag benötigen die Befehle rm
und cp
, um in Ordnern zu arbeiten?
-f
-r
-x
-d
Frage 7
Welcher Befehl muss leer sein, um projects
nach ~/Documents
zu verschieben und in Projects
umzubenennen?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
pwd
cd projects
mv ~ projects
cd ~/Documents
ls
Frage 8
Welche Auswirkungen hat der folgende Befehl?
rm -r projects
- Datei mit dem Namen „
projects
“ löschen - Ordner „
projects
“ löschen - Datei mit dem Namen „
projects
“ umbenennen - Im aktuellen Verzeichnis für
projects
suchen
Frage 1
Der Terminalbefehl für die Verzeichnisänderung lautet:
Der Terminalbefehl für das Wechseln der Verzeichnisse lautet cd
. Der Befehl selbst ist eine Abkürzung für „&change verzeichnis"“.
Frage 2
Mit welchem Befehl können Sie zum übergeordneten Ordner Ihres aktuellen Arbeitsverzeichnisses wechseln?
Der Befehl zum Aufrufen des übergeordneten Ordners lautet cd ..
.
Frage 3
Mit welchem Befehl werden Dateien erstellt?
Der Befehl zum Erstellen von Dateien ist touch
.
Frage 4
Mit welchem der folgenden Befehle werden zwei Dateien mit dem Namen index.html
und style.css
erstellt?
Mit dem Befehl touch index.html style.css
werden die beiden Dateien erstellt. Sie müssen kein Komma eingeben und beliebig viele Dateien können durch Leerzeichen getrennt erstellt werden.
Frage 5
Mit welchem Befehl umbenennen Sie eine Datei oder einen Ordner?
Sie steht für „move“ und kann zum Verschieben von Dateien oder Ordnern verwendet werden. mv
kann aber auch zum Umbenennen von Dateien und Ordnern verwendet werden.
Frage 6
Welches Flag benötigen die Befehle rm
und cp
, um in Ordnern zu arbeiten?
Für die Befehle rm
und cp
ist das Flag -r
erforderlich, damit sie in Ordnern funktionieren können, da das Flag -r
für „rekursiv“ steht und den Befehl für alle darin enthaltenen Dateien und Ordner noch einmal ausführt.
Frage 7
Welcher Befehl muss leer sein, um projects
nach ~/Documents
zu verschieben und in Projects
umzubenennen?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
Da wir mit dem Basisverzeichnis beginnen, müssen wir cd ~/Documents
ausführen, damit der endgültige Befehl im richtigen Verzeichnis ausgeführt wird.
Frage 8
Welche Auswirkungen hat der folgende Befehl?
rm -r projects
Durch den Befehl wird entweder eine Datei ODER ein Ordner mit dem Namen projects
gelöscht, da er mit dem Flag -r
oder rekursiv verwendet wird. Ohne dieses Flag würde durch diesen Befehl nur eine Datei mit diesem Namen gelöscht werden.