Articles

werken met bestanden en mappen

overzicht

onderwijs: 30 min
oefeningen: 20 min
vragen

  • Hoe kan ik bestanden en mappen aanmaken, kopiëren en verwijderen?

  • Hoe kan ik bestanden bewerken?

Objectives

  • Maak een mappenhiërarchie die overeenkomt met een gegeven diagram.

  • maak bestanden in die hiërarchie aan met behulp van een editor of door bestaande bestanden te kopiëren en te hernoemen.

  • verwijder, kopieer en verplaats gespecificeerde bestanden en / of mappen.

mappen aanmaken

we weten nu hoe we bestanden en mappen moeten verkennen,maar hoe maken we ze in de eerste plaats?

stap één: zie waar we zijn en wat we al hebben

laten we teruggaan naar onzedata-shell map op het bureaublad en gebruik ls -F om te zien wat het bevat:

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

Maak een directory

we maken een nieuwe map met de naam thesis met gebruik van het commando mkdir thesis(die heeft geen uitgang):

$ mkdir thesis

Zoals je kunt raden van de naam, demkdir betekent ‘mark directory’.Aangezien thesis het relatieve pad is (d.w.z. niet met een schuine streep, zoals /what/ever/thesis),de nieuwe map wordt gemaakt in de huidige werkmap:

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

Aangezien we net hebben gemaakt van de thesis map er is niets in het nog:

$ ls -F thesis

Merk op dat mkdir is niet beperkt tot het maken van enkele mappen één voor één aan. De -p optie staat mkdir toe om een map te maken met een willekeurig aantal geneste submappen in een enkele operatie:

$ mkdir -p thesis/chapter_1/section_1/subsection_1

De -Roptie voor het lscommando zal alle geneste submappen in een map tonen. Laten we ls -FR gebruiken om recursief een lijst te maken van de nieuwe mappenhiërarchie die we zojuist hebben aangemaakt onder de thesis map:

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

twee manieren om hetzelfde te doen

het gebruik van de shell om een map aan te maken is niet anders dan het gebruik van een bestandsverkenner.Als u de huidige map opent met behulp van de grafische bestandsverkenner van uw besturingssysteem,zal de map thesis ook daar verschijnen.Terwijl de shell en de file explorer zijn twee verschillende manieren van interactie met de bestanden,de bestanden en mappen zelf zijn hetzelfde.

goede namen voor bestanden en mappen

gecompliceerde namen van bestanden en mappen kunnen uw leven pijnlijk maken als u op de opdrachtregel werkt. Hier bieden we een paar nuttige tips voor de namen van uw bestanden.

  1. gebruik geen spaties.

    spaties kunnen een naam betekenisvoller maken, maar aangezien spaties worden gebruikt om argumenten te scheiden op het commando, is lineit beter om ze te vermijden in namen van bestanden en mappen.U kunt - of _ in plaats daarvan gebruiken (bijv. north-pacific-gyre/ in plaats van north pacific gyre/).

  2. begin de naam niet met - (streepje).

    opdrachten behandelen Namen die beginnen met - Als opties.

  3. vasthouden aan letters, cijfers, . (periode of ‘volledige stop’), - (streepje) en _ (underscore).

    veel andere karakters hebben speciale betekenissen op de commandoregel.We zullen hier enkele van leren tijdens deze les.Er zijn speciale tekens die ervoor kunnen zorgen dat uw opdracht niet werkt zoals verwacht en kan zelfs leiden tot verlies van gegevens.

als u wilt verwijzen naar namen van bestanden of mappen met spaties of andere speciale tekens, moet u de naam tussen aanhalingstekens plaatsen ("").

Maak een tekstbestand

wijzig onze werkmap naar thesis gebruikmakend van cd,voer dan een teksteditor genaamd Nano uit om een bestand genaamd draft.txt aan te maken:

$ cd thesis$ nano draft.txt

welke Editor?

als we zeggen, ‘nano is een teksteditor’ bedoelen we echt ’tekst’: het kan alleen werken met gewone tekengegevens, niet met tabellen, afbeeldingen of andere mensvriendelijke media. We gebruiken het in voorbeelden omdat het een van de minst complexe tekstverwerkers is. Vanwege deze eigenschap kan het echter niet krachtig genoeg of flexibel genoeg zijn voor het werk dat u na deze workshop moet doen. Op Unix systemen (zoals Linux en macOS) gebruiken veel programmeurs Emacs orVim (die beide meer tijd nodig hebben om te leren), of een grafische editor zoals gedit. Op Windows, kunt u wensen touse Notepad++. Windows heeft ook een ingebouwde editor genaamd notepad die kan worden uitgevoerd vanaf de commandoregel op dezelfde manier als nano voor de doeleinden van deze les.

Het maakt niet uit welke editor je gebruikt, je moet weten waar het naar bestanden zoekt en opslaat. Als je het start vanuit de shell, zal het (waarschijnlijk)je huidige werk directory gebruiken als zijn standaard locatie. Als u het startmenu van uw computer gebruikt, wilt u in plaats daarvan bestanden opslaan in de map desktop ordocuments. U kunt dit wijzigen door naar een andere map te navigeren de eerste keer dat u ‘opslaat als…’

laten we een paar regels tekst typen.Zodra we tevreden zijn met onze tekst, kunnen we op Ctrl+O drukken(druk op de Ctrl of Control-toets en druk, terwijl we het vasthouden, op de O-toets) om onze gegevens naar de schijf te schrijven(we zullen gevraagd worden in welk bestand we dit willen opslaan:druk op Return om de voorgestelde standaardwaarde van draft.txtte accepteren).

screenshot van nano teksteditor in actie

zodra ons bestand is opgeslagen, kunnen we Ctrl+X gebruiken om de editor te verlaten en naar de shell te gaan.

Control, Ctrl, or ^ Key

De Control key wordt ook wel de ‘Ctrl’ sleutel genoemd. Er zijn verschillende manieren waarop het gebruik van de bedieningssleutel kan worden beschreven. U kunt bijvoorbeeld een instructie zien om op de Control-toets te drukken en, terwijl u deze ingedrukt houdt, op de X-toets drukken, beschreven als een van de:

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

In de nano, langs de onderkant van het scherm ziet u ^G Get Help ^O WriteOut.Dit betekent dat u Control-G kunt gebruiken om hulp te krijgen en Control-O om uw bestand op te slaan.

nano laat geen uitvoer op het scherm nadat het uit,maar ls nu blijkt dat hebben we een bestand met de naam draft.txt:

$ ls
draft.txt

het Maken van Bestanden een Andere Manier

We hebben gezien hoe tekstbestanden maken met behulp van de nano editor.Probeer nu het volgende commando:

$ touch my_file.txt
  1. wat deed de opdracht touch?Als je naar je huidige map kijkt met behulp van de GUI file explorer,wordt het bestand dan weergegeven?

  2. gebruik ls -l om de bestanden te inspecteren. Hoe groot is my_file.txt?

  3. Wanneer wilt u een bestand op deze manier aanmaken?

oplossing

  1. het commando touch genereert een nieuw bestand met de naam my_file.txt in uw huidige map. U kunt dit nieuw gegenereerde bestand observeren door ls op de opdrachtregelprompt te typen. my_file.txt kan ook worden bekeken in uw GUI bestandsverkenner.

  2. wanneer u het bestand inspecteert met ls -l, merk op dat de grootte vanmy_file.txt 0 bytes is. Met andere woorden, het bevat geen gegevens.Als u my_file.txt opent met uw teksteditor is deze leeg.

  3. sommige programma ‘ s genereren zelf geen uitvoerbestanden, maar vereisen dat lege bestanden al zijn gegenereerd.Wanneer het programma wordt uitgevoerd, zoekt het naar een bestaand bestand toppopulate met zijn uitvoer. Met de touch-opdracht kunt u efficiënt een leeg tekstbestand genereren dat door dergelijke programma ‘ s kan worden gebruikt.

Wat zit er in een naam?

u hebt misschien gemerkt dat alle bestanden Van Nelle ‘something dotsomething’ heten, en in dit deel van de les hebben we altijd de extensie.txtgebruikt. Dit is gewoon een conventie: we kunnen een bestand mythesis aanroepen of bijna alles wat we willen. De meeste mensen gebruiken echter meestal tweedelige namen om hen (en hun programma ‘ s) te helpen verschillende soorten bestanden uit elkaar te houden. Het tweede deel van zo ‘ n naam wordt de bestandsnaamextensie genoemd, en geeft aan welk type gegevens het bestand bevat: .txt geeft een platte tekstbestand aan, .pdfgeeft een PDF-document aan, .cfg is een configuratiebestand vol parametersvoor een of ander programma, .png is een PNG-afbeelding, enzovoort.

Dit is slechts een conventie, zij het een belangrijke. Bestanden bevatten bytes: het is aan ons en onze programma ‘ s om deze bytes te interpreteren volgens de regels voor platte tekstbestanden, PDF-documenten, configuratiebestanden, afbeeldingen, enzovoort.

het benoemen van een PNG-afbeelding van een walvis als whale.mp3 verandert het niet op een of andere manier in een opname van whalesong, hoewel het mogelijk is dat het besturingssysteem het probeert te openen met een muziekspeler wanneer iemand er dubbel op klikt.

bestanden en mappen Verplaatsen

Terug naar de data-shell directory,

cd ~/Desktop/data-shell/

In de thesis directory wij hebben een bestand draft.txtdat is niet een bijzonder informatief naam,dus we veranderen de naam van het bestand met behulp van mv,die afkorting staat voor ‘bewegen’:

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

Het eerste argument vertelt mv wat wij ‘verplaatsen’,terwijl de tweede is waar het om gaat.In dit geval verplaatsen we thesis/draft.txt naar thesis/quotes.txt, wat hetzelfde effect heeft als het bestand hernoemen.Zeker genoeg,ls laat ons zien dat thesis bevat nu een bestand met de naam quotes.txt:

$ ls thesis
quotes.txt

Men dient voorzichtig te zijn bij het opgeven van het doel-bestand, sinds mv willsilently bestaand bestand overschrijven met dezelfde naam, die couldlead tot verlies van gegevens. Een extra optie, mv -i (of mv --interactive),kan worden gebruikt om mv u om bevestiging te vragen voordat u het overschrijft.

merk op datmv ook werkt op mappen.

laten we quotes.txt verplaatsen naar de huidige werkmap.We gebruiken mv nogmaals,maar deze keer gebruiken we alleen de naam van een map als tweede argument om mv te vertellen dat we de bestandsnaam willen behouden,maar het bestand ergens nieuw willen plaatsen.(Dit is de reden waarom het commando ‘move’wordt genoemd.) In dit geval is de directorynaam die we gebruiken de speciale directorynaam . die we eerder hebben genoemd.

$ mv thesis/quotes.txt .

het effect is om het bestand te verplaatsen van de map waarin het zich bevond naar de huidige werkmap.ls toont ons nu dat thesis leeg is:

$ ls thesis

verder,lsmet een bestandsnaam of mapnaam als een argument geeft alleen dat bestand of die map weer.Wij kunnen dit gebruiken om te zien dat quotes.txt is nog steeds in onze huidige directory:

$ ls quotes.txt
quotes.txt

het Verplaatsen van Bestanden naar een nieuwe map

Na het uitvoeren van de volgende commando ‘ s,Jamie beseft dat ze de bestanden sucrose.dat en maltose.dat in de verkeerde map. De bestanden hadden in de raw map moeten staan.

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

Vul in de lege velden te verplaatsen van deze bestanden op de raw/ map(d.w.z. degene die ze vergeten om ze in)

$ mv sucrose.dat maltose.dat ____/____

Oplossing

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

Herinneren dat .. verwijst naar de bovenliggende map (dat wil zeggen, één boven de huidige directory)en dat . verwijst naar de huidige directory.

kopiëren van bestanden en mappen

het cp commando werkt erg als mv,behalve dat het een bestand kopieert in plaats van het te verplaatsen.We kunnen controleren of het de juiste beslissing heeft genomen met lsmet twee paden als argumenten – zoals de meeste Unix commando ‘s, kanls meerdere paden tegelijk worden gegeven:

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

We kunnen ook het kopiëren van een map en alle inhoud wordt door het gebruik van therecursive optie -r,bijvoorbeeld om een back-up van een map:

$ cp -r thesis thesis_backup

Wij kunnen het resultaat controleren door een opsomming van de inhoud van de thesis en thesis_backup directory:

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

Hernoemen van Bestanden

Stel dat u een normaal-tekst-bestand in de huidige map bevat een lijst van thestatistical tests die u moet doen om uw gegevens te analyseren, en noemde het: statstics.txt

Na het maken en opslaan van dit bestand besef je dat je verkeerd gespelde de bestandsnaam! U wilt de fout corrigeren, welke van de volgende commando ‘ s kunt u gebruiken om dit te doen?

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

Oplossing

  1. Geen. Hoewel dit een bestand met de juiste naam zou maken, bestaat het onjuist benoemde bestand nog steeds in de directoryand moet worden verwijderd.
  2. ja, dit zou werken om het bestand te hernoemen.
  3. Nee, de periode(.) geeft aan waar het bestand moet worden verplaatst, maar geeft geen nieuwe bestandsnaam op; identieke bestandsnamen kunnen niet worden aangemaakt.
  4. Nee, de periode(.) geeft aan waar het bestand moet worden gekopieerd, maar geeft geen nieuwe bestandsnaam op; identieke bestandsnamen kunnen niet worden aangemaakt.

verplaatsen en kopiëren

Wat is de uitvoer van het afsluitende ls commando in de onderstaande volgorde?

$ 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.De tweede regel verplaatst (mv) het bestand proteins.dat naar de nieuwe map (recombined).De derde regel maakt een kopie van het bestand dat we net verplaatst hebben. Het lastige deel hier is waar het bestand naar werd gekopieerd. Bedenk dat .. betekent ‘ga een niveau omhoog’, dus het gekopieerde bestand staat nu in /Users/jamie.Merk op dat .. wordt geïnterpreteerd met betrekking tot de huidige werkmap, niet met betrekking tot de locatie van het bestand dat wordt gekopieerd.Dus het enige dat getoond wordt met ls (in /Users/jamie/data) is de gerecombineerde map.

  1. Nee, zie uitleg hierboven. proteins-saved.dat bevindt zich op /Users/jamie
  2. ja
  3. Nee, zie uitleg hierboven. proteins.dat bevindt zich op /Users/jamie/data/recombined
  4. Nee, zie uitleg hierboven. proteins-saved.dat bevindt zich op /Users/jamie

verwijderen van bestanden en mappen

terugkeren naar de data-shell map,laten we deze map opruimen door het quotes.txt bestand te verwijderen dat we aangemaakt hebben.Het Unix commando dat we hiervoor gebruiken is rm (kort voor ‘remove’):

$ rm quotes.txt

We kunnen bevestigen dat het bestand is verdwenen met ls:

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

verwijderen Is Forever

De Unix-shell heeft geen prullenbak die we kunnen verwijderde bestanden herstellen van (hoewel de meeste grafische interfaces naar Unix dat wel doen). In plaats daarvan, wanneer we Bestanden verwijderen, worden ze losgekoppeld van het bestandssysteem, zodat hun opslagruimte op de schijf kan worden gerecycled. Hulpmiddelen voor het vinden en herstellen van verwijderde bestanden bestaan, maar er is geen garantie dat ze werken in een bepaalde situatie, omdat de computer de schijfruimte van het bestand meteen kan recyclen.

RM veilig gebruiken

Wat gebeurt er als we rm -i thesis_backup/quotations.txtuitvoeren?Waarom zouden we deze bescherming willen als we rmgebruiken?

oplossing

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

de optie -izal vragen voor (elke) verwijdering (gebruik Y om verwijdering te bevestigen of N om het bestand te behouden).De Unix shell heeft geen prullenbak, dus alle verwijderde bestanden zullen verdwijnen forever.By met behulp van de -i optie, hebben we de kans om te controleren of we alleen de bestanden verwijderen die we willen verwijderen.

Als we proberen het te verwijderen thesis map rm thesis,krijgen we een foutmelding:

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

Dit komt omdat rm standaard werkt alleen op bestanden, mappen niet.

rm kan een map en alle inhoud ervan verwijderen als we de beveiligde optie gebruiken -r, en het zal dit doen zonder enige bevestiging:

$ rm -r thesis

aangezien er geen manier is om verwijderde bestanden op te halen met behulp van de shell, moet rm -rmet grote voorzichtigheid worden gebruikt (u kunt overwegen de interactieve optierm -r -itoe te voegen).

bewerkingen met meerdere bestanden en mappen

vaak moet men meerdere bestanden tegelijk kopiëren of verplaatsen. Dit kan gedaan worden door een lijst met individuele bestandsnamen op te geven, of door een naampatroon op te geven met jokertekens.

kopiëren met meerdere bestandsnamen

voor deze oefening kunt u de commando ‘ s testen in de data-shell/data map.

in het voorbeeld hieronder, wat doet cp als er meerdere bestandsnamen en een mapnaam gegeven worden?

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

in het voorbeeld hieronder, wat doet cp als er drie of meer bestandsnamen worden gegeven?

$ 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

oplossing

als er meer dan één bestandsnaam wordt gegeven gevolgd door een mapnaam (de doelmap moet het laatste argument zijn), kopieertcpde bestanden naar de genoemde map.

indien gegeven drie bestandsnamen,cp gooit een fout zoals de onderstaande, omdat het verwacht een directoryname als het laatste argument.

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’. Aan de andere kant komt p*.pdb alleen overeen metpentane.pdb en propane.pdb, omdat de ‘p’ aan de voorkant alleen bestandsnamen koppelt die beginnen met de letter ‘p’.

? is ook een Joker, maar het komt precies overeen met één character.So ?ethane.pdb zou overeenkomen met methane.pdb terwijl*ethane.pdb overeenkomt met zowel ethane.pdb, en methane.pdb.

jokertekens kunnen in combinatie met elkaar worden gebruikt.g. ???ane.pdb komt overeen met drie tekens gevolgd door ane.pdb,wat cubane.pdb ethane.pdb octane.pdbgeeft.

wanneer de shell een jokerteken ziet, wordt het jokerteken uitgevouwen om een lijst van overeenkomende bestandsnamen aan te maken voordat het commando wordt uitgevoerd waarnaar werd gevraagd. Als uitzondering, als een wildcard expressie niet matchany bestand, Bash zal de expressie door te geven als een argument aan de commando ‘ s als het is. Bijvoorbeeld het typen van ls *.pdf in de molecules map(die alleen bestanden bevat met namen eindigend op .pdb) resulteert in een foutmelding dat er geen bestand is genaamd *.pdf.Over het algemeen zien commando ‘ s als wc en ls de lijsten van bestandsnamen die overeenkomen met deze uitdrukkingen, maar niet de jokertekens zelf. Het is de shell, niet de andere programma ‘ s, die zich bezighoudt met het uitbreiden van jokertekens, en dit is een ander voorbeeld van orthogonaal ontwerp.

lijst bestandsnamen die overeenkomen met een patroon

wanneer uitgevoerd in demolecules map, welkels commando(s) zal deze uitvoer produceren?

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. Dit geeft ethane.pdb methane.pdb octane.pdb pentane.pdb.

toont alle bestanden waarvan de namen beginnen met nul of meer tekens (*) gevolgd door de letter t, dan één teken (?), dan ne. gevolgd door nul of meer tekens (*). Dit geeft ons octane.pdb en pentane.pdb maar komt niet overeen met iets dat eindigt op thane.pdb.

lost de problemen van Optie 2 op door twee tekens (??) tussen t en nete matchen. Dit is de oplossing.

toont alleen bestanden die beginnen met ethane..

meer op jokertekens

Sam heeft een map met kalibratiegegevens, datasets en beschrijvingen van datasets:

.├── 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

voordat ze naar een andere excursie gaat, wil ze een back-up maken van haar gegevens en enkele datasets naar haar collega Bob sturen. Sam gebruikt de volgende commando ‘ s om de klus te klaren:

$ 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/

Help Sam door de spaties in te vullen.

Het gevolg van de directory-structuur ziet er als volgt uit

.├── 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

Oplossing

$ 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/

het Organiseren van Mappen en Bestanden

Jamie is bezig met een project en ziet ze dat haar bestanden zijn niet erg wellorganized:

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

The fructose.datand sucrose.dat bestanden bevatten output van haar dataanalyse. Welke commando ’s die in deze les worden behandeld, moet ze uitvoeren zodat de onderstaande commando’ s De getoonde uitvoer produceren?

$ 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-bestanden naar de map ‘geanalyseerd’.

reproduceer een mapstructuur

u Start een nieuw experiment en wilt de directorystructuur van uw vorige experiment dupliceren zodat u nieuwe gegevens kunt toevoegen.

neem aan dat het vorige experiment zich in een map bevindt met de naam ‘2016-05-18’,die een data map bevat die op zijn beurt mappen bevat met de naam raw enprocessed die gegevensbestanden bevatten. Het doel is om de mapstructuur van de 2016-05-18-data map te kopiëren naar een map genaamd 2016-05-20zodat uw uiteindelijke mapstructuur er als volgt uitziet:

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

welke van de volgende commando ‘ s zou dit doel bereiken?Wat zouden de andere commando ‘ s doen?

$ 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

Oplossing

De eerste twee sets van commando ‘ s die het behalen van dit doel.De eerste set gebruikt relatieve paden om de top level directory te maken vÃ3Ã3r de submappen.

de derde set commando ‘ s geeft een fout omdat het standaard gedrag van mkdir geen subdirectorymaakt van een niet-bestaande map: de tussenliggende niveaumappen moeten eerst aangemaakt worden.

met de vierde set commando ‘ s wordt dit doel bereikt. Onthoud, de optie -p, gevolgd door een pad van een of meer mappen, zal ervoor zorgen dat mkdir alle tussenliggende submappen maakt zoals vereist.

de laatste set commando ’s genereert de’ raw ‘en’ processed ‘directory’ s op hetzelfde niveau als de ‘data’ directory.

belangrijke punten

  • cp kopieert een bestand.

  • mkdir maakt een nieuwe map aan.

  • mv verplaatst (hernoemt) een bestand of map.

  • rm verwijdert (verwijdert) een bestand.

  • * komt overeen met nul of meer tekens in een bestandsnaam, dus *.txt komt overeen met alle bestanden die eindigen op .txt.

  • ? komt overeen met elk teken in een bestandsnaam, dus ?.txt komt overeen met a.txt maar niet any.txt.

  • het gebruik van de Besturingssleutel kan op vele manieren worden beschreven, waaronder Ctrl-XControl-X, en ^X.

  • De shell heeft geen prullenbak: als iets verwijderd is, is het echt weg.

  • De meeste namen van bestanden zijn something.extension. De extensie is niet vereist, en garandeert niets, maar wordt normaal gesproken gebruikt om het type gegevens in het bestand aan te geven.

  • afhankelijk van het soort werk dat u doet, heeft u mogelijk een krachtigere teksteditor nodig dan Nano.