Articles

Práce se Soubory a S adresáři

Přehled

Výuka: 30 min
Cvičení: 20 min
Otázky

  • Jak mohu vytvářet, kopírovat a mazat soubory a adresáře?

  • Jak mohu upravovat soubory?

cíle

  • Vytvořte hierarchii adresářů, která odpovídá danému diagramu.

  • vytvářejte soubory v této hierarchii pomocí editoru nebo kopírováním a přejmenováním existujících souborů.

  • Smazat, kopírovat a přesouvat zadané soubory a / nebo adresáře.

Vytváření adresářů

nyní víme, jak prozkoumat soubory a adresáře,ale jak jsme se vytvořit jim v první řadě?

Krok: podívejte se, kde jsme a co již máme

vraťme se k naší data-shell adresář na Desktopand používání ls -F vidět, co to obsahuje:

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

Vytvořit adresář

Pojďme vytvořit nový adresář s názvem thesis pomocí příkazu mkdir thesis(který nemá žádný výstup):

$ mkdir thesis

Jak asi tušíte z jeho názvu,mkdir znamená ‚označte adresář‘.Protože thesis je relativní cesta (tj. nemá přední lomítko, jako /what/ever/thesis),nový adresář se vytvoří v aktuálním pracovním adresáři:

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

co jsme právě vytvořili, thesis adresáře, tam je nic v něm ale přesto:

$ ls -F thesis

Všimněte si, že mkdir není omezen pouze na vytváření jednotného adresáře jeden po druhém. -p umožňuje mkdir vytvořte adresář s libovolným počtem vnořených podadresářů v jedné operaci:

$ mkdir -p thesis/chapter_1/section_1/subsection_1

-R možnost ls příkaz zobrazí seznam všech vnořených podadresářů v adresáři. Pojďme použít ls -FR rekurzivně vypsat nový adresář hierarchie jsme právě vytvořili pod thesis adresář:

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

Dva způsoby, jak dělat to samé

Pomocí shell vytvořit adresář není nic jiného než použití file explorer.Pokud otevřete aktuální adresář pomocí grafického Průzkumníka souborů operačního systému, zobrazí se zde také adresář thesis.Zatímco shell a průzkumník souborů jsou dva různé způsoby interakce se soubory, samotné soubory a adresáře jsou stejné.

Dobrá jména pro souborů a adresářů

Komplikované názvy souborů a adresářů, můžete vytvořit svůj život painfulwhen pracuje na příkazovém řádku. Zde uvádíme několik užitečnýchtipy pro názvy vašich souborů.

  1. nepoužívejte mezery.

    Prostory mohou udělat jméno smysluplnější,ale protože prostory se používají k oddělení argumentů na příkazovém linkuto je lepší se jim vyhnout v názvech souborů a adresářů.Místo toho můžete použít - nebo _ (např. north-pacific-gyre/ spíše než north pacific gyre/).

  2. nezačínejte název - (dash).

    příkazy považují názvy začínající - za volby.

  3. Hůl s písmeny, čísly, . (období nebo ‚tečka‘), - (pomlčka) a _ (podtržítko).

    mnoho dalších znaků má na příkazovém řádku zvláštní význam.O některých z nich se dozvíme během této lekce.Existují speciální znaky, které mohou způsobit, že váš příkaz nebude fungovat jakočekané a mohou dokonce vést ke ztrátě dat.

Pokud potřebujete odkazovat na názvy souborů nebo adresářů, které mají spacesor jiné speciální znaky, měli byste obklopují jméno v uvozovkách ("").

Vytvoření textového souboru

Pojďme změnit náš pracovní adresář na thesis pomocí cd,spusťte textový editor nazvaný Nano vytvořit soubor s názvem draft.txt:

$ cd thesis$ nano draft.txt

, Které Editor?

Když říkáme, ‚nano je textový editor se máme opravdu na mysli „text“: to canonly práce s prostý charakter dat, ne tabulky, obrázky, nebo jakýkoliv otherhuman-friendly media. Používáme jej v příkladech, protože je jedním z nejsložitějších textových editorů. Kvůli této vlastnosti to však můženebude dostatečně výkonný nebo dostatečně flexibilní pro práci, kterou musíte udělat po tomto Workshopu. Na Unixových systémů (jako je Linux a macOS),mnoho programátorů používat Emacs orVim (z nichž oba vyžadují více času se učit),nebo grafickém editoru, jako je asGedit. V systému Windows můžete přátpoužijte Poznámkový blok++. Windows má také vestavěný-ineditor nazývá notepad, které lze spustit z příkazového řádku v stejným způsobem jako nano pro účely této lekce.

bez ohledu na to, jaký editor používáte, budete potřebovat vědět, kde vyhledává a ukládá soubory. Pokud jej spustíte z shellu, bude (pravděpodobně)používat váš aktuální pracovní adresář jako výchozí umístění. Používáte-li nabídku start vašeho počítače, může místo toho ukládat soubory do adresáře ordocuments na ploše. Můžete to změnit navigací do jiného adresáře při prvním uložení jako …

zadejte několik řádků textu.Jakmile jsme spokojeni s naší textu, můžeme stisknout kombinaci kláves Ctrl+O(stiskněte kombinaci kláves Ctrl nebo ctrl a, whileholding to dolů, stiskněte tlačítko O tlačítko) psát naše data na disk(budeme dotázáni jaký soubor chceme uložit na:stisknutím tlačítka Návrat do přijmout navrhl, default draft.txt).

screenshot of nano textový editor v akci

Jakmile se náš soubor je uložen, můžeme použít Ctrl+X ukončete editor andreturn do shellu.

ovládání, Ctrl nebo ^ klíč

Ovládací klíč se také nazývá klávesa „Ctrl“. Existují různé způsobyve kterém lze pomocí ovládacího tlačítka popsat. Například můžetePodívejte se na pokyn ke stisknutí ovládacího tlačítka a při jeho přidržení stiskněte klávesu X, která je popsána jako kterákoli z:

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

V nano, podél dolní části obrazovky uvidíte ^G Get Help ^O WriteOut.To znamená, že můžete použít Control-G jak získat pomoc a Control-O uložit yourfile.

nano nedává žádný výstup na obrazovku poté, co opustí,ale ls nyní se ukazuje, že máme vytvořený soubor s názvem draft.txt:

$ ls
draft.txt

Vytváření Souborů jiným Způsobem

Jsme viděli, jak vytvořit textové soubory pomocí nano editor.Nyní zkuste následující příkaz:

$ touch my_file.txt
  1. Co touch příkaz?Když se podíváte na aktuální adresář pomocí Průzkumníka souborů GUI, zobrazí se soubor?

  2. pro kontrolu souborů použijte ls -l. Jak velký je my_file.txt?

  3. kdy chcete vytvořit soubor tímto způsobem?

Řešení

  1. touch příkaz vytvoří nový soubor s názvem my_file.txt ve vašem aktuálním adresáři. Můžete sledovat tento nově vygenerovaný soubor zadáním ls na příkazový řádek. my_file.txt lze také zobrazit v Průzkumníku souborů yourGUI.

  2. Když si zkontrolujte, zda soubor s ls -l všimněte si, že velikostmy_file.txt je 0 bajtů. Jinými slovy, neobsahuje žádná data.Pokud otevřete my_file.txt pomocí textového editoru, je prázdný.

  3. některé programy nevytvářejí výstupní soubory samy, alemísto toho vyžadují, aby prázdné soubory již byly vygenerovány.Když je program spuštěn, vyhledá existující souborpopulovat s jeho výstupem. Příkaz touch vám umožňujeefektivně vygenerovat prázdný textový soubor, který bude použit takovýmprogramy.

Co je V Názvu?

možná Jste si všimli, že všechny Nelle soubory jsou pojmenovány něco dotsomething‘, a v této části lekce jsme se vždy používá příponu.txt. Toto je jen konvence: můžeme volat soubor mythesis nebotéměř cokoli jiného chceme. Většina lidí však používá dvoudílná jménavětšinu času, aby jim pomohla (a jejich programům) rozeznat různé druhy souborů od sebe. Druhá část tohoto názvu se nazývá thefilename rozšíření, a indicateswhat typ dat soubor obsahuje: .txt signály, prostý textový soubor, .pdfoznačuje PDF dokumentu .cfg je konfigurační soubor, plný parametersfor nějaký program, nebo jiný, .png je PNG obrázek, a tak dále.

Toto je jen konvence, i když důležitá. Soubory containbytes: je na nás a našich programech, abychom je interpretovali podle pravidel pro prosté textové soubory, dokumenty PDF, konfigurační soubory, obrázky atd.

Pojmenování PNG obrázek velryby jako whale.mp3 nemá somehowmagically proměnit nahrávání whalesong, i když to mightcause operační systém, aby se pokusili otevřít s hudební playerwhen někdo poklepe.

Přesouvání souborů a adresářů

Návrat k data-shell adresář,

cd ~/Desktop/data-shell/

V thesis adresáři máme soubor draft.txt, který není zvláště poučné jméno,tak se pojďme změnit název souboru pomocí mv,což je zkratka pro „tah“:

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

první argument říká, mv co jsme to „stěhování“, zatímco druhá je, kde to má jít.V tomto případě přesuneme thesis/draft.txt na thesis/quotes.txt, což má stejný účinek jako přejmenování souboru.Určitě dost,ls ukazuje nám, že thesis nyní obsahuje jeden soubor s názvem quotes.txt:

$ ls thesis
quotes.txt

člověk musí být opatrný, když specifikovat cílový název souboru, jelikož mv willsilently přepsat existující soubor se stejným názvem, který couldlead ke ztrátě dat. Další možnost, mv -i (nebo mv --interactive),mohou být použity, aby se mv vás požádat o potvrzení před přepsáním.

Všimněte si, že mv funguje také na adresářích.

přesuneme quotes.txt do aktuálního pracovního adresáře.Používáme mv ještě jednou,ale tentokrát použijeme jen název adresáře jako druhý argumentto říct, mv, že chceme udržet názvem,ale dát soubor na nové místo.(Proto se příkaz nazývá „move“.) V tomto případě je název adresáře, který používáme, speciální název adresáře ., který jsme zmínili dříve.

$ mv thesis/quotes.txt .

účinek je přesunout soubor z adresáře to bylo v aktuální pracovní adresář.ls nyní nám ukazuje, že thesis je prázdný:

$ ls thesis

Dalšíls s názvem souboru nebo název adresáře jako argument uvádí pouze, že soubor nebo adresář.Můžeme to použít, abychom viděli, že quotes.txt je stále v našem aktuálním adresáři:

$ ls quotes.txt
quotes.txt

Přesouvání Souborů do nové složky

Po spuštění následující příkazy Jamie si uvědomí, že ona dát soubory sucrose.datmaltose.dat do špatné složky. Soubory měly být umístěny do složky raw.

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

Vyplnit prázdná místa, aby se tyto soubory přesunout do raw/ složku(tj. jeden zapomněla dát je v)

$ mv sucrose.dat maltose.dat ____/____

Řešení

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

vzpomeňte si, že .. odkazuje na nadřazený adresář (tj. nad aktuální adresář), a že . označuje aktuální adresář.

Kopírování souborů a adresářů

cp příkaz funguje velmi podobně jako mv,až na to, že kopie souboru místo přesunutí.Můžeme zkontrolovat, že udělal správnou věc pomocí lsdvě cesty, jak argumenty — jako většina Unixových příkazů,ls může být dána více cest najednou:

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

můžeme také zkopírovat adresář a celý jeho obsah pomocí therecursive možnost -r,např. pro zálohování adresáře:

$ cp -r thesis thesis_backup

můžeme zkontrolovat výsledek pomocí výpisu obsahu jak thesisthesis_backup adresář:

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

Přejmenování Souborů

Předpokládejme, že jste vytvořili prostý-textový soubor v aktuálním adresáři obsahuje seznam thestatistical testy budete muset udělat, aby analyzovat vaše data, a to s názvem: statstics.txt

Po vytvoření a uložení tohoto souboru si uvědomíte, že jste chybně názvem! Chceteopravit chybu, který z následujících příkazů byste k tomu mohli použít?

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

Řešení

  1. Ne. I když by to vytvořilo soubor se správným názvem, nesprávně pojmenovaný soubor stále existuje v directoryand by musel být odstraněn.
  2. Ano, To by fungovalo přejmenovat soubor.
  3. ne, tečka(.) označuje, kam přesunout soubor, ale neposkytuje nový název souboru; identické názvy souborůnemůže být vytvořen.
  4. ne, tečka(.) označuje, kam soubor zkopírovat, ale neposkytuje nový název souboru; identické názvy souborůnemůže být vytvořen.

Přesouvání a Kopírování

Jaká je výstupní uzavírací ls příkaz v pořadí uvedeném na obrázku níže?

$ 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.Druhý řádek přesune (mv) soubor proteins.dat do nové složky (recombined).Třetí řádek vytvoří kopii souboru, který jsme právě přesunuli. Choulostivá část je, kde byl soubor zkopírován. Připomeňme si, že .. znamená ‚jít o úroveň výš, takže zkopírovaný soubor je nyní v /Users/jamie.Všimněte si, že .. je interpretován s ohledem na aktuální workingdirectory, nikoli s ohledem na umístění kopírovaného souboru.Takže, jediná věc, která bude zobrazovat pomocí ls (v /Users/jamie/data) je rekombinované složky.

  1. ne, viz vysvětlení výše. proteins-saved.dat se nachází v /Users/jamie
  2. Ano
  3. Ne, viz vysvětlení výše. proteins.dat se nachází na /Users/jamie/data/recombined
  4. ne, viz vysvětlení výše. proteins-saved.dat se nachází v /Users/jamie

Odstraňování souborů a adresářů

Návrat k data-shell adresář,pojďme uklidit tento adresář odstraněním quotes.txt soubor, který jsme vytvořili.Unix příkaz použijeme pro to je rm (zkratka pro „odstranit“):

$ rm quotes.txt

můžeme potvrdit, že soubor je pryč pomocí ls:

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

Mazání Je Navždy

Unix shell nemá koše, že můžeme obnovit deletedfiles z (i když většina grafických rozhraní pro Unix). Místo toho, když odstraníme soubory, jsou odpojeny ze systému souborů, takže jejich úložný prostor na disku lze recyklovat. Nástroje pro nalezení a obnovení odstraněných souborů existují, ale neexistuje žádná záruka, že budou pracovat v jakékoli konkrétní situaci, protože počítač může okamžitě recyklovat místo na disku.

Použití rm Bezpečně

Co se stane, když provádíme rm -i thesis_backup/quotations.txt?Proč bychom chtěli tuto ochranu při použití rm?

Řešení

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

-i možnost vyzve před (každý) odstranění (využití Y pro potvrzení vymazání nebo N, aby soubor).Unix shell nemá koše, takže všechny soubory odstraněny zmizí forever.By pomocí -i možnost, máme možnost zkontrolovat, že můžeme odstranit pouze ty soubory, které chceme odstranit.

Pokud se budeme snažit odstranit thesis adresář pomocí rm thesis,dostaneme chybová zpráva:

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

To se děje proto, rm ve výchozím nastavení funguje pouze na soubory, nikoliv adresáře.

rm můžete odstranit adresář a celý jeho obsah pokud budeme používat therecursive možnost -r, a bude tak činit bez potvrzení výzvy:

$ rm -r thesis

Vzhledem k tomu, že neexistuje žádný způsob, jak obnovit smazané soubory pomocí shell,rm -r by měl být používán s velkou opatrností (můžete zvážit přidání interaktivních možností rm -r -i).

operace s více soubory a adresáři

často je třeba kopírovat nebo přesouvat několik souborů najednou. To lze provést poskytnutím seznamu jednotlivých názvů souborů nebo zadáním vzoru pojmenování pomocí zástupných znaků.

Kopírovat s Více názvy Souborů

Pro toto cvičení, můžete vyzkoušet příkazy v data-shell/data adresář.

v níže uvedeném příkladu, co dělá cp, když je uvedeno několik názvů souborů a název adresáře?

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

V příkladu, co znamená cp dělat, když dal tři nebo více názvů souborů?

$ 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

Řešení

Pokud je uveden více než jeden název souboru, následuje název adresáře (tj. cílové adresáře musí být poslední argument), cp zkopíruje soubory na zadaný adresář.

Pokud dané tři názvy souborů, cp vyvolá chybu, jako ten níže, protože je čeká directoryname jako poslední 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’. Na druhou stranu, p*.pdb odpovídá pouzepentane.pdbpropane.pdb, protože “ p „na přední onlymatches názvy souborů, které začínají písmenem „p“.

? je také divoká karta, ale to odpovídá právě jeden znak.?ethane.pdb by zápas methane.pdb vzhledem k tomu*ethane.pdb zápasy ethane.pdbmethane.pdb.

zástupné znaky lze použít ve vzájemné kombinaci.g. ???ane.pdb zápasů tři znaky následuje ane.pdb,přičemž cubane.pdb ethane.pdb octane.pdb.

Když shell vidí zástupný znak, rozšiřuje zástupný vytvořit seznam odpovídajících názvů souborů před spuštěním příkazu, který wasasked pro. Výjimečně, pokud se výraz zástupných znaků neshodujekaždý soubor, Bash předá výraz jako argument příkazujak to je. Například zadáním ls *.pdfmolecules adresáři(který obsahuje pouze soubory s názvy končící .pdb) výsledky inan chybová zpráva, že není žádný soubor s názvem *.pdf.Obecně však příkazy jako wc a ls viz seznamy názvů souborů odpovídajících těmto výrazům, ale ne wildcardsthemselves. Jedná se o shell, ne o jiné programy, které se zabývajírozšiřování zástupných znaků a toto je další příklad ortogonálního designu.

Seznam souborů, odpovídající vzor

Při spuštění molecules adresář, kde ls příkaz(y) ohlásí tento výstup?

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. To dává ethane.pdb methane.pdb octane.pdb pentane.pdb.

zobrazuje všechny soubory, jejichž jména začínají s nula nebo více znaků (*) následuje písmeno t, pak jeden znak (?ne. následované nula nebo více znaků (*). To nám dá octane.pdbpentane.pdb, ale neodpovídá nic, co končí v thane.pdb.

řeší problémy varianta 2 odpovídající dva znaky (??) mezi tne. Toto je řešení.

zobrazuje pouze soubory začínající ethane..

Více na Zástupné znaky

Sam má adresář obsahující kalibračních dat, datových souborů, a popisy z datových souborů:

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

Než se vydáte na další výlet, chce zálohovat data aposílat některé soubory dat, k její kolega Bob. Sam používá následující commandsto získat práci:

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

Nápověda Sam vyplněním prázdná místa.

výsledná adresářová struktura by měla vypadat takhle.

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

Řešení

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

Organizování Adresářů a Souborů

Jamie pracuje na projektu, a vidí, že její soubory nejsou velmi, velmi dobře organizovanou:

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

fructose.datsucrose.dat soubory obsahují výstup z ní dataanalysis. Jaký příkaz (y) zahrnutý v této lekci musí spustit, aby níže uvedené příkazy vytvořily zobrazený výstup?

$ 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 .soubory dat do adresáře „analyzed“.

Reprodukovat strukturu složek

začínáš nový experiment, a rád bych, aby duplicitní directorystructure z předchozího experimentu, takže můžete přidat nová data.

Předpokládejme, že předchozí experiment je ve složce s názvem ‚2016-05-18‘,která obsahuje data složka, která obsahuje složky s názvem rawprocessed, které obsahují datové soubory. Cílem je zkopírovat složku structureof 2016-05-18-data složky do složky s názvem 2016-05-20tak, aby vaše konečné adresářová struktura vypadá takto:

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

Který z následujících sadu příkazů by dosažení tohoto cíle?Co by dělaly ostatní příkazy?

$ 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

Řešení

první dvě sady příkazů dosažení tohoto cíle.První sada používá relativní cesty k vytvoření adresáře nejvyšší úrovně před podadresáře.

třetí sada příkazů bude mít za následek chybu, protože výchozí chování mkdir nebude vytvořit subdirectoryof na neexistující adresář: středně pokročilé úrovni složky musí být vytvořena jako první.

čtvrtá sada příkazů tohoto cíle dosáhne. Nezapomeňte, že volba -p, následovaná cestou jednoho nebo více adresářů, způsobí, že mkdir vytvoří libovolné podadresáře podle potřeby.

konečná sada příkazů generuje adresáře “ raw “ a „zpracované“ na stejné úrovni jako adresář „data“.

Klíčové Body

  • cp kopie souboru.

  • mkdir vytvoří nový adresář.

  • mv přesune (přejmenuje) soubor nebo adresář.

  • rm odstraní (odstraní) soubor.

  • * odpovídá nula nebo více znaků v souboru, takže *.txt zápasů všechny soubory, které končí v .txt.

  • ? jeden libovolný znak v souboru, takže ?.txt zápasy a.txtany.txt.

  • Použití Kontrolní klíč může být popsán v mnoha ohledech, včetně Ctrl-XControl-X^X.

  • shell nemá koš: jakmile je něco odstraněno, je to opravdu pryč.

  • názvy většiny souborů jsou something.extension. Přípona není vyžadována a nic nezaručuje, ale obvykle se používá k označení typu dat v souboru.

  • V závislosti na typu práce, kterou děláte, možná budete potřebovat výkonnější textový editor než Nano.