werken met bestanden en mappen
overzicht
onderwijs: 30 min
oefeningen: 20 minvragen
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 -R
optie voor het ls
commando 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.
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 vannorth pacific gyre/
).begin de naam niet met
-
(streepje).opdrachten behandelen Namen die beginnen met
-
Als opties.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 genaamdnotepad
die kan worden uitgevoerd vanaf de commandoregel op dezelfde manier alsnano
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.txt
te accepteren).
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 uControl-G
kunt gebruiken om hulp te krijgen enControl-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
wat deed de opdracht
touch
?Als je naar je huidige map kijkt met behulp van de GUI file explorer,wordt het bestand dan weergegeven?gebruik
ls -l
om de bestanden te inspecteren. Hoe groot ismy_file.txt
?Wanneer wilt u een bestand op deze manier aanmaken?
oplossing
het commando
touch
genereert een nieuw bestand met de naammy_file.txt
in uw huidige map. U kunt dit nieuw gegenereerde bestand observeren doorls
op de opdrachtregelprompt te typen.my_file.txt
kan ook worden bekeken in uw GUI bestandsverkenner.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 umy_file.txt
opent met uw teksteditor is deze leeg.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
.txt
gebruikt. Dit is gewoon een conventie: we kunnen een bestandmythesis
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,.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 bestanddraft.txt
dat is niet een bijzonder informatief naam,dus we veranderen de naam van het bestand met behulp vanmv
,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 wethesis/draft.txt
naarthesis/quotes.txt
, wat hetzelfde effect heeft als het bestand hernoemen.Zeker genoeg,ls
laat ons zien datthesis
bevat nu een bestand met de naamquotes.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
(ofmv --interactive
),kan worden gebruikt ommv
u om bevestiging te vragen voordat u het overschrijft.merk op dat
mv
ook werkt op mappen.laten we
quotes.txt
verplaatsen naar de huidige werkmap.We gebruikenmv
nogmaals,maar deze keer gebruiken we alleen de naam van een map als tweede argument ommv
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 datthesis
leeg is:$ ls thesis
verder,
ls
met een bestandsnaam of mapnaam als een argument geeft alleen dat bestand of die map weer.Wij kunnen dit gebruiken om te zien datquotes.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
enmaltose.dat
in de verkeerde map. De bestanden hadden in deraw
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 alsmv
,behalve dat het een bestand kopieert in plaats van het te verplaatsen.We kunnen controleren of het de juiste beslissing heeft genomen metls
met 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
enthesis_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?
cp statstics.txt statistics.txt
mv statstics.txt statistics.txt
mv statstics.txt .
cp statstics.txt .
Oplossing
- Geen. Hoewel dit een bestand met de juiste naam zou maken, bestaat het onjuist benoemde bestand nog steeds in de directoryand moet worden verwijderd.
- ja, dit zou werken om het bestand te hernoemen.
- Nee, de periode(.) geeft aan waar het bestand moet worden verplaatst, maar geeft geen nieuwe bestandsnaam op; identieke bestandsnamen kunnen niet worden aangemaakt.
- 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
proteins-saved.dat recombined
recombined
proteins.dat recombined
proteins-saved.dat
Solution
We start in the
/Users/jamie/data
directory, and create a new folder calledrecombined
.De tweede regel verplaatst (mv
) het bestandproteins.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.
- Nee, zie uitleg hierboven.
proteins-saved.dat
bevindt zich op/Users/jamie
- ja
- Nee, zie uitleg hierboven.
proteins.dat
bevindt zich op/Users/jamie/data/recombined
- 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 hetquotes.txt
bestand te verwijderen dat we aangemaakt hebben.Het Unix commando dat we hiervoor gebruiken isrm
(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.txt
uitvoeren?Waarom zouden we deze bescherming willen als werm
gebruiken?oplossing
$ rm: remove regular file 'thesis_backup/quotations.txt'? y
de optie
-i
zal 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
maprm 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 -r
met grote voorzichtigheid worden gebruikt (u kunt overwegen de interactieve optierm -r -i
toe 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), kopieert
cp
de 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 thedata-shell/molecules
directory:*.pdb
matchesethane.pdb
propane.pdb
, and everyfile that ends with ‘.pdb’. Aan de andere kant komtp*.pdb
alleen overeen metpentane.pdb
enpropane.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 metmethane.pdb
terwijl*ethane.pdb
overeenkomt met zowelethane.pdb
, enmethane.pdb
.jokertekens kunnen in combinatie met elkaar worden gebruikt.g.
???ane.pdb
komt overeen met drie tekens gevolgd doorane.pdb
,watcubane.pdb ethane.pdb octane.pdb
geeft.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 demolecules
map(die alleen bestanden bevat met namen eindigend op.pdb
) resulteert in een foutmelding dat er geen bestand is genaamdwc
enls
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 de
molecules
map, welkels
commando(s) zal deze uitvoer produceren?
ethane.pdb methane.pdb
ls *t*ane.pdb
ls *t?ne.*
ls *t??ne.pdb
ls ethane.*
Solution
The solution is
shows all files whose names contain zero or more characters (
*
) followed by the lettert
, then zero or more characters (*
) followed byane.pdb
. Dit geeftethane.pdb methane.pdb octane.pdb pentane.pdb
.
toont alle bestanden waarvan de namen beginnen met nul of meer tekens (
*
) gevolgd door de lettert
, dan één teken (?
), danne.
gevolgd door nul of meer tekens (*
). Dit geeft onsoctane.pdb
enpentane.pdb
maar komt niet overeen met iets dat eindigt opthane.pdb
.
lost de problemen van Optie 2 op door twee tekens (
??
) tussent
enne
te 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.dat
andsucrose.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
andsucrose.dat
to theanalyzed
directory.The shell will expand *.dat to match all .dat files in the current directory.Themv
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 naamraw
enprocessed
die gegevensbestanden bevatten. Het doel is om de mapstructuur van de2016-05-18-data
map te kopiëren naar een map genaamd2016-05-20
zodat 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 datmkdir
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 meta.txt
maar nietany.txt
.het gebruik van de Besturingssleutel kan op vele manieren worden beschreven, waaronder
Ctrl-X
Control-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.
Leave a Reply