mutarea fișierelor în Linux poate părea relativ simplă, dar există mai multe opțiuni disponibile decât își dau seama majoritatea. Acest articol îi învață pe începători cum să mute fișierele în GUI și pe linia de comandă, dar explică și ce se întâmplă de fapt sub capotă și abordează opțiunile liniei de comandă pe care mulți utilizatori de experiență le-au explorat rar.
mutarea ce?
înainte de a vă deplasa în fișiere în mișcare, merită să aruncați o privire mai atentă la ceea ce se întâmplă de fapt atunci când mutați obiecte de sistem de fișiere., Când este creat un fișier, acesta este atribuit unui inode, care este un punct fix într-un sistem de fișiere care este utilizat pentru stocarea datelor. Puteți ce hărți inode într-un fișier cu comanda ls:
$ ls --inode example.txt
7344977 example.txt
când mutați un fișier, nu mutați de fapt datele de la un inode la altul, atribuiți doar obiectului fișierului un nume nou sau o cale de fișier. De fapt, un fișier își păstrează permisiunile atunci când este mutat, deoarece mutarea unui fișier nu îl schimbă sau nu îl recreează.
inodurile de fișiere și directoare nu implică niciodată moștenire și sunt dictate de sistemul de fișiere în sine., Atribuirea Inode este secvențială în funcție de momentul în care a fost creat fișierul și este complet independentă de modul în care vă organizați computerul. Un fișier „în interiorul” unui director poate avea un număr inode mai mic decât directorul părinte sau unul mai mare. De exemplu:
$ mkdir foo
$ mv example.txt foo
$ ls --inode
7476865 foo
$ ls --inode foo
7344977 example.txt
când mutați un fișier de pe un hard disk pe altul, cu toate acestea, inodul este foarte probabil să se schimbe. Acest lucru se întâmplă deoarece noile date trebuie să fie scrise pe un nou sistem de fișiere. Din acest motiv, în Linux actul de mutare și redenumire a fișierelor este literalmente aceeași acțiune., Indiferent dacă mutați un fișier într-un alt director sau în același director cu un nume nou, ambele acțiuni sunt efectuate de același program de bază.acest articol se concentrează pe mutarea fișierelor dintr-un director în altul.
Mutarea cu un mouse
GUI este un strat prietenos și, pentru majoritatea oamenilor, familiar de abstractizare pe partea de sus a unei colecții complexe de date binare. Este, de asemenea, primul și cel mai intuitiv mod de a muta fișiere pe Linux. Dacă sunteți obișnuit cu experiența desktop, într-un sens generic, atunci probabil știți deja cum să mutați fișierele în jurul hard disk-ului., În desktopul GNOME, de exemplu, acțiunea implicită atunci când trageți și plasați un fișier dintr-o fereastră în alta este să mutați fișierul în loc să îl copiați, deci este probabil una dintre cele mai intuitive acțiuni de pe desktop:
managerul de fișiere Dolphin din desktopul KDE Plasma implicit solicită utilizatorului o acțiune. Menținerea tastei Shift în timp ce trageți un fișier forțează o acțiune de mutare:
Mutarea pe linia de comandă
comanda shell destinată mutării fișierelor pe Linux, BSD, Illumos, Solaris și MacOS este mv., O comandă simplă, cu un previzibil sintaxa, mv <sursă> <destinație> mută un fișier sursă la destinație specificată, fiecare definit de o absolută sau relativă calea de fișier. Așa cum am menționat anterior, mv este o comandă atât de comună pentru utilizatorii POSIX, încât mulți dintre modificatorii săi suplimentari sunt în general necunoscuți, astfel încât acest articol aduce câțiva modificatori utili în atenția dvs., indiferent dacă sunteți nou sau cu experiență.,
nu toate comenzile mv au fost scrise de aceiași oameni, deci este posibil să aveți GNU MV, BSD mv sau Sun mv, în funcție de sistemul dvs. de operare. Opțiunile de comandă diferă de la implementare la implementare (BSD mv nu are deloc opțiuni lungi), așa că consultați pagina man man pentru a vedea ce este acceptat sau instalați versiunea preferată (acesta este luxul open source).,
Mutarea unui fișier
Pentru a muta un fișier dintr-un folder în altul cu mv, vă amintiți sintaxa mv <sursă> <destinație>. De exemplu, pentru a muta exemplul fișierului.TXT în directorul Documente:
$ touch example.txt
$ mv example.txt ~/Documents
$ ls ~/Documents
example.txt
la fel ca atunci când mutați un fișier prin glisarea și fixarea acestuia pe o pictogramă dosar, această comandă nu înlocuiește documente cu exemplu.txt. În schimb, MV detectează că Documents este un dosar și plasează exemplul.fișier txt în ea.,
puteți, de asemenea, convenabil, redenumiți fișierul ca te muta:
$ touch example.txt
$ mv example.txt ~/Documents/foo.txt
$ ls ~/Documents
foo.txt
Asta e important, deoarece acesta vă permite pentru a redenumi un fișier, chiar și atunci când nu vrei să-l mute în altă locație, astfel:
$ touch example.txt$ mv example.txt foo2.txt$ lsfoo2.txt
se Deplasează un director
mv comanda nu a diferenția un fișier dintr-un director drum cp are., Puteți muta un director sau un fișier cu aceeași sintaxă:
$ touch file.txt
$ mkdir foo_directory
$ mv file.txt foo_directory
$ mv foo_directory ~/Documents
mutarea unui fișier în siguranță
dacă copiați un fișier într-un director în care există deja un fișier cu același nume, comanda mv înlocuiește fișierul destinație cu cel pe care îl mutați, în mod implicit. Acest comportament se numește clobbering și, uneori, este exact ceea ce intenționați. Alteori, nu este.
unele distribuții alias (sau s-ar putea scrie propriul dvs.) mv la mv –interactive, care vă solicită confirmarea. Unii nu., Oricum, puteți utiliza interactiv sau opțiunea-i pentru a se asigura că mv solicită confirmarea în cazul în care două fișiere cu același nume sunt în conflict:
$ mv --interactive example.txt ~/Documents
mv: overwrite '~/Documents/example.txt'?
Dacă nu doriți pentru a interveni manual, utilizați-nu-rescrie sau -n loc. Acest steag respinge în tăcere acțiunea de mutare în caz de conflict. În acest exemplu, un fișier numit exemplu.,txt există deja în ~/Documente, ca să nu fie mutat din directorul curent conform instrucțiunilor:
$ mv --no-clobber example.txt ~/Documents
$ ls
example.txt
se Deplasează cu backup-uri
Dacă sunteți folosind GNU mv, există opțiuni de backup oferă un alt mijloc de siguranță în mișcare. Pentru a crea o copie de rezervă a oricărui fișier de destinație în conflict, utilizați opțiunea-b:
$ mv -b example.txt ~/Documents
$ ls ~/Documents
example.txt example.txt~
acest steag asigură că mv finalizează acțiunea de mutare, dar protejează și orice fișier preexistent din locația de destinație.,
o altă opțiune GNU backup este –backup, care ia un argument care definește modul în care fișierul de rezervă este numit:
- existent: dacă copiile de rezervă numerotate există deja în destinație, atunci este creată o copie de rezervă numerotată. În caz contrar, se utilizează schema simplă.
- none: nu creează o copie de rezervă chiar dacă –backup este setat. Această opțiune este utilă pentru a suprascrie un alias mv care stabilește opțiunea de rezervă.
- numerotat: adaugă fișierul destinație cu un număr.,
- simplu: adaugă fișierul de destinație cu un~, care poate fi ascuns în mod convenabil din vizualizarea zilnică cu opțiunea — ignore-backups pentru LS.
de exemplu:
o schemă implicită de backup poate fi setată cu variabila de mediu VERSION_CONTROL. Puteți seta variabile de mediu în dvs. ~/.
opțiunea –backup respectă în continuare opțiunea –interactive sau-i, deci vă solicită să suprascrieți fișierul destinație, chiar dacă creează o copie de rezervă înainte de a face acest lucru:
puteți suprascrie-i cu opțiunea –force sau-F.,
opțiunea –backup nu este disponibilă în BSD MV.când mutați mai multe fișiere, mv tratează directorul final numit ca destinație:
$ mv foo bar baz ~/Documents
$ ls ~/Documents
foo bar baz
Dacă elementul final nu este un director, MV returnează o eroare:
$ mv foo bar baz
mv: target 'baz' is not a directory
sintaxa GNU mv este destul de flexibilă., Dacă sunteți în imposibilitatea de a oferi mv comanda cu destinație ca ultim argument, utilizare de –țintă-director sau -t opțiune:
$ mv --target-directory=~/Documents foo bar baz
$ ls ~/Documents
foo bar baz
Acest lucru este util mai ales atunci când construirea mv comenzi de ieșire a unor alte comandă, cum ar fi comanda, xargs, sau GNU Paralel.cu GNU mv, puteți defini o acțiune de mutare bazată pe faptul dacă fișierul mutat este mai nou decât fișierul de destinație pe care l-ar înlocui., Această opțiune este posibilă cu opțiunea — update sau-u și nu este disponibilă în BSD mv:
Acest rezultat se bazează exclusiv pe timpul de modificare a fișierelor, nu pe o diferență a celor două fișiere, deci folosiți-l cu grijă. Este ușor să păcălești mv cu o simplă comandă tactilă:
evident, aceasta nu este cea mai inteligentă funcție de actualizare disponibilă, dar oferă protecție de bază împotriva suprascrierii datelor recente.există mai multe modalități de a muta date decât doar comanda mv, dar ca program implicit pentru lucrare, mv este o opțiune universală bună., Acum că știți ce opțiuni aveți la dispoziție, puteți utiliza mv mai inteligent decât oricând.