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.
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/
).nu începeți numele cu
-
(liniuță).comenzile tratează nume începând cu
-
ca opțiuni.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 numitnotepad
care poate fi rulat din linia de comandă în același mod canano
î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
).
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 utilizaControl-G
pentru a obține ajutor șiControl-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
ce a făcut comanda
touch
?Când te uiți la directorul curent folosind exploratorul de fișiere GUI, fișierul apare?utilizați
ls -l
pentru a inspecta fișierele. Cât de mare estemy_file.txt
?când doriți să creați un fișier în acest fel?
soluție
touch
comanda generează un nou fișier numitmy_file.txt
în directorul curent. Puteți observa acest fișier nou generat tastândls
la promptul liniei de comandă.my_file.txt
poate fi vizualizat și în exploratorul de fișiere yourGUI.când inspectați fișierul cu
ls -l
, rețineți că dimensiuneamy_file.txt
este de 0 octeți. Cu alte cuvinte, nu conține date.Dacă deschidețimy_file.txt
folosind editorul de text, acesta este gol.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șiermythesis
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,.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 ca
whale.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 thesis
director avem un fișier draft.txt
care 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?
cp statstics.txt statistics.txt
mv statstics.txt statistics.txt
mv statstics.txt .
cp statstics.txt .
soluție
- 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.
- Da, acest lucru ar funcționa pentru a redenumi fișierul.
- 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.
- 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
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
.A doua linie mută (mv
) fișierulproteins.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.
- Nu, vezi explicația de mai sus.
proteins-saved.dat
se află la/Users/jamie
- Da
- nu, vezi explicația de mai sus.
proteins.dat
este localizat la/Users/jamie/data/recombined
- 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ăm
rm -i thesis_backup/quotations.txt
?De ce am dori această protecție atunci când folosimrm
?soluție
$ rm: remove regular file 'thesis_backup/quotations.txt'? y
-i
opț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
folosindrm 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 Directorul
data-shell/data
.în exemplul de mai jos, ce face
cp
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 thedata-shell/molecules
directory:*.pdb
matchesethane.pdb
propane.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 potrivimethane.pdb
întrucât*ethane.pdb
se potrivește atât cuethane.pdb
, cât și cumethane.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 directorulmolecules
(care conține numai fișiere cu nume care se termină cu.pdb
) rezultă un mesaj de eroare că nu există niciun fișier numitwc
șils
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, carels
comanda(comenzile) va produce această ieșire?
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
. 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 cu
ethane.
.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.dat
fiș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
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 .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 folder
data
care la rândul său conține foldere denumiteraw
șiprocessed
care conțin fișiere de date. Scopul este de a copia structura folderuluidin2016-05-18-data
folder într-un folder numit2016-05-20
astfel î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 al
mkdir
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 determinamkdir
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*.txt
se potrivește cu toate fișierele care se termină în.txt
.
?
se potrivește cu orice caracter dintr-un nume de fișier, deci?.txt
se potriveștea.txt
dar nuany.txt
.Utilizarea cheii de Control poate fi descrisă în mai multe moduri, inclusiv
Ctrl-X
Control-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 sunt
something.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.
Leave a Reply