Über die Befehlszeile können Sie einen Computer ohne GUI steuern. In diesem Modul lernen wir die grundlegenden Befehle kennen, mit denen wir mit unserem Computer interagieren können.
Zusammenfassung
- Die Schüler bewegen sich mit Befehlen auf ihrem Computer.
- Die Schüler erstellen, verschieben, kopieren und löschen Dateien und Ordner.
Was ist die Befehlszeile?
Die meisten Nutzer verwenden die meiste Zeit eine grafische Benutzeroberfläche (GUI), um mit dem Computer zu interagieren. GUIs basieren in der Regel auf der Verwendung einer Maus oder auf Berührungen, um Fenster mit Symbolen, Schaltflächen, Scrollleisten usw. zu bearbeiten.
Die Befehlszeile ist eine alternative Ansicht des Computers. Die Befehlszeile wird manchmal auch als „Shell“, „Terminal“, „Bash“ oder „Textschnittstelle“ bezeichnet und ist:
- Eine Möglichkeit, mit einem Computerprogramm zu interagieren, bei der der Nutzer Befehle eingibt, z. B.:
open README.txt
- Eine Möglichkeit, Ihren Computer ohne Maus zu bedienen.
- Eine nicht grafische Möglichkeit, Dateien und Verzeichnisse zu erstellen, zu lesen, zu aktualisieren, zu bearbeiten und zu löschen, z. B.:
mv README.txt readme.txt
Die GUI und die Befehlszeile beziehen sich auf dieselben Daten. Sie bieten verschiedene Möglichkeiten, mit dem Computer zu interagieren.
Wann verwenden wir die Befehlszeile?
Befehlszeilen werden von Entwicklern oft bevorzugt:
- Sie bieten eine präzisere Möglichkeit, ein Programm oder Betriebssystem zu steuern. Warum? Da alles im selben Fenster passiert, ist es mit etwas Übung weniger aufwendig, als wenn Sie Elemente mit der Maus suchen und bearbeiten müssen.
- Sie bieten einfachen Zugriff auf Optionen zum Steuern eines Befehls. Warum? Menüs in GUIs bieten nur eine sehr geringe Anzahl von Optionen. In der Befehlszeile gibt es Hunderte von Befehlen. Wenn Sie einem Befehl einige Zeichen hinzufügen, kann er viele verschiedene Dinge tun, z.B.:
ls
Einfache Listendateienls -a
Alle Dateien auflisten, einschließlich normalerweise verborgener Dateienls -l
Lange Liste mit Informationen zu jeder Dateils -R
Rekursiv, Inhalt von Verzeichnissen auflistenls -la
Alle Dateien in einer langen Liste anzeigen- Sie ermöglichen es, viele Dateien gleichzeitig auf komplexe Weise zu bearbeiten.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
- Sie bieten eine Möglichkeit, das Betriebssystem (Shell-Programme) zu programmieren. Das obige Beispiel ist ein sehr einfaches Shell-Programm, das entwickelt wurde, um Bilder mit Dateinamen zu ändern, die mit
.png
enden.
Befehlszeile in Aktion
Teile eines Befehlszeilenbefehls
Alle Befehle bestehen aus drei Teilen:
- Der Befehl (oder das Dienstprogramm) steht immer an erster Stelle.
- Flags sind optional und hängen vom verwendeten Dienstprogramm ab. Flags beginnen immer mit einem Minuszeichen (-).
- Argumente sind die Elemente, auf die sich der Befehl bezieht, oder erforderliche Informationen. Häufig Dateinamen.
Framing
Kontext und Zweck
Über die Befehlszeile können Sie einen Computer ohne Maus oder grafische Benutzeroberfläche (GUI) steuern. Bevor Apple Computer begann, Computer mit Symbolen und Ordnern zu bauen, auf die man klicken konnte, war die einzige Möglichkeit, mit dem Computer zu interagieren, die Befehlszeile.
Als Entwickler verwenden wir die Befehlszeile, weil sie viel schneller und leistungsfähiger als die GUI ist – wir müssen nicht unnötig Zeit mit Klicken verschwenden. Über die Befehlszeile können Sie so gut wie jede Interaktion mit Ihrem Computer ausführen.
Da das Terminal eine viel einfachere Schnittstelle ist, bietet es einen großen Vorteil gegenüber der GUI, wenn Sie über eine Netzwerkverbindung eine Remoteverbindung zu einem Computer herstellen müssen. Das ist etwas, was Entwickler sehr häufig tun, z. B. auf Reisen.
In dieser Lektion lernen wir die grundlegenden Befehle kennen, mit denen wir mit unserem Computer interagieren können. Dazu gehören das Erstellen von Dateien und Verzeichnissen, das Verschieben von Ordnern, das Ändern von Verzeichnissen und das Auflisten des Inhalts eines Ordners.
Lernziele
Lernende haben folgende Möglichkeiten:
- Mit dem Terminal Dateien und Ordner aufrufen
- Inhalt eines Ordners auflisten
- Dateien und Ordner über die Befehlszeile erstellen
- Dateien und Ordner verschieben
- Dateien und Ordner kopieren
- Dateien und Ordner löschen
Erste Schritte
Auf das Terminal zugreifen
Einleitung und Zweck des Abschnitts
Das Terminal bietet eine Befehlszeile für das Betriebssystem. Damit können Sie Ihrem Computer direkte, textbasierte Anweisungen geben.
Dazu müssen wir das Terminal basierend auf dem von Ihnen verwendeten System starten.
Wenn das Terminal gestartet wird, wird es im Home-Verzeichnis Ihres Computers (entsprechend dem Namen, den Sie Ihrem Computer gegeben haben) geöffnet. Ihr Home-Verzeichnis wird durch die Tilde~
angegeben.
Wenn wir in der Shell über unsere Welt sprechen, sind Verzeichnisse dasselbe wie Ordner (wir nennen sie manchmal auch Verzeichnisse).
Verzeichnisse wechseln
Einleitung und Zweck des Abschnitts
Damit wir mit unserem Computer im Terminal kommunizieren und ihm sagen können, was wir tun möchten, müssen wir eine gemeinsame Sprache sprechen. Die Befehlszeile versteht Befehle, die in der Bash-Scripting-Sprache geschrieben sind. Die Befehle sind Akronyme oder Abkürzungen englischer Wörter.
Arbeitsverzeichnis ausgeben (pwd
)
Wenn Sie im Terminal navigieren, ist es wichtig zu wissen, wo Sie sich gerade befinden. Das gilt auch für das echte Leben: Wenn Sie irgendwohin gelangen möchten, müssen Sie zuerst wissen, wo Sie sich gerade befinden.
# See your current location - abbreviation for 'print working directory'
pwd
Verfügbare Dateien und Verzeichnisse auflisten
In Ihrem Arbeitsverzeichnis befinden sich wahrscheinlich mehrere Dateien, auf die Sie zugreifen können. Normalerweise verlassen wir uns auf visuelle Hinweise wie Symbole, um zu erkennen, was verfügbar ist. Es wäre jedoch schwierig, auf unserem Computer zu navigieren, wenn wir nur raten würden, wo sich Dateien und Ordner befinden. In der Befehlszeile verwenden wir einen bestimmten Befehl, um aufzulisten, worauf wir von einem beliebigen Arbeitsverzeichnis / einem beliebigen Speicherort aus zugreifen können.
Wenn Sie sehen möchten, welche Dateien oder Ordner sich in unserem aktuellen Verzeichnis befinden, verwenden Sie den Befehl ls
(Abkürzung für „list“), um eine Listenansicht der Inhalte aufzurufen.
# 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 enthalten sind, können Sie das Arbeitsverzeichnis ändern, um leichter darauf zuzugreifen.
Die Syntax, mit der Sie die Befehlszeile anweisen, in ein neues Verzeichnis (auch Ordner genannt) zu wechseln, lautet cd
, gefolgt (in derselben Zeile) vom Pfad zum neuen Ordner.
Wenn Sie zu einem Verzeichnis wechseln möchten, das sich im aktuellen Verzeichnis befindet (d.h. einem Unterordner Ihres Arbeitsverzeichnisses), verwenden Sie den Befehl cd
gefolgt vom Namen des Ordners.
# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents
Sie können auch vom Home-Verzeichnis ~ aus navigieren.
# Add a `~/` to begin from the home directory.
cd ~/Downloads
Wenn Sie das Verzeichnis gewechselt haben, aber zum Basisverzeichnis zurückkehren möchten, können Sie entweder direkt mit ~
zum Basisverzeichnis zurückkehren oder mit ..
eine Ebene nach oben wechseln.
# Option 1: navigate directly to the home directory
cd ~
# Option 2: navigate back one level
cd ..
Beachten Sie, dass cd ..
nur eine Ebene nach oben (zurück) geht. Wenn Sie also bisher dreimal das Verzeichnis gewechselt haben (drei Ebenen nach unten), müssen Sie cd ..
dreimal verwenden, um ganz nach oben zu gelangen. cd ~
ist dagegen nur einmal erforderlich.
Mini-Challenges
- Mit
ls
können Sie sich den Inhalt Ihres aktuellen Verzeichnisses ansehen. - Gehen Sie zurück zum Basisverzeichnis und verwenden Sie
ls
, um den Inhalt des Basisordners aufzurufen. - Wählen Sie den Namen eines der Ordner im Home-Verzeichnis aus und navigieren Sie zu diesem neuen Ordner.
- Verwenden Sie den Befehl „list“, um zu sehen, was sich darin befindet.
Profi-Tipp: Automatische Vervollständigung mit tab
Wenn Sie mit dem Befehl cd
Verzeichnisse ändern, führt ein einziger Tippfehler dazu, dass der Befehl nicht richtig ausgeführt wird. Wenn Sie jedoch die Taste tab
verwenden, wird der Name aller verfügbaren Verzeichnisse im aktuellen Verzeichnis automatisch vervollständigt. Geben Sie also anstelle von cd Documents
einfach cd Do
ein und drücken Sie dann die Taste tab
. Das Terminal vervollständigt den Befehl cd Documents/
für Sie. Das /
am Ende ist optional, gibt aber an, dass das Ziel ein Verzeichnis ist.
Diese Funktion spart nicht nur Zeit, wenn sie funktioniert, sondern liefert auch wertvolle Informationen, wenn sie nicht funktioniert. Wenn die Tab-Schaltfläche nicht automatisch vervollständigt wird, liegt wahrscheinlich eines der folgenden drei häufigen Probleme vor:
- Auf das Verzeichnis, zu dem Sie wechseln möchten, kann nicht über Ihr aktuelles Arbeitsverzeichnis zugegriffen werden.
- Es gibt zwei Verzeichnisse, die ähnlich beginnen (z. B.
Documents
undDownloads
), und Sie haben nicht genügend Informationen für die automatische Vervollständigung angegeben, um zu wissen, welches Sie möchten. Drücken Sie noch einmal auftab
, um eine Liste der Verzeichnisse zu sehen, die mit dem übereinstimmen, was Sie eingegeben haben. Geben Sie dann etwas mehr Text ein (sodass es nur eine Übereinstimmung gibt) und drücken Sie noch einmaltab
. - Sie haben bereits in der ersten Hälfte des Wortes einen Tippfehler gemacht.
Je früher Sie sich daran gewöhnen, Befehle mit der Tabulatortaste zu vervollständigen, desto wahrscheinlicher ist es, dass Sie frustrierende Situationen vermeiden, in denen Ihre Befehle scheinbar nicht funktionieren.
Übergeordnete und untergeordnete Verzeichnisse
Verzeichnisse und Dateien können untergeordnete und übergeordnete Beziehungen zueinander haben. Wenn directory_b
innerhalb von directory_a
liegt, wird directory_b
als untergeordnetes Element von directory_a
bezeichnet. directory_a
wird dann als übergeordnetes Element von directory_b
bezeichnet. Wenn sich ein drittes Element, my_file
, in einem directory_b
befindet, gilt es als untergeordnetes Element von directory_b
und als Enkel von directory_a
.
Diese Beziehungen werden in Foren oft mit einem Textdiagramm veranschaulicht, z. B. so:
directory_a/ directory_b/ my_file
Beachten Sie, dass Verzeichnisnamen mit /
enden, Dateinamen jedoch nicht. Diese hierarchische Organisation wird im Allgemeinen als Baumstruktur eines Dateisystems bezeichnet.
Geschwister
Wenn sich mehrere Dateien oder Ordner auf derselben Ebene befinden, werden sie als Geschwister bezeichnet. Beispiel: Wenn sich file_b
und file_c
innerhalb von directory_a
befinden, sind sie Geschwister.
Das Textdiagramm würde so aussehen:
directory_a/ file_b file_c
Da file_b
und file_c gleichgeordnet sind, haben sie dieselbe Einrückung.
Dateipfade
Hier ist ein komplexeres Textdiagramm, das sowohl hierarchische als auch gleichrangige Beziehungen enthält.
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, aber es hat auch einen Pfad, der beschreibt, 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 entweder schrittweise mit Namen navigieren oder mit einem einzigen Befehl den gesamten Pfad angeben.
# 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/
Zusammenfassung der 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-Challenges
- Mit
pwd
können Sie den aktuellen Ordner ermitteln. - Wechseln Sie in ein anderes Verzeichnis und bestätigen Sie den neuen Speicherort.
- Versuchen Sie es noch einmal und wechseln Sie zu einem anderen Ordner. Mit den neuen Befehlen können Sie Ihren Standort und die Dateien in diesem Verzeichnis aufrufen.
Dateien und Verzeichnisse erstellen
Einleitung und Zweck des Abschnitts
Als Entwickler müssen wir Dateien mit Code erstellen. Damit diese Dateien organisiert bleiben, müssen wir Ordner / Verzeichnisse erstellen, in denen wir unsere Dateien speichern können.
Achten Sie auf Ihren Standort im Terminal, bevor Sie Dateien und Ordner erstellen.
# See your current location.
pwd
Verwenden Sie den Befehl touch
, gefolgt vom Dateinamen, um eine Datei zu erstellen.
# `touch` creates a new file.
touch style.css
Wenn Sie Dateien erstellen, fügen Sie eine Dateiendung hinzu, um den Typ anzugeben. Beispiele für Dateitypen:
.js
als JavaScript-Datei erstellen.html
HTML-Datei erstellen.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, indem Sie zwischen den einzelnen Namen Leerzeichen einfügen.
# 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
Verwenden Sie den Befehl mkdir
(Abkürzung für „make directory“), gefolgt vom Namen des Ordners, um ein Verzeichnis bzw. einen Ordner zu 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
Mehrere Verzeichnisse erstellen
Sie können mehrere Ordner gleichzeitig erstellen, indem Sie zwischen den einzelnen Namen Leerzeichen einfügen.
# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three
Mini-Challenges
- Eine neue Datei erstellen.
- Mehrere Dateien mit einem Befehl erstellen
- Erstellen Sie ein neues Verzeichnis.
- Erstellen Sie einige weitere neue Verzeichnisse. Versuchen Sie, nur einen Befehl zu verwenden.
- Erstellen Sie mit Ihrem Wissen über das Navigieren in Verzeichnissen und das Erstellen von Dateien und Ordnern einen „Stammbaum“ auf Ihrem Desktop.
Verschieben und Kopieren
Dateien und Verzeichnisse verschieben
Einleitung und Zweck des Abschnitts
Wir können eine Datei oder einen Ordner über die Befehlszeile verschieben, müssen aber immer drei Dinge angeben:
- Wir verwenden den Befehl
mv
, die Abkürzung für move (verschieben). - Geben Sie nach dem Befehl „move“ den Namen der Datei oder des Ordners ein, die bzw. den Sie verschieben möchten.
- Geben Sie nach dem Namen der Datei das Ziel an, an das Sie sie verschieben möchten.
Angenommen, Sie haben eine Dateistruktur wie diese:
my_child_folder/ my_parent_folder/
Wie Sie sehen, ist die Organisation nicht korrekt. Die beiden Personen sind Geschwister, sollten aber Elternteil und Kind sein. 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 weitere Varianten des Befehls mv
:
# 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
. Wenn Sie eine Datei in ein Verzeichnis verschieben, das nicht vorhanden ist, oder das Ziel falsch schreiben, wird die Datei umbenannt, anstatt verschoben.
Mini-Challenges
- Erstelle fünf Textdateien (.txt).
- Erstellen Sie ein neues Verzeichnis.
- Verschieben Sie die fünf Dateien, die Sie erstellt haben, in den Ordner.
- Erstellen Sie einen Ordner und verschieben Sie ihn in einen anderen Ordner.
Dateien und Verzeichnisse kopieren
Einleitung und Zweck des Abschnitts
Beim Erstellen von Web-Apps kann es sinnvoll sein, eine Datei zu duplizieren. Wenn wir beispielsweise zwei ähnliche Webseiten erstellen, möchten wir nicht von Grund auf neu beginnen. Die Syntax für den Befehl cp
(Kopieren) ähnelt der Syntax von mv
.
Datei kopieren
Der Kopierbefehl besteht aus drei Teilen:
- Der Befehl
cp
– Abkürzung für copy (kopieren) - Der Name der Datei, die kopiert werden soll
- Der Name der Kopie (wenn sie im selben Ordner bleibt) oder der Speicherort und Name (wenn sie in einen anderen Ordner verschoben wird).
# 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 die Kopie denselben Namen wie das Original haben soll, können Sie den Speicherort 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. Verwenden Sie diese Methode daher nur, wenn Sie sicher sind, dass sie Ihren Anforderungen entspricht.
Verzeichnis kopieren
Das Kopieren eines Ordners oder Verzeichnisses ist etwas komplizierter, da Sie wahrscheinlich nicht nur den Ordner, sondern auch alle darin enthaltenen Elemente kopieren möchten.
- Der Befehl
cp -R
(Abkürzung für copy recursive) wird sowohl für leere als auch für nicht leere Ordner verwendet. - Der Quellname (Ordner oder Datei, die verschoben werden soll)
- Der Name der Kopie (wenn sie im selben Ordner bleibt) oder der Speicherort und Name (wenn sie in einen anderen Ordner verschoben wird).
Achtung: Wenn Sie den Namen für die Kopie angeben und die Datei oder der Ordner noch nicht vorhanden ist, wird sie bzw. er beim Erstellen der Kopie erstellt. Wenn die Datei vor dem Ausführen des Kopierbefehls erstellt wurde, werden alle vorherigen Inhalte der Datei überschrieben. Seien Sie also vorsichtig.
# 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 -R
-Komponente des cp -R
wird als Flag bezeichnet. Flags beginnen immer mit einem Bindestrich und werden in Kombination mit Befehlen verwendet, um genauere Anweisungen für die Ausführung des jeweiligen Befehls zu geben.
Mini-Challenges
- Erstellen Sie eine Datei mit dem Namen
my_original.txt
. - Erstellen Sie im selben Ordner eine Kopie von
my_original.txt
mit einem neuen Namen. - Erstellen Sie ein neues Verzeichnis.
- Erstellen Sie eine Kopie dieses Verzeichnisses, geben Sie ihr aber einen anderen Namen.
- Erstellen Sie eine Kopie der kopierten Datei (aus Schritt 2), legen Sie sie aber in das kopierte Verzeichnis (aus Schritt 4) ein.
Dateien und Ordner entfernen
Einleitung und Zweck des Abschnitts
Wir können Dateien und Ordner über die Befehlszeile löschen. Dieser Vorgang kann jedoch nicht rückgängig gemacht werden.
Datei wird entfernt
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, können wir den Befehl rmdir
verwenden, die Abkürzung für Verzeichnis entfernen, gefolgt vom Namen des Ordners.
# delete an empty folder
rmdir empty_directory
# delete an empty folder
rmdir ~/Documents/my_files/empty_directory
Nicht leeres Verzeichnis entfernen
Wenn Sie einen nicht leeren Ordner entfernen möchten, müssen Sie nach dem Befehl rm
das Flag -R
(Abkürzung für rekursiv) eingeben, damit der Computer die Inhalte des Ordners löscht. Einige Entwickler verwenden als Abkürzung das Flag -Rf
, mit dem alles entfernt wird. Andernfalls werden Sie möglicherweise aufgefordert, einige der untergeordneten Dateien oder Ordner zu löschen.
# 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: Die Verwendung des Befehls rm
ist nicht mit dem Papierkorb oder dem Abschnitt „Gelöscht“ in Ihrer E-Mail vergleichbar. Diese Dateien können nicht einfach wiederhergestellt werden. Sei EXTREM VORSICHTIG, wenn du Dateien auf diese Weise löschst.
Mini-Challenges
- Erstelle vier Dateien.
- Löschen Sie zwei der Dateien.
- Ordner erstellen
- Erstellen Sie einen weiteren Ordner und darin eine Datei.
- Löschen Sie beide Verzeichnisse.
Den Code für dieses Lab finden Sie im folgenden Ordner im Studenten-Repository, das Sie von GitHub heruntergeladen haben: command-line/labs/around-the-world
Hintergrund
Dein Auslandssemester steht vor der Tür und es ist an der Zeit, deine Reisepläne für Europa zu schmieden…
In den nächsten drei Monaten steht einiges an. Du möchtest also jedes Wochenende optimal nutzen.
Zum Glück musst du nicht ganz von vorn anfangen. Deine Freunde haben dir einige ihrer Lieblingsaktivitäten aus ihrem Auslandssemester mitgeteilt. Leider sind einige Dateien durcheinandergeraten…
Keine Sorge, mit der Magie der Befehlszeile sind sie im Handumdrehen behoben.
Aufgabe
Achten Sie darauf, dass jede Stadt im richtigen Land liegt und dass jeder Stadtordner die richtigen Sehenswürdigkeiten enthält. Sei vorsichtig, sonst suchst du am Ende in Amsterdam nach dem Eiffelturm.
Wenn Sie sich WIRKLICH sicher fühlen, können Sie die GUI ausblenden und diese Aufgabe direkt über die Befehlszeile lösen. Sie sollten während des gesamten Vorgangs im allgemeinen Ordner „Around the World“ bleiben. Das bedeutet, dass Sie beim Verweisen auf Ordner und Dateien absolute Pfade verwenden müssen.
Wenn du dir sicher bist, dass alles an seinem Platz ist, kannst du die nächsten Monate in die Hand nehmen. Sammeln Sie Ideen für neue Städte, Länder und Denkmäler, die Sie UNBEDINGT sehen möchten, und fügen Sie sie Ihrem Dateibaum hinzu.
Glückwunsch! Du hast jetzt gelernt, wie man mit Computern spricht. Sie möchten noch einen Schritt weitergehen? Erweiterungen
Erweiterungen
- Mischen Sie alle Ihre Dateien noch einmal und begeben Sie sich dann in eine Stadt Ihrer Wahl. Organisieren Sie die Dateien noch einmal neu, während Sie sich weiterhin in dieser Stadt aufhalten.
- Probieren Sie eines der unten verlinkten unterhaltsamen Befehlszeilenspiele aus:
Terminus Game
Advanced Game (Google-Suche erforderlich) - Bist du ein großer Star Wars-Fan? Versuchen Sie,
telnet towel.blinkenlights.nl
in der Befehlszeile auszuführen und die Eingabetaste zu drücken.... Hinweis: In neueren Versionen von MacOS ist der Befehltelnet
nicht mehr standardmäßig installiert. In diesem Fall kann stattdessen der Befehlnc towel.blinkenlights.nl 23
verwendet werden.
Den Code für dieses Lab finden Sie im folgenden Ordner im Studenten-Repository, das Sie von GitHub heruntergeladen haben: command-line/labs/bashing-away-repetition
Möchten Sie die Wiederholungen in Ihrer täglichen Befehlszeilennutzung reduzieren? Super, ich auch!
Hintergrund
Programmierer hassen Wiederholungen. Als Informatiker ist es unsere Aufgabe, den Computer so viel wie möglich für uns arbeiten zu lassen. Wenn wir Bash-Skripts schreiben, können wir die Befehlszeile effizienter nutzen.
Zuerst einmal: Was ist ein Bash-Skript?
GUTE Frage. Glücklicherweise hat unser Freund Ryan Chadwick von dieser tollen Website mit Befehlszeilen-Tutorials eine Antwort für uns.
Mit einem Bash-Skript können wir eine Reihe von Aktionen definieren, die der Computer dann ausführt, ohne dass wir die Befehle selbst eingeben müssen. Wenn eine bestimmte Aufgabe häufig ausgeführt wird oder wiederholend ist, kann ein Script ein nützliches Tool sein.
Keine Wiederholung? Genau das meine ich.
Tutorial
Damit Sie Ihr 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
Ok, es ist Zeit, dein erstes Programm zu schreiben. Rufen Sie myScript.sh
auf und prüfen Sie, ob Sie die Datei über die Befehlszeile öffnen können. Fügen Sie am Ende der Datei Folgendes hinzu:
echo "Hello World"
Führen Sie jetzt diesen Befehl aus:
./myScript.sh
in Ihrem Terminal. ** TA DA ** In Ihrem Terminal sollte „Hello World“ angezeigt werden.
Alles, was Sie in Ihr Bash-Script schreiben, wird so ausgeführt, als hätten Sie es in Ihr Terminal eingegeben. Sehen wir uns noch ein Beispiel an, bevor wir uns mit Erweiterungen beschäftigen. Erstellen Sie zuerst eine Datei für Ihr Script. Sie können sie beliebig benennen, aber sie muss die Erweiterung .sh
haben. Als Nächstes müssen Sie Ihrem Skript die Berechtigung zum Ausführen erteilen. Geben Sie dazu chmod 755
und dann den Namen Ihres Skripts in das Terminal ein und drücken Sie die Eingabetaste. Jedes Mal, wenn Sie ein neues Bash-Script starten, sollten Sie diese beiden Schritte ausführen.
Einführungs-Challenge
Schreiben wir nun ein Skript, mit dem ein neuer Ordner erstellt wird. Mit welchem Befehl wird ein neuer Ordner erstellt? Wenn Sie an ein Wort denken, das mit m
beginnt und mit kdir
endet, sind Sie auf dem richtigen Weg. Schreiben Sie den Befehl, mit dem Sie Ihren neuen Ordner erstellen, und geben Sie ihm in Ihrer neuen Datei .sh
einen coolen Namen. Führen Sie den Befehl dann in Ihrem Terminal aus.
Wenn das funktioniert, fahre mit den anderen unten aufgeführten Herausforderungen fort. Wenn Sie sich noch nicht ganz sicher sind, sehen Sie sich noch einmal das Lab „Around the World“ an und überlegen Sie, wie Sie neue Länder- und Stadtordner erstellt haben.
Scheuen Sie sich nicht, die oben verlinkte Anleitung zu verwenden, und halten Sie Ihre besten Google-Suchfähigkeiten bereit. Sie können Skripts schreiben und ausführen, die Folgendes tun:
Hauptaufgaben
- Fügen Sie der oben erstellten Datei einen Befehl hinzu, mit dem Sie in den Ordner wechseln, den Sie erstellen. (Welchen Befehl verwenden wir, um Verzeichnisse zu wechseln?)
- Fügen Sie dem neuen Ordnernamen einen Zeitstempel hinzu. Ihr Programm sollte beispielsweise einen Ordner mit dem Namen „
2017-12-07my_super_cool_folder
“ erstellen.
- Gibt „Mein aktuelles Verzeichnis ist: “ gefolgt von Ihrem Arbeitsverzeichnis und „Hier ist eine Liste aller Elemente in diesem Verzeichnis!“ aus. “, gefolgt vom Inhalt Ihres aktuellen Verzeichnisses.
- Finden Sie heraus, wie Sie Ihrem Bash-Skript eine Eingabe geben und eine Datei basierend auf dieser Eingabezeichenfolge erstellen. Im Tutorial, das weiter oben im Lab verlinkt ist, finden Sie im Abschnitt „Variablen“ einige gute Beispiele.
- Frage den Nutzer nach seinem Namen und gib dann „Hallo, schön dich kennenzulernen, füge hier den Namen ein“ aus.
- Bitten Sie den Nutzer um weitere Informationen und erstellen Sie eine benutzerdefinierte Nachricht für ihn.
KONTEXT
Über die Befehlszeile (oder das Terminal) können Sie direkt mit dem Betriebssystem des Computers interagieren. Alles, was über die grafische Benutzeroberfläche (GUI) möglich ist, kann auch über Textbefehle ausgeführt werden – von der Navigation über das Erstellen neuer Dateien bis hin zum Ausführen von Scripts. Die Befehlszeile wird verwendet, um Dateien zu öffnen und die Entwicklungsumgebung zu initialisieren, wenn Google App Engine verwendet wird.
Befehlszeile in Aktion
Auf das Terminal zugreifen
Mac-Tastenkombination:
- Öffnen Sie Spotlight mit der Tastenkombination „Befehl + Leertaste“.
- Geben Sie Terminal in die Spotlight-Suche ein.
Im Terminal navigieren
# 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 und Ordner verschieben
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
Verschieben ist Umbenennen
mv
ist auch der Befehl, der 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 und 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 und 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 Verwendung der Befehlszeile, auch wenn Sie nicht glauben, dass Sie sie benötigen. Mit der Zeit werden Sie immer besser darin.
- Mit der Taste
tab
wird der Dateiname oder Ordnername automatisch vervollständigt. Dabei wird die Groß-/Kleinschreibung beachtet. - Wenn nur noch eine übereinstimmende Datei oder ein übereinstimmender Ordner vorhanden ist, wird der Name automatisch vervollständigt.
- Wenn es mehrere übereinstimmende Dateien oder Ordner gibt, drücken Sie zweimal die Tabulatortaste, um eine Liste der verbleibenden Übereinstimmungen aufzurufen.
- Mit den Auf- und Abwärtspfeilen können Sie durch Ihren Befehlsverlauf blättern, sodass Sie Befehle nicht noch einmal eingeben müssen.
- Verwenden Sie den Befehl
clear
, um das Terminalfenster zu leeren. So bleiben alle Ihre bisherigen Eingaben erhalten. Scrollen Sie nach oben, um sie zu sehen. - Verwenden Sie
reset
, um das Terminal neu zu starten. Dadurch wird Ihre bisherige Arbeit nicht auf dem Bildschirm angezeigt, aber es können verschiedene Probleme behoben werden, wenn sich das Terminal unvorhersehbar verhält. - Drücken Sie
option
+arrow
, um den Cursor um ein Wort zu bewegen.
Zusammenfassung der Best Practices
- Navigieren Sie im Terminal mit
cd
,cd ..
odercd <folder name>
. - Mit
ls
können Sie den Inhalt von Ordnern aufrufen. - Dateien werden mit
touch
erstellt, Ordner mitmkdir
. - 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
Welchen Befehl würden Sie verwenden, um Ihr aktuelles Arbeitsverzeichnis zu ermitteln?
pwd
ls
cd
mkdir
touch
Frage 2
Wie würden Sie zwei Ebenen nach oben vom aktuellen Arbeitsverzeichnis aus wechseln?
mv ~
cd ../..
mv up/up
cd ^(2)
Frage 3
Welchen Befehl würden Sie verwenden, um eine Datei umzubenennen?
mv
cd
ls
python
rename
Frage 4
Warum gibt der Befehl mv script.py
einen Fehler aus?
- Der Dateiname „
script.py
“ ist ungültig. - Der
mv
-Befehl darf nicht von anderen Informationen gefolgt werden. - Das ist eine Fangfrage. Es würde kein Fehler ausgegeben.
- Zum Verschieben einer Datei sind mindestens zwei Argumente erforderlich: ein Ziel und ein Zielort.
Frage 5
Was würde der Befehl cd ~
bewirken?
- Wechseln Sie in Ihr Home-Verzeichnis.
- Wiederholen Sie den vorherigen Befehl.
- Verwende einen Algorithmus, um den zu diesem Zeitpunkt nützlichsten Befehl zu ermitteln.
- Einen Fehler ausgeben.
Frage 6
Welche der folgenden Optionen ist KEIN Grund, die Tabulatortaste zum automatischen Vervollständigen von Dateinamen zu verwenden?
- Weil es Zeit spart.
- So lassen sich Rechtschreibfehler vermeiden.
- Weil weniger Rechenleistung erforderlich ist.
Frage 7
Warum funktioniert der Befehl touch my script.py
nicht, wenn ein neuer Entwickler versucht, eine Datei mit dem Namen „my script.py
“ zu erstellen?
touch
kann keine neuen Dateien erstellen.- Die Dateiendung
.py
ist ungültig. - Es werden zwei Dateien erstellt, eine mit dem Namen „
my
“ und eine mit dem Namen „script.py
“, anstatt nur einer. - Da es nicht möglich ist, neue Dateien über die Befehlszeile zu erstellen.
Frage 1
Welchen Befehl würden Sie verwenden, um Ihr aktuelles Arbeitsverzeichnis zu ermitteln?
pwd
Frage 2
Wie würden Sie zwei Ebenen nach oben vom aktuellen Arbeitsverzeichnis aus wechseln?
Mit cd ../..
springen Sie zwei Ebenen nach oben (jedes ..
steht für eine Ebene darüber).
Frage 3
Welchen Befehl würden Sie verwenden, um eine Datei umzubenennen?
Mit mv
wird eine Datei von einem Ort an einen anderen verschoben. Außerdem kann damit der Dateiname geändert werden.
Frage 4
Warum gibt der Befehl mv script.py
einen Fehler aus?
Für den Befehl mv
sind zwei Argumente erforderlich: eine Quelldatei und eine Zieldatei.
Frage 5
Was würde der Befehl cd ~
bewirken?
Dadurch wird Ihr Arbeitsverzeichnis in Ihr Home-Verzeichnis geändert. Das Sonderzeichen ~ wird verwendet, um das Home-Verzeichnis des aktuellen Nutzers zu identifizieren. Er kann auch in Kombination mit einem anderen Nutzernamen verwendet werden, z. B. ~user2, um auf den entsprechenden Home-Ordner zu verweisen.
Frage 6
Welche der folgenden Optionen ist KEIN Grund, die Tabulatortaste zum automatischen Vervollständigen von Dateinamen zu verwenden?
Weil weniger Rechenleistung erforderlich ist ist nicht richtig. tab
erfordert eine (häufig vernachlässigbare) Menge an Rechenleistung, um die Ordner nach Dateinamen zu durchsuchen, die automatisch vervollständigt werden können. Dadurch wird jedoch Zeit gespart und Rechtschreibfehler werden vermieden.
Frage 7
Warum funktioniert der Befehl touch my script.py
nicht, wenn ein neuer Entwickler versucht, eine Datei mit dem Namen „my script.py
“ zu erstellen?
Es werden zwei Dateien anstelle von nur einer erstellt. Mit dem Befehl touch
werden neue Dateien erstellt. Im Terminal sind Leerzeichen Trennzeichen und keine Zeichen, die im Dateinamen enthalten sein sollen. Es ist am besten, sie ganz zu vermeiden. Wenn Sie sie jedoch verwenden müssen, sollte der Dateiname in doppelte Anführungszeichen gesetzt werden:
touch "my script.py"
Frage 1
Der Terminalbefehl zum Wechseln von Verzeichnissen lautet:
move
mkdir
pwd
cd
Frage 2
Welchen Befehl würden Sie ausführen, wenn Sie zum übergeordneten Ordner Ihres aktuellen Arbeitsverzeichnisses wechseln möchten?
cd up
cd .
cd ..
cd ~
Frage 3
Welcher Befehl wird zum Erstellen von Dateien verwendet?
touch
mkdir
create
pwd
Frage 4
Mit welchem der folgenden Befehle werden zwei Dateien mit den 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
Welchen Befehl verwenden Sie, um eine Datei oder einen Ordner umzubenennen?
rename
move
mv
rm
Frage 6
Welches Flag ist für die Befehle rm
und cp
erforderlich, damit sie für Ordner funktionieren?
-f
-r
-x
-d
Frage 7
Welcher Befehl muss in die Lücke, 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
Was bewirkt der folgende Befehl?
rm -r projects
- Löschen Sie die Datei mit dem Namen
projects
. - Löschen Sie den Ordner mit dem Namen
projects
. - Eine Datei mit dem Namen
projects
umbenennen - Suche im Inhalt des aktuellen Verzeichnisses nach
projects
Frage 1
Der Terminalbefehl zum Wechseln von Verzeichnissen lautet:
Der Terminalbefehl zum Wechseln von Verzeichnissen ist cd
. Der Befehl selbst ist eine Abkürzung für „Verzeichnis wechseln“.
Frage 2
Welchen Befehl würden Sie ausführen, wenn Sie zum übergeordneten Ordner Ihres aktuellen Arbeitsverzeichnisses wechseln möchten?
Der Befehl zum Aufrufen des übergeordneten Ordners lautet cd ..
.
Frage 3
Welcher Befehl wird zum Erstellen von Dateien verwendet?
Der Befehl zum Erstellen von Dateien ist touch
.
Frage 4
Mit welchem der folgenden Befehle werden zwei Dateien mit den Namen index.html
und style.css
erstellt?
Mit dem Befehl touch index.html style.css
werden die beiden Dateien erstellt. Es ist kein Komma erforderlich und es können beliebig viele Dateien auf diese Weise erstellt werden, die durch Leerzeichen getrennt sind.
Frage 5
Welchen Befehl verwenden Sie, um eine Datei oder einen Ordner umzubenennen?
Obwohl es für „move“ (verschieben) steht und zum Verschieben von Dateien oder Ordnern verwendet werden kann, mv
kann auch zum Umbenennen von Dateien und Ordnern verwendet werden.
Frage 6
Welches Flag ist für die Befehle rm
und cp
erforderlich, damit sie für Ordner funktionieren?
Für die Befehle rm
und cp
ist das Flag -r
erforderlich, um für Ordner zu funktionieren, da das Flag -r
für „rekursiv“ steht und den Befehl für alle enthaltenen Dateien und Ordner noch einmal ausführt.
Frage 7
Welcher Befehl muss in die Lücke, um projects
nach ~/Documents
zu verschieben und in Projects
umzubenennen?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
Da wir im Basisverzeichnis beginnen, müssen wir cd ~/Documents
ausführen, damit der endgültige Befehl im richtigen Verzeichnis ausgeführt wird.
Frage 8
Was bewirkt der folgende Befehl?
rm -r projects
Mit dem Befehl wird entweder eine Datei ODER ein Ordner mit dem Namen projects
gelöscht, da er mit dem rekursiven Flag -r
aufgerufen wird. Ohne dieses Flag würde dieser Befehl nur zum Löschen einer Datei mit diesem Namen funktionieren.