Articles

lucrul cu fișiere și directoare

Prezentare generală

predare: 30 min
exerciții: 20 min
întrebări

  • Cum pot crea, copia și șterge fișiere și directoare?

  • Cum pot edita fișiere?

obiective

  • creați o ierarhie de directoare care se potrivește cu o diagramă dată.

  • creați fișiere în acea ierarhie folosind un editor sau copiind și redenumind fișierele existente.

  • ștergeți, copiați și mutați fișierele și / sau directoarele specificate.

crearea directoarelor

acum știm cum să explorăm fișierele și directoarele,dar cum le creăm în primul rând?

pasul unu: vedeți unde suntem și ce avem deja

să ne întoarcem la data-shell directorul de pe Desktopși folosiți ls -F pentru a vedea ce conține:

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

creați un director

să creăm un nou director numitthesis folosind comanda mkdir thesis(care nu are ieșire):

$ mkdir thesis

după cum s-ar putea ghici din numele său, mkdir înseamnă „director Mark’.Deoarece thesis este calea relativă(adică., nu are o bară oblică de conducere, cum ar fi /what/ever/thesis),noul director este creat în directorul de lucru curent:

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

Din moment ce tocmai am creatthesis director, nu e nimic în ea încă:

$ ls -F thesis

rețineți cămkdir nu se limitează la crearea directoare unice pe rând. Opțiunea-p permitemkdir să creeze un director cu orice număr de subdirectoare imbricate într-o singură operație:

$ mkdir -p thesis/chapter_1/section_1/subsection_1

-R opțiune lals comanda va lista toate subdirectoarele imbricate într-un director. Să folosim ls -FR pentru a lista recursiv noua ierarhie de directoare pe care tocmai am creat – o sub directorul thesis :

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

două moduri de a face același lucru

utilizarea shell-ului pentru a crea un director nu este diferită de utilizarea unui explorator de fișiere.Dacă deschideți directorul curent folosind exploratorul grafic de fișiere al sistemului de operare, directorul thesis va apărea și acolo.În timp ce shell-ul și exploratorul de fișiere sunt două moduri diferite de a interacționa cu fișierele,fișierele și directoarele în sine sunt aceleași.

nume bune pentru fișiere și directoare

numele complicate de fișiere și directoare vă pot face viața dureroasăcând lucrați la linia de comandă. Aici oferim câteva utilesfaturi pentru numele fișierelor dvs.

  1. nu folosiți spații.

    spațiile pot face un nume mai semnificativ,dar din moment ce spațiile sunt folosite pentru a separa argumentele de pe linia de comandăeste mai bine să le evitați în numele fișierelor și directoarelor.Puteți utiliza - sau _ în schimb (de ex. north-pacific-gyre/mai degrabă decâtnorth pacific gyre/).

  2. nu începeți numele cu- (liniuță).

    comenzile tratează nume începând cu - ca opțiuni.

  3. Stick cu litere, numere,. (punct sau ‘oprire completă’),- (liniuță) și_ (subliniere).

    multe alte caractere au semnificații speciale pe linia de comandă.Vom învăța despre unele dintre acestea în timpul acestei lecții.Există caractere speciale care pot determina comanda dvs. să nu funcționeze la felașteptate și pot duce chiar la pierderea datelor.

dacă trebuie să vă referiți la numele fișierelor sau directoarelor care au spațiisau alte caractere speciale, ar trebui să înconjurați numele în ghilimele ("").

creați un fișier text

să schimbăm directorul nostru de lucru în thesis folosind cd,apoi rulați un editor de text numit Nano pentru a crea un fișier numit draft.txt:

$ cd thesis$ nano draft.txt

care Editor?

când spunem, ‘nano este un editor de text’ ne referim într-adevăr la „text”: poate funcționa numai cu date de caractere simple, nu tabele, imagini sau orice alt mediu prietenos cu oamenii. Îl folosim în exemple pentru că este unul dintreultimul editor de text complex. Cu toate acestea, din cauza acestei trăsături, poatenu fi suficient de puternic sau suficient de flexibil pentru munca pe care trebuie să o facidupă acest atelier. Pe sistemele UNIX (cum ar fi Linux și macOS),mulți programatori folosesc Emacs orVim (ambele necesită mai mult timp pentru a învăța) sau un editor grafic,cum ar figedit. Pe Windows, ați putea doriutilizați Notepad++. Windows are, de asemenea, un built-ineditor numit notepad care poate fi rulat din linia de comandă în același mod ca nano în scopul acestei lecții.

indiferent de editorul pe care îl utilizați, va trebui să știți unde caută și salvează fișierele. Dacă îl porniți din shell, acesta va folosi (probabil)directorul dvs. de lucru curent ca locație implicită. Dacă utilizați meniul start al computerului dvs., este posibil să doriți să salvați fișiere în directorul desktop saudocumente în schimb. Puteți schimba acest lucru navigând laun alt director prima dată când ” salvați ca … „

să tastăm câteva rânduri de text.Odată ce suntem mulțumiți de textul nostru, putem apăsa Ctrl+O(Apăsați tasta Ctrl sau Control și, în timp ce o țineți în jos, Apăsați tasta O) pentru a scrie datele noastre pe disc(vom fi întrebați în ce fișier dorim să salvăm acest lucru:apăsați Return pentru a accepta implicit sugerat de draft.txt).

captură de ecran a editorului de text nano în acțiune

odată ce fișierul nostru este salvat, putem folosi Ctrl+X pentru a părăsi editorul șireveniți la shell.

Control, Ctrl sau ^ cheie

cheia de Control este numită și tasta „Ctrl”. Există diferite moduriîn care poate fi descrisă utilizarea cheii de Control. De exemplu, puteți vedea o instrucțiune pentru a apăsa tasta Control și,în timp ce o țineți apăsată, apăsați tasta X, descrisă ca oricare dintre:

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

în nano, în partea de jos a ecranului veți vedea ^G Get Help ^O WriteOut.Aceasta înseamnă că puteți utiliza Control-G pentru a obține ajutor și Control-O pentru a vă salva fișierul.

nano nu lasă nicio ieșire pe ecran după ce iese,dar ls arată acum că am creat un fișier numit draft.txt:

$ ls
draft.txt

crearea fișierelor într-un mod diferit

am văzut cum să creați fișiere text folosind editorul nano.Acum, încercați următoarea comandă:

$ touch my_file.txt
  1. ce a făcut comandatouch?Când te uiți la directorul curent folosind exploratorul de fișiere GUI, fișierul apare?

  2. utilizați ls -l pentru a inspecta fișierele. Cât de mare este my_file.txt?

  3. când doriți să creați un fișier în acest fel?

soluție

  1. touch comanda generează un nou fișier numitmy_file.txt în directorul curent. Puteți observa acest fișier nou generat tastând ls la promptul liniei de comandă. my_file.txt poate fi vizualizat și în exploratorul de fișiere yourGUI.

  2. când inspectați fișierul culs -l, rețineți că dimensiunea my_file.txt este de 0 octeți. Cu alte cuvinte, nu conține date.Dacă deschideți my_file.txt folosind editorul de text, acesta este gol.

  3. unele programe nu generează fișiere de ieșire în sine, darîn schimb necesită ca fișierele goale să fi fost deja generate.Când programul este rulat, acesta caută un fișier existentpopulați cu ieșirea sa. Comanda touch vă permite săgenerați eficient un fișier text gol pentru a fi utilizat de astfel de programe.

ce este într-un nume?

este posibil să fi observat că toate fișierele Nelle sunt numite”ceva dotsomething”, iar în această parte a lecției, am folosit întotdeauna extensia.txt. Aceasta este doar o convenție: putem apela un fișier mythesis sauaproape orice altceva dorim. Cu toate acestea, majoritatea oamenilor folosesc nume din două părțide cele mai multe ori pentru a-i ajuta (și programele lor) să distingă diferite tipuri de fișiere. A doua parte a unui astfel de nume se numește extensia filename și indicăce tip de date deține fișierul: .txt semnalează un fișier text simplu, .pdfindică un document PDF, .cfg este un fișier de configurare plin de parametripentru un program sau altul, .png este o imagine PNG și așa mai departe.

aceasta este doar o convenție, deși una importantă. Fișiere containbytes: depinde de noi și de programele noastre să interpretăm acești octețiîn conformitate cu regulile pentru fișiere text simplu, documente PDF, fișiere de configurare, imagini și așa mai departe.

denumirea unei imagini PNG a unei balene cawhale.mp3 nu o transformă într-un fel magic într-o înregistrare a cântecului de balenă, deși ar putea determina sistemul de Operare să încerce să o deschidă cu un player de muzică atunci când cineva face dublu clic pe ea.

mutarea fișierelor și directoarelor

revenirea ladata-shell,

cd ~/Desktop/data-shell/

În thesisdirector avem un fișier draft.txtcare nu este un nume deosebit de informativ,Deci să schimbăm numele fișierului folosind mv, care este prescurtarea de la”mutare”:

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

primul argument spunemv ce „mișcăm”, în timp ce al doilea este unde trebuie să mergem.În acest caz,ne mutăm thesis/draft.txt la thesis/quotes.txt, care are același efect ca redenumirea fișierului.Destul de sigur,ls ne arată că thesis conține acum un fișier numit quotes.txt:

$ ls thesis
quotes.txt

trebuie să fiți atenți atunci când specificați numele fișierului țintă, deoarecemv va suprascrie în mod silențios orice fișier existent cu același nume, ceea ce ar putea duce la pierderea datelor. O opțiune suplimentară, mv -i (sau mv --interactive),poate fi utilizată pentru a face mv să vă solicite confirmarea înainte de suprascriere.

rețineți că mv funcționează și pe directoare.

să mutămquotes.txt în directorul de lucru curent.Folosim mv încă o dată,dar de data aceasta vom folosi doar numele unui director ca al doilea argumentpentru a spune mv că vrem să păstrăm numele fișierului,dar să punem fișierul undeva nou.(Acesta este motivul pentru care comanda se numește ‘mutare’.)În acest caz,numele directorului pe care îl folosim este numele special al directorului . pe care l-am menționat mai devreme.

$ mv thesis/quotes.txt .

efectul este de a muta fișierul din Directorul în care se afla în directorul de lucru curent.ls acum ne arată căthesis este gol:

$ ls thesis

Mai departe,ls cu un nume de fișier sau un nume de director ca argument listează doar acel fișier sau director.Putem folosi acest lucru pentru a vedea că quotes.txt este încă în directorul nostru curent:

$ ls quotes.txt
quotes.txt

mutarea fișierelor într-un folder nou

după rularea următoarelor comenzi,Jamie își dă seama că a pus fișierelesucrose.datșimaltose.dat în folderul greșit. Fișierele ar fi trebuit plasate în folderul raw.

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

Completați spațiile libere pentru a muta aceste fișiere în folderul raw/ (adică cel în care a uitat să le pună)

$ mv sucrose.dat maltose.dat ____/____

soluție

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

amintiți-vă că .. se referă la directorul părinte (adică unul deasupra directorului curent)și că . se referă la directorul curent.

copierea fișierelor și directoarelor

cp comanda funcționează foarte mult camv,cu excepția faptului că copiază un fișier în loc să-l mute.Putem verifica dacă a făcut ceea ce trebuie folosind ls cu două căi ca argumente — la fel ca majoritatea comenzilor Unix, ls pot fi date mai multe căi simultan:

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

de asemenea,putem copia un director și tot conținutul acestuia utilizând opțiunea de conversie -r, de exemplu, pentru a face o copie de rezervă a unui director:

$ cp -r thesis thesis_backup

putem verifica rezultatul listând conținutul atât al directorului thesis, cât și al directorului thesis_backup :

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

redenumirea fișierelor

Să presupunem că ați creat un fișier text simplu în directorul curent să conțină o listă deteste statistice va trebui să faceți pentru a analiza datele, și a numit-o: statstics.txt

după crearea și salvarea acestui fișier îți dai seama că scris greșit numele fișierului! Vrei săcorectați greșeala, care dintre următoarele comenzi ați putea folosi pentru a face acest lucru?

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

soluție

  1. nr. În timp ce acest lucru ar crea un fișier cu numele corect, fișierul numit incorect încă mai există în directoryand ar trebui să fie șterse.
  2. Da, acest lucru ar funcționa pentru a redenumi fișierul.
  3. Nu, perioada(.) indică unde să mutați fișierul, dar nu oferă un nou nume de fișier; nume de fișier identicnu poate fi creat.
  4. Nu, perioada(.) indică unde să copiați fișierul, dar nu oferă un nou nume de fișier; nume de fișier identicnu poate fi creat.

Mutarea și copierea

care este ieșirea închiderii ls comanda în secvența prezentată mai jos?

$ 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.A doua linie mută (mv) fișierul proteins.dat în noul folder (recombined).A treia linie face o copie a fișierului pe care tocmai l-am mutat. Partea dificilă aici este locul unde a fost fișierulcopiat. Amintiți-vă că .. înseamnă”urcați un nivel”, deci fișierul copiat este acum în /Users/jamie.Observați că .. este interpretat în ceea ce privește workingdirectory curent, nu în ceea ce privește locația fișierului copiat.Deci, singurul lucru care va apărea folosind ls (în /Users/jamie/data) este folderul recombinat.

  1. Nu, vezi explicația de mai sus. proteins-saved.dat se află la/Users/jamie
  2. Da
  3. nu, vezi explicația de mai sus. proteins.dat este localizat la/Users/jamie/data/recombined
  4. nu, vezi explicația de mai sus. proteins-saved.dat este localizat la /Users/jamie

eliminarea fișierelor și directoarelor

revenirea la , să ordonăm acest director eliminând fișierul quotes.txt pe care l-am creat.Comanda Unix pe care o vom folosi pentru aceasta esterm (prescurtare pentru ‘remove’):

$ rm quotes.txt

putem confirma că fișierul a trecut folosind ls:

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

ștergerea este pentru totdeauna

shell-ul Unix nu are un coș de gunoi din care să putem recupera fișierele șterse (deși majoritatea interfețelor grafice la UNIX fac). În schimb, atunci când ștergem fișiere, acestea sunt deconectate de la sistemul de fișiere, astfel încâtspațiul lor de stocare pe disc poate fi reciclat. Există instrumente pentru găsirea și recuperarea fișierelor șterse, dar nu există nicio garanție că vor funcționa într-o anumită situație, deoarece computerul poate recicla spațiul pe disc al fișierului imediat.

folosind rm în siguranță

Ce se întâmplă când executămrm -i thesis_backup/quotations.txt?De ce am dori această protecție atunci când folosim rm?

soluție

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

-iopțiunea va solicita Înainte (fiecare) eliminare (utilizați Y pentru a confirma ștergerea sau N pentru a păstra fișierul).Shell-ul Unix nu are un coș de gunoi, astfel încât toate fișierele eliminate vor dispărea forever.By folosind opțiunea -i, avem șansa de a verifica dacă ștergem doar fișierele pe care dorim să le eliminăm.

dacă încercăm să eliminăm directorul thesis folosind rm thesis,primim un mesaj de eroare:

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

acest lucru se întâmplă deoarece rm în mod implicit funcționează numai pe fișiere, nu directoare.

rm poate elimina un director și tot conținutul său, dacă vom folosi therecursive opțiune -r, și va face acest lucru fără nici o confirmare solicită:

$ rm -r thesis

având în vedere că nu există nicio modalitate de a prelua fișierele șterse folosind shell-ul,rm -r trebuie utilizat cu mare precauție (puteți lua în considerare adăugarea opțiunii interactiverm -r -i).

operații cu mai multe fișiere și directoare

de multe ori trebuie să copiați sau să mutați mai multe fișiere simultan. Acest lucru se poate face prin furnizarea unei liste de nume de fișiere individuale sau prin specificarea unui model de denumire folosind metacaractere.

copiați cu mai multe nume de fișiere

pentru acest exercițiu, puteți testa comenzile din Directoruldata-shell/data.

în exemplul de mai jos, ce facecp când sunt date mai multe nume de fișiere și un nume de director?

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

în exemplul de mai jos, ce face cp când sunt date trei sau mai multe nume de fișiere?

$ 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

soluție

dacă este dat mai mult de un nume de fișier urmat de un nume de director (adică directorul de destinație trebuie să fie ultimul argument),cp copiază fișierele în directorul numit.

dacă sunt date trei nume de fișiere,cp aruncă o eroare precum cea de mai jos, deoarece așteaptă un nume de director ca ultim 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’. Pe de altă parte,p*.pdb se potrivește doar cupentane.pdb șipropane.pdb, deoarece ” p „Din față doar potrivește numele fișierelor care încep cu litera „p”.

? este, de asemenea, un wildcard, dar se potrivește exact cu unul character.So ?ethane.pdb s-ar potrivi methane.pdb întrucât*ethane.pdb se potrivește atât cu ethane.pdb, cât și cu methane.pdb.

metacaracterele pot fi utilizate în combinație între ele.g. ???ane.pdb se potrivește cu trei caractere urmate deane.pdb,dândcubane.pdb ethane.pdb octane.pdb.

când shell-ul vede un wildcard, se extinde wildcard pentru a crea alist de potrivire nume de fișiere înainte de a rula comanda care a fost solicitat pentru. Ca o excepție, dacă o expresie wildcard nu se potriveșteorice fișier, Bash va trece expresia ca argument la comandăașa cum este. De exemplu, tastând ls *.pdf în directorul molecules (care conține numai fișiere cu nume care se termină cu .pdb) rezultă un mesaj de eroare că nu există niciun fișier numit *.pdf.Cu toate acestea, în general comenzi precum wc și ls vedeți listele de nume de fișiere care se potrivesc cu aceste expresii, dar nu și wildcard-urile. Este shell-ul, nu celelalte programe, care se ocupăextinderea wildcard-urilor și acesta este un alt exemplu de proiectare ortogonală.

Lista de nume de fișiere care se potrivesc unui model

atunci când executați în molecules director, care ls comanda(comenzile) va produce această ieșire?

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. Aceasta dă ethane.pdb methane.pdb octane.pdb pentane.pdb.

afișează toate fișierele ale căror nume încep cu zero sau mai multe caractere (*) urmate de literat, apoi un singur caracter (?), apoine. urmat de zero sau mai multe caractere (*). Acest lucru ne va daoctane.pdb șipentane.pdb dar nu se potrivește cu nimic care se termină înthane.pdb.

rezolvă problemele opțiunii 2 prin potrivirea a două caractere (??) întret șine. Aceasta este soluția.

afișează numai fișierele care încep cuethane..

mai multe despre metacaractere

Sam are un director care conține date de calibrare, seturi de date și descrieri ale seturilor de date:

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

înainte de a pleca într-o altă excursie, vrea să-și susțină datele și să trimită câteva seturi de date colegului ei Bob. Sam folosește următoarele comandepentru a face treaba:

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

ajutați-l pe Sam completând spațiile libere.

structura de directoare rezultată ar trebui să arate astfel

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

soluție

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

organizarea directoarelor și fișierelor

Jamie lucrează la un proiect și vede că fișierele ei nu sunt foarte bine organizate:

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

fructose.datșisucrose.datfișierele conțin ieșire din datele eianaliză. Ce comandă(comenzi) acoperită (e) în această lecție are ea nevoie pentru a rula, astfel încât comenzile de mai jos willproduce ieșirea afișată?

$ 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 .fișiere dat în directorul ‘analizat’.

reproduceți o structură de foldere

începeți un nou experiment și doriți să duplicați directorystructure din experimentul anterior, astfel încât să puteți adăuga date noi.

Să presupunem că experimentul anterior se află într-un folder numit ‘2016-05-18’,care conține un folderdata care la rândul său conține foldere denumiteraw șiprocessed care conțin fișiere de date. Scopul este de a copia structura folderuluidin 2016-05-18-data folder într-un folder numit 2016-05-20astfel încât structura de directoare finală să arate astfel:

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

care dintre următoarele seturi de comenzi ar atinge acest obiectiv?Ce ar face celelalte comenzi?

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

soluție

primele două seturi de comenzi ating acest obiectiv.Primul set utilizează căi relative pentru a crea directorul de nivel superior înaintedirectoarele.

al treilea set de comenzi va da o eroare deoarece comportamentul implicit almkdir nu va crea un subdirector al unui director inexistent: folderele de nivel intermediar trebuie create mai întâi.

al patrulea set de comenzi atinge acest obiectiv. Rețineți că opțiunea -p, urmată de o cale a unuia sau mai multor directoare, va determina mkdir să creeze orice subdirectoare intermediare, după cum este necesar.

setul final de comenzi generează directoarele ‘raw’ și ‘processed’ la același nivel ca și directorul ‘data’.

puncte cheie

  • cp copiază un fișier.

  • mkdir creează un nou director.

  • mv mută (redenumește) un fișier sau un director.

  • rm elimină (șterge) un fișier.

  • *se potrivește cu zero sau mai multe caractere într-un nume de fișier, deci *.txtse potrivește cu toate fișierele care se termină în .txt.

  • ?se potrivește cu orice caracter dintr-un nume de fișier, deci?.txtse potriveștea.txtdar nuany.txt.

  • Utilizarea cheii de Control poate fi descrisă în mai multe moduri, inclusiv Ctrl-XControl-Xși ^X.

  • shell-ul nu are un coș de gunoi: odată ce ceva este șters, este într-adevăr plecat.

  • cele mai multe nume de fișiere suntsomething.extension. Extensia nu este necesară și nu garantează nimic, dar este utilizată în mod normal pentru a indica tipul de date din fișier.

  • în funcție de tipul de muncă pe care o faceți, este posibil să aveți nevoie de un editor de text mai puternic decât Nano.