Articles

Arbeiten mit Dateien und Verzeichnissen

Übersicht

Unterricht: 30 min
Übungen: 20 min
Fragen

  • Wie kann ich Dateien und Verzeichnisse erstellen, kopieren und löschen?

  • Wie kann ich Dateien bearbeiten?

  • Erstellen Sie eine Verzeichnishierarchie, die einem bestimmten Diagramm entspricht.

  • Erstellen Sie Dateien in dieser Hierarchie mit einem Editor oder durch Kopieren und Umbenennen vorhandener Dateien.

  • Löschen, kopieren und verschieben Sie bestimmte Dateien und/oder Verzeichnisse.

  • Verzeichnisse erstellen

    Wir wissen jetzt, wie man Dateien und Verzeichnisse untersucht, aber wie erstellen wir sie überhaupt?

    Erster Schritt: Sehen Sie, wo wir sind und was wir bereits haben

    Gehen wir zurück zu unserem data-shell Verzeichnis auf dem Desktopund verwenden Sie ls -F um zu sehen, was es enthält:

    $ pwd
    /Users/nelle/Desktop/data-shell
    $ ls -F
    creatures/ data/ molecules/ north-pacific-gyre/ notes.txt pizza.cfg solar.pdf writing/

    Erstellen Sie ein Verzeichnis

    Erstellen wir ein neues Verzeichnis mit dem Namen thesis mit dem Befehl mkdir thesis(das keine Ausgabe hat):

    $ mkdir thesis

    Wie Sie dem Namen entnehmen können, bedeutetmkdir „Verzeichnis markieren“.Da thesis der relative Pfad ist(dh., hat keinen führenden Schrägstrich, wie /what/ever/thesis),wird das neue Verzeichnis im aktuellen Arbeitsverzeichnis erstellt:

    $ ls -F
    creatures/ data/ molecules/ north-pacific-gyre/ notes.txt pizza.cfg solar.pdf thesis/ writing/

    Da wir gerade das neue Verzeichnis erstellt haben thesis Verzeichnis, es ist noch nichts drin:

    $ ls -F thesis

    Beachten Sie, dass mkdir nicht darauf beschränkt ist, einzelne Verzeichnisse einzeln zu erstellen. Mit der Option -p können Sie mit mkdir ein Verzeichnis mit einer beliebigen Anzahl verschachtelter Unterverzeichnisse in einem einzigen Vorgang erstellen:

    $ mkdir -p thesis/chapter_1/section_1/subsection_1

    Mit der Option -R der Befehl ls listet alle verschachtelten Unterverzeichnisse in einem Verzeichnis auf. Verwenden wir ls -FR , um die neue Verzeichnishierarchie, die wir gerade erstellt haben, rekursiv unter dem thesis Verzeichnis aufzulisten:

    $ ls -FR thesischapter_1/thesis/chapter_1:section_1/thesis/chapter_1/section_1:subsection_1/thesis/chapter_1/section_1/subsection_1:

    Zwei Möglichkeiten, dasselbe zu tun

    Die Shell zum Erstellen eines Verzeichnisses zu verwenden, unterscheidet sich nicht von der Verwendung eines Datei-Explorers.Wenn Sie das aktuelle Verzeichnis mit dem grafischen Datei-Explorer Ihres Betriebssystems öffnen, wird dort auch das Verzeichnis thesis angezeigt.Während die Shell und der Datei-Explorer zwei verschiedene Arten der Interaktion mit den Dateien sind, sind die Dateien und Verzeichnisse selbst gleich.

    Gute Namen für Dateien und Verzeichnisse

    Komplizierte Namen von Dateien und Verzeichnissen können Ihnen das Leben schmerzlich machenbei der Arbeit an der Befehlszeile. Hier stellen wir ein paar nützliche zur Verfügungtipps für die Namen Ihrer Dateien.

    1. Verwenden Sie keine Leerzeichen.

      Leerzeichen können einen Namen aussagekräftiger machen,aber da Leerzeichen verwendet werden, um Argumente in der Befehlszeile zu trennenes ist besser, sie in Namen von Dateien und Verzeichnissen zu vermeiden.Sie können stattdessen - oder _ verwenden (z. north-pacific-gyre/ statt north pacific gyre/).

    2. Beginnen Sie den Namen nicht mit - (Bindestrich).

      Befehle behandeln Namen, die mit - beginnen, als Optionen.

    3. Bleiben Sie bei Buchstaben, Zahlen, . (Punkt oder „Punkt“), - (Bindestrich) und _ (Unterstrich).

      Viele andere Zeichen haben in der Befehlszeile eine besondere Bedeutung.Einige davon werden wir in dieser Lektion lernen.Es gibt Sonderzeichen, die dazu führen können, dass Ihr Befehl nicht wie erwartet funktioniert und sogar zu Datenverlust führen kann.

    Wenn Sie auf Namen von Dateien oder Verzeichnissen verweisen müssen, die Leerzeichen oder andere Sonderzeichen enthalten, sollten Sie den Namen in Anführungszeichen setzen ("").

    Erstellen Sie eine Textdatei

    Ändern wir unser Arbeitsverzeichnis in thesis Verwenden Sie cdund führen Sie dann einen Texteditor namens Nano aus, um eine Datei mit dem Namen draft.txt:

    $ cd thesis$ nano draft.txt

    Welcher Editor?

    Wenn wir sagen, ‚nano ist ein Texteditor‘ meinen wir wirklich ‚Text‘: Es kann nur mit einfachen Zeichendaten arbeiten, nicht mit Tabellen, Bildern oder anderen menschenfreundlichen Medien. Wir verwenden es in Beispielen, weil es eines der istletzte komplexe Texteditoren. Aufgrund dieser Eigenschaft ist es jedoch möglicherweise nicht leistungsfähig genug oder flexibel genug für die Arbeit, die Sie nach diesem Workshop erledigen müssen. Auf Unix-Systemen (wie Linux und macOS)verwenden viele Programmierer Emacs odervim (beide benötigen mehr Zeit zum Lernen)oder einen grafischen Editor wiegedit. Unter Windows können Sie dies wünschenverwenden Sie Notepad ++. Windows hat auch einen eingebauten Editor namens notepad, der von der Befehlszeile auf die gleiche Weise wie nano für die Zwecke dieser Lektion ausgeführt werden kann.

    Egal welchen Editor Sie verwenden, Sie müssen wissen, wo er Dateien sucht und speichert. Wenn Sie es von der Shell aus starten, wird (wahrscheinlich) Ihr aktuelles Arbeitsverzeichnis als Standardspeicherort verwendet. Wenn Sie das Startmenü Ihres Computers verwenden, möchten Sie möglicherweise stattdessen Dateien in Ihrem Desktop- oder Dokumentenverzeichnis speichern. Sie können dies ändern, indem Sie zu einem anderen Verzeichnis navigieren, wenn Sie zum ersten Mal „Speichern unter …“

    Geben Sie ein paar Textzeilen ein.Sobald wir mit unserem Text zufrieden sind, können wir Strg + O drücken (Strg- oder Strg-Taste drücken und dabei die O-Taste drücken), um unsere Daten auf die Festplatte zu schreiben (wir werden gefragt, in welcher Datei wir diese speichern möchten: Drücken Sie die Eingabetaste, um den vorgeschlagenen Standardwert von draft.txt zu akzeptieren).

    Screenshot des Nano-Texteditors in Aktion

    Sobald unsere Datei gespeichert ist, können wir Strg + X verwenden, um den Editor zu beenden undzurück zur Shell.

    Strg-, Strg- oder ^ -Taste

    Die Strg-Taste wird auch als Strg-Taste bezeichnet. Es gibt verschiedene Möglichkeiten, wie die Verwendung der Steuertaste beschrieben werden kann. Sie können beispielsweise eine Anweisung zum Drücken der Steuertaste und zum Drücken der X-Taste bei gedrückter:

    • Control-X
    • Control+X
    • Ctrl-X
    • Ctrl+X
    • ^X
    • C-x

    In nano sehen Sie am unteren Bildschirmrand ^G Get Help ^O WriteOut.Dies bedeutet, dass Sie Control-G verwenden können, um Hilfe zu erhalten, und Control-O , um Ihre Datei zu speichern.

    nano hinterlässt nach dem Beenden keine Ausgabe auf dem Bildschirm, aber ls zeigt nun an, dass wir eine Datei namens draft.txt erstellt haben:

    $ ls
    draft.txt

    Erstellen von Dateien eine andere Art und Weise

    Wir haben gesehen, wie Textdateien mit dem nano herausgeber.Versuchen Sie nun den folgenden Befehl:

    $ touch my_file.txt
    1. Was hat der Befehl touch getan?Wenn Sie Ihr aktuelles Verzeichnis mit dem GUI-Datei-Explorer anzeigen, wird die Datei angezeigt?

    2. Verwenden Sie ls -l, um die Dateien zu überprüfen. Wie groß ist my_file.txt?

    3. Wann möchten Sie eine Datei auf diese Weise erstellen?

    Lösung

    1. Der Befehl touch generiert eine neue Datei mit dem Namen my_file.txt in Ihrem aktuellen Verzeichnis. Sie können diese neu generierte Datei beobachten, indem Sie ls an der Befehlszeilenaufforderung eingeben. my_file.txt kann auch im yourGUI-Datei-Explorer angezeigt werden.

    2. Wenn Sie die Datei mit ls -l überprüfen, beachten Sie, dass die Größe vonmy_file.txt 0 Byte beträgt. Mit anderen Worten, es enthält keine Daten.Wenn Sie my_file.txt mit Ihrem Texteditor öffnen, ist es leer.

    3. Einige Programme erzeugen keine Ausgabedateien selbst, sondern erfordern, dass bereits leere Dateien generiert wurden.Wenn das Programm ausgeführt wird, sucht es nach einer vorhandenen Datei, um sie mit ihrer Ausgabe zu füllen. Mit dem Touch-Befehl können Sie eine leere Textdatei effizient generieren, die von solchen Programmen verwendet werden soll.

    Was ist In einem Namen?

    Sie haben vielleicht bemerkt, dass alle Dateien von Nelle ’something dotsomething‘ heißen, und in diesem Teil der Lektion haben wir immer die Erweiterung.txt verwendet. Dies ist nur eine Konvention: Wir können eine Datei mythesis oderfast alles andere, was wir wollen. Die meisten Leute verwenden jedoch meistens zweiteilige Namen, um ihnen (und ihren Programmen) zu helfen, verschiedene Arten von Dateien voneinander zu unterscheiden. Der zweite Teil eines solchen Namens heißt Dasdateinamenerweiterung, und zeigt anwelche Art von Daten die Datei enthält: .txt signalisiert eine reine Textdatei, .pdfzeigt ein PDF-Dokument an, .cfg ist eine Konfigurationsdatei voller Parameterfür das eine oder andere Programm, .png ist ein PNG-Bild und so weiter.

    Dies ist nur eine Konvention, wenn auch eine wichtige. Dateien containbytes: es liegt an uns und unseren Programmen, diese Bytes gemäß den Regeln für Nur-Text-Dateien, PDF-Dokumente, Konfigurationsdateien, Bilder usw. zu interpretieren.

    Ein PNG-Bild eines Wals als whale.mp3 zu benennen, macht es nicht irgendwie magisch zu einer Aufnahme von Walgesang, obwohl es das Betriebssystem veranlassen könnte, es mit einem Musikplayer zu öffnen, wenn jemand darauf doppelklickt.

    Verschieben von Dateien und Verzeichnissen

    Rückkehr zum data-shell Verzeichnis,

    cd ~/Desktop/data-shell/

    In unserem thesis verzeichnis wir haben eine Datei draft.txtDas ist kein besonders informativer Name, also ändern wir den Namen der Datei mit mv, was kurz für „move“ ist:

    $ mv thesis/draft.txt thesis/quotes.txt

    Das erste Argument sagt mv was wir ‚bewegen‘,während die zweite ist, wohin es gehen soll.In diesem Fall verschieben wir thesis/draft.txt nach thesis/quotes.txt , was den gleichen Effekt wie das Umbenennen der Datei hat.Sicher genug,ls zeigt uns, dass thesis jetzt eine Datei mit dem Namen quotes.txt enthält:

    $ ls thesis
    quotes.txt

    Man muss bei der Angabe des Zieldateinamens vorsichtig sein, da mv jede vorhandene Datei mit demselben Namen silently überschreibt, was zu Datenverlust führen kann. Eine zusätzliche Option, mv -i (oder mv --interactive),kann verwendet werden, um mv vor dem Überschreiben um Bestätigung zu bitten.

    Beachten Sie, dass mv auch auf Verzeichnissen funktioniert.

    Verschieben wir quotes.txt in das aktuelle Arbeitsverzeichnis.Wir verwenden mv erneut, aber dieses Mal verwenden wir nur den Namen eines Verzeichnisses als zweites Argument, um mv mitzuteilen, dass wir den Dateinamen beibehalten, die Datei jedoch an einem neuen Ort ablegen möchten.(Deshalb heißt der Befehl ‚move‘.)In diesem Fall ist der Verzeichnisname, den wir verwenden, der spezielle Verzeichnisname ., den wir bereits erwähnt haben.

    $ mv thesis/quotes.txt .

    Der Effekt besteht darin, die Datei aus dem Verzeichnis, in dem sie sich befand, in das aktuelle Arbeitsverzeichnis zu verschieben.ls zeigt uns nun, dass thesis leer ist:

    $ ls thesis

    Des Weiteren listetls mit einem Dateinamen oder Verzeichnisnamen als Argument nur auf, dass datei oder Verzeichnis.Wir können dies verwenden, um zu sehen, dass quotes.txt noch in unserem aktuellen Verzeichnis ist:

    $ ls quotes.txt
    quotes.txt

    Dateien in einen neuen Ordner verschieben

    Nachdem Jamie die folgenden Befehle ausgeführt hat, stellt sie fest, dass sie die Dateien sucrose.dat und maltose.dat in den falschen Ordner gelegt hat. Die Dateien sollten im Ordner raw abgelegt worden sein.

    $ ls -F analyzed/ raw/$ ls -F analyzedfructose.dat glucose.dat maltose.dat sucrose.dat$ cd analyzed

    Füllen Sie die Lücken aus, um diese Dateien in den raw/ Ordner zu verschieben(dh in den, in den sie sie vergessen hat)

    $ mv sucrose.dat maltose.dat ____/____

    Lösung

    $ mv sucrose.dat maltose.dat ../raw

    Denken Sie daran, dass .. sich auf das übergeordnete Verzeichnis bezieht (dh auf eines über dem aktuellen Verzeichnis)und dass . verweist auf das aktuelle Verzeichnis.

    Kopieren von Dateien und Verzeichnissen

    Der Befehl cp funktioniert sehr ähnlich wie mv, außer dass er eine Datei kopiert, anstatt sie zu verschieben.Wir können überprüfen, ob es das Richtige getan hat, indem wir lsmit zwei Pfaden als Argumente verwenden – wie die meisten Unix-Befehlels können mehrere Pfade gleichzeitig angegeben werden:

    $ cp quotes.txt thesis/quotations.txt$ ls quotes.txt thesis/quotations.txt
    quotes.txt thesis/quotations.txt

    Wir können auch ein Verzeichnis und seinen gesamten Inhalt kopieren, indem wir dierecursive Option -r,zB um ein Verzeichnis zu sichern:

    $ cp -r thesis thesis_backup

    Wir können das Ergebnis überprüfen, indem wir den Inhalt des Verzeichnisses thesis und thesis_backup auflisten:

    $ ls thesis thesis_backup
    thesis:quotations.txtthesis_backup:quotations.txt

    Umbenennen von Dateien

    Angenommen, Sie haben in Ihrem aktuellen Verzeichnis eine Nur-Text-Datei erstellt, die eine Liste von den statistischen Tests, die Sie durchführen müssen, um Ihre Daten zu analysieren, und nannte sie: statstics.txt

    Nachdem Sie diese Datei erstellt und gespeichert haben, stellen Sie fest, dass Sie den Dateinamen falsch geschrieben haben! Sie möchten den Fehler korrigieren, welchen der folgenden Befehle könnten Sie dazu verwenden?

    1. cp statstics.txt statistics.txt
    2. mv statstics.txt statistics.txt
    3. mv statstics.txt .
    4. cp statstics.txt .

    Lösung

    1. Nein. Während dies eine Datei mit dem richtigen Namen erstellen würde, existiert die falsch benannte Datei immer noch im Verzeichnis und müsste gelöscht werden.
    2. Ja, das würde funktionieren, um die Datei umzubenennen.
    3. Nein, die Periode(.) gibt an, wohin die Datei verschoben werden soll, gibt jedoch keinen neuen Dateinamen an.
    4. Nein, die Periode(.) gibt an, wohin die Datei kopiert werden soll, gibt jedoch keinen neuen Dateinamen an.

    Verschieben und Kopieren

    Was ist die Ausgabe des Befehls closing ls in der unten gezeigten Reihenfolge?

    $ pwd
    /Users/jamie/data
    $ ls
    proteins.dat
    $ mkdir recombined$ mv proteins.dat recombined/$ cp recombined/proteins.dat ../proteins-saved.dat$ ls
    1. proteins-saved.dat recombined
    2. recombined
    3. proteins.dat recombined
    4. proteins-saved.dat

    Solution

    We start in the /Users/jamie/data directory, and create a new folder called recombined.Die zweite Zeile verschiebt (mv) die Datei proteins.dat in den neuen Ordner (recombined).Die dritte Zeile erstellt eine Kopie der Datei, die wir gerade verschoben haben. Der schwierige Teil hier ist, wo die Datei warkopiert zu. Denken Sie daran, dass .. „eine Ebene höher gehen“ bedeutet, sodass sich die kopierte Datei jetzt in /Users/jamie .Beachten Sie, dass .. in Bezug auf das aktuelle Arbeitsverzeichnis interpretiert wird, nicht in Bezug auf den Speicherort der zu kopierenden Datei.Das einzige, was mit ls (in /Users/jamie/data ) angezeigt wird, ist der rekombinierte Ordner.

    1. Nein, siehe Erklärung oben. proteins-saved.dat befindet sich unter /Users/jamie
    2. Ja
    3. Nein, siehe Erklärung oben. proteins.dat befindet sich unter /Users/jamie/data/recombined
    4. Nein, siehe Erklärung oben. proteins-saved.dat befindet sich unter /Users/jamie

    Entfernen von Dateien und Verzeichnissen

    Rückkehr zum data-shell Verzeichnis,lassen Sie uns dieses Verzeichnis aufräumen, indem wir die quotes.txt Datei entfernen, die wir erstellt haben.Der Unix-Befehl, den wir dafür verwenden, ist rm (kurz für „remove“):

    $ rm quotes.txt

    Wir können bestätigen, dass die Datei verschwunden ist, indem wir ls:

    $ ls quotes.txt
    ls: cannot access 'quotes.txt': No such file or directory

    Löschen ist für immer

    Die Unix-Shell hat keinen Papierkorb, den wir wiederherstellen können deletedfiles von (obwohl die meisten grafischen Schnittstellen zu Unix tun). Wenn wir stattdessen Dateien löschen, werden sie aus dem Dateisystem entfernt, sodass Ihr Speicherplatz auf der Festplatte recycelt werden kann. Es gibt zwar Tools zum Auffinden und Wiederherstellen gelöschter Dateien, aber es gibt keine Garantie dafür, dass sie in einer bestimmten Situation funktionieren, da der Computer den Speicherplatz der Datei möglicherweise sofort recycelt.

    rm sicher verwenden

    Was passiert, wenn wir rm -i thesis_backup/quotations.txt ausführen?Warum sollten wir diesen Schutz wünschen, wenn wir rm ?

    Lösung

    $ rm: remove regular file 'thesis_backup/quotations.txt'? y

    Die Option -i wird vor (jedem) Entfernen angezeigt (verwenden Sie Y, um das Löschen zu bestätigen, oder N, um die Datei zu behalten).Die Unix-Shell hat keinen Papierkorb, sodass alle entfernten Dateien verschwinden forever.By mit der Option -i können wir überprüfen, ob wir nur die Dateien löschen, die wir entfernen möchten.

    Wenn wir versuchen, das thesis Verzeichnis mit rm thesis zu entfernen,erhalten wir eine Fehlermeldung:

    $ rm thesis
    rm: cannot remove `thesis': Is a directory

    Dies geschieht, weil rm standardmäßig nur für Dateien und nicht für Verzeichnisse funktioniert.

    rm kann ein Verzeichnis und seinen gesamten Inhalt entfernen, wenn wir dierecursive Option -r , und dies ohne Bestätigungsaufforderungen:

    $ rm -r thesis

    Da es keine Möglichkeit gibt, gelöschte Dateien über die Shell abzurufen, sollterm -r mit großer Vorsicht verwendet werden (Sie können die interaktive Option rm -r -i hinzufügen).

    Operationen mit mehreren Dateien und Verzeichnissen

    Oft muss man mehrere Dateien gleichzeitig kopieren oder verschieben. Dies kann durch Bereitstellen einer Liste einzelner Dateinamen oder Angeben eines Benennungsmusters mithilfe von Platzhaltern erfolgen.

    Kopieren mit mehreren Dateinamen

    Für diese Übung können Sie die Befehle im data-shell/data Verzeichnis testen.

    Was macht cpIm folgenden Beispiel, wenn mehrere Dateinamen und ein Verzeichnisname angegeben werden?

    $ mkdir backup$ cp amino-acids.txt animals.txt backup/

    Was macht cpIm folgenden Beispiel, wenn drei oder mehr Dateinamen angegeben werden?

    $ ls -F

    amino-acids.txt animals.txt backup/ elements/ morse.txt pdb/ planets.txt salmon.txt sunspot.txt
    $ cp amino-acids.txt animals.txt morse.txt

    Lösung

    Wenn mehr als ein Dateiname gefolgt von einem Verzeichnisnamen angegeben wird (dh das Zielverzeichnis muss das letzte Argument sein), cp kopiert die Dateien in das benannte Verzeichnis.

    Wenn drei Dateinamen angegeben werden, cp wirft einen Fehler wie den folgenden aus, da ein directoryname als letztes Argument erwartet wird.

    cp: target ‘morse.txt’ is not a directory

    Using wildcards for accessing multiple files at once

    Wildcards

    * is a wildcard, which matches zero or more characters.Let’s consider the data-shell/molecules directory:*.pdb matches ethane.pdbpropane.pdb, and everyfile that ends with ‘.pdb’. Andererseits stimmt p*.pdb nur mitpentane.pdb und propane.pdb überein, da das ‚p‘ vorne nur Dateinamen übereinstimmt, die mit dem Buchstaben ‚p‘ beginnen.

    ? ist auch ein Platzhalter, aber er entspricht genau einem character.So ?ethane.pdb würde mit methane.pdb übereinstimmen, während*ethane.pdb sowohl mit ethane.pdb als auch mit methane.pdb übereinstimmt.

    Platzhalter können in Kombination miteinander verwendet werden.g. ???ane.pdb entspricht drei Zeichen gefolgt von ane.pdb,was cubane.pdb ethane.pdb octane.pdb ergibt.

    Wenn die Shell einen Platzhalter sieht, erweitert sie den Platzhalter, um eine Liste übereinstimmender Dateinamen zu erstellen, bevor sie den Befehl ausführen, nach dem sie gefragt haben. Wenn ein Platzhalterausdruck ausnahmsweise nicht mit einer Datei übereinstimmt, übergibt Bash den Ausdruck als Argument an den Befehl, wie er ist. Wenn Sie beispielsweise ls *.pdf in das Verzeichnis molecules eingeben(das nur Dateien enthält, deren Namen mit .pdb enden), wird eine Fehlermeldung angezeigt, dass keine Datei mit dem Namen *.pdf .Im Allgemeinen sehen Befehle wie wc und ls jedoch die Listen der Dateinamen, die diesen Ausdrücken entsprechen, aber nicht die Platzhalter selbst. Es ist die Shell, nicht die anderen Programme, die sich damit beschäftigenerweiternde Platzhalter, und dies ist ein weiteres Beispiel für orthogonales Design.

    Dateinamen auflisten, die einem Muster entsprechen

    Welcher ls Befehl(e) erzeugt diese Ausgabe, wenn er im molecules Verzeichnis ausgeführt wird?

    ethane.pdb methane.pdb

    1. ls *t*ane.pdb
    2. ls *t?ne.*
    3. ls *t??ne.pdb
    4. ls ethane.*

    Solution

    The solution is

    shows all files whose names contain zero or more characters (*) followed by the letter t, then zero or more characters (*) followed by ane.pdb. Dies ergibt ethane.pdb methane.pdb octane.pdb pentane.pdb .

    zeigt alle Dateien an, deren Namen mit null oder mehr Zeichen beginnen (*), gefolgt vom Buchstaben t, dann einem einzelnen Zeichen (?), dann ne. gefolgt von null oder mehr Zeichen (*). Dies gibt uns octane.pdb und pentane.pdb aber stimmt nicht mit irgendetwas überein, das in thane.pdb endet.

    behebt die Probleme von Option 2, indem zwei Zeichen (??) zwischen t und ne abgeglichen werden. Das ist die Lösung.

    zeigt nur Dateien an, die mit ethane. beginnen.

    Mehr zu Platzhaltern

    Sam verfügt über ein Verzeichnis mit Kalibrierungsdaten, Datensätzen und Beschreibungen der Datensätze:

    .├── 2015-10-23-calibration.txt├── 2015-10-23-dataset1.txt├── 2015-10-23-dataset2.txt├── 2015-10-23-dataset_overview.txt├── 2015-10-26-calibration.txt├── 2015-10-26-dataset1.txt├── 2015-10-26-dataset2.txt├── 2015-10-26-dataset_overview.txt├── 2015-11-23-calibration.txt├── 2015-11-23-dataset1.txt├── 2015-11-23-dataset2.txt├── 2015-11-23-dataset_overview.txt├── backup│ ├── calibration│ └── datasets└── send_to_bob ├── all_datasets_created_on_a_23rd └── all_november_files

    Bevor sie zu einer weiteren Exkursion aufbricht, möchte sie ihre Daten sichern und einige Datensätze an ihren Kollegen Bob senden. Sam benutzt die folgenden Kommandos, um die Arbeit zu erledigen:

    $ cp *dataset* backup/datasets$ cp ____calibration____ backup/calibration$ cp 2015-____-____ send_to_bob/all_november_files/$ cp ____ send_to_bob/all_datasets_created_on_a_23rd/

    Hilf Sam, indem du die Lücken ausfüllst.

    Die resultierende Verzeichnisstruktur sollte so aussehen

    .├── 2015-10-23-calibration.txt├── 2015-10-23-dataset1.txt├── 2015-10-23-dataset2.txt├── 2015-10-23-dataset_overview.txt├── 2015-10-26-calibration.txt├── 2015-10-26-dataset1.txt├── 2015-10-26-dataset2.txt├── 2015-10-26-dataset_overview.txt├── 2015-11-23-calibration.txt├── 2015-11-23-dataset1.txt├── 2015-11-23-dataset2.txt├── 2015-11-23-dataset_overview.txt├── backup│ ├── calibration│ │ ├── 2015-10-23-calibration.txt│ │ ├── 2015-10-26-calibration.txt│ │ └── 2015-11-23-calibration.txt│ └── datasets│ ├── 2015-10-23-dataset1.txt│ ├── 2015-10-23-dataset2.txt│ ├── 2015-10-23-dataset_overview.txt│ ├── 2015-10-26-dataset1.txt│ ├── 2015-10-26-dataset2.txt│ ├── 2015-10-26-dataset_overview.txt│ ├── 2015-11-23-dataset1.txt│ ├── 2015-11-23-dataset2.txt│ └── 2015-11-23-dataset_overview.txt└── send_to_bob ├── all_datasets_created_on_a_23rd │ ├── 2015-10-23-dataset1.txt │ ├── 2015-10-23-dataset2.txt │ ├── 2015-10-23-dataset_overview.txt │ ├── 2015-11-23-dataset1.txt │ ├── 2015-11-23-dataset2.txt │ └── 2015-11-23-dataset_overview.txt └── all_november_files ├── 2015-11-23-calibration.txt ├── 2015-11-23-dataset1.txt ├── 2015-11-23-dataset2.txt └── 2015-11-23-dataset_overview.txt

    Lösung

    $ cp *calibration.txt backup/calibration$ cp 2015-11-* send_to_bob/all_november_files/$ cp *-23-dataset* send_to_bob/all_datasets_created_on_a_23rd/

    Verzeichnisse und Dateien organisieren

    Jamie arbeitet an einem Projekt und sieht, dass ihre Dateien nicht sehr gut organisiert sind:

    $ ls -F
    analyzed/ fructose.dat raw/ sucrose.dat

    Die fructose.dat und sucrose.dat Dateien enthalten Ausgaben ihrer Datenanalyse. Welche Befehle, die in dieser Lektion behandelt werden, muss sie ausführen, damit die folgenden Befehle die gezeigte Ausgabe erzeugen?

    $ ls -F
    analyzed/ raw/
    $ ls analyzed
    fructose.dat sucrose.dat

    Solution

    mv *.dat analyzed

    Jamie needs to move her files fructose.dat and sucrose.dat to the analyzed directory.The shell will expand *.dat to match all .dat files in the current directory.The mv command then moves the list of .dat-Dateien in das Verzeichnis ‚analyzed‘.

    Eine Ordnerstruktur reproduzieren

    Sie starten ein neues Experiment und möchten die Verzeichnisstruktur Ihres vorherigen Experiments duplizieren, um neue Daten hinzuzufügen.

    Angenommen, das vorherige Experiment befindet sich in einem Ordner mit dem Namen ‚2016-05-18‘, der einen data Ordner enthält, der wiederum Ordner mit dem Namen raw undprocessed enthält, die Datendateien enthalten. Ziel ist es, die Ordnerstruktur des Ordners 2016-05-18-data in einen Ordner mit dem Namen 2016-05-20zu kopieren, sodass Ihre endgültige Verzeichnisstruktur folgendermaßen aussieht:

    2016-05-20/└── data ├── processed └── raw

    Welcher der folgenden Befehle würde dieses Ziel erreichen?Was würden die anderen Befehle tun?

    $ mkdir 2016-05-20$ mkdir 2016-05-20/data$ mkdir 2016-05-20/data/processed$ mkdir 2016-05-20/data/raw
    $ mkdir 2016-05-20$ cd 2016-05-20$ mkdir data$ cd data$ mkdir raw processed
    $ mkdir 2016-05-20/data/raw$ mkdir 2016-05-20/data/processed
    $ mkdir -p 2016-05-20/data/raw$ mkdir -p 2016-05-20/data/processed
    $ mkdir 2016-05-20$ cd 2016-05-20$ mkdir data$ mkdir raw processed

    Lösung

    Die ersten beiden Befehlssätze erreichen dieses Ziel.Der erste Satz verwendet relative Pfade, um das Verzeichnis der obersten Ebene vor den Unterverzeichnissen zu erstellen.

    Der dritte Befehlssatz gibt einen Fehler aus, da das Standardverhalten von mkdir kein Unterverzeichnis eines nicht vorhandenen Verzeichnisses erstellt: Die Ordner der mittleren Ebene müssen zuerst erstellt werden.

    Der vierte Befehlssatz erreicht dieses Ziel. Denken Sie daran, dass die Option -p, gefolgt von einem Pfad mit einem oder mehreren Verzeichnissen, mkdir veranlasst, nach Bedarf alle Zwischenunterverzeichnisse zu erstellen.

    Der letzte Befehlssatz generiert die Verzeichnisse ‚raw‘ und ‚processed‘ auf derselben Ebene wie das Verzeichnis ‚data‘.

    Wichtige Punkte

    • cp kopiert eine Datei.

    • mkdir erstellt ein neues Verzeichnis.

    • mv verschiebt (benennt) eine Datei oder ein Verzeichnis um.

    • rm entfernt (löscht) eine Datei.

    • * entspricht null oder mehr Zeichen in einem Dateinamen, also *.txt entspricht allen Dateien, die auf .txt enden.

    • ? entspricht jedem einzelnen Zeichen in einem Dateinamen, also ?.txt entspricht a.txt aber nicht any.txt.

    • Die Verwendung der Steuertaste kann auf viele Arten beschrieben werden, einschließlich Ctrl-XControl-X und ^X.

    • Die Shell hat keinen Papierkorb: sobald etwas gelöscht wird, ist es wirklich weg.

    • Die meisten Dateinamen sind something.extension. Die Erweiterung ist nicht erforderlich und garantiert nichts, wird aber normalerweise verwendet, um den Datentyp in der Datei anzugeben.

    • Abhängig von der Art der Arbeit, die Sie ausführen, benötigen Sie möglicherweise einen leistungsfähigeren Texteditor als Nano.