Flytting av filer i Linux kan virke relativt grei, men det finnes flere alternativer enn de fleste er klar over. Denne artikkelen lærer nybegynnere hvordan flytte filer i GUI og kommandolinje, men som også forklarer hva som faktisk skjer under panseret, og adresser kommandolinjen valg som mange opplever brukere har sjelden utforsket.
Flytte hva?
Før hulene i flytte-filer, er det verdt å ta en nærmere titt på hva som faktisk skjer når du flytter filen systemfiler objekter., Når en fil er opprettet, det er tilordnet til en inode, som er et fast punkt i et filsystem som brukes for lagring av data. Du kan hva inode kart til en fil med ls-kommandoen:
$ ls --inode example.txt
7344977 example.txt
Når du flytter en fil, du trenger faktisk ikke flytte data fra en inode til en annen, du bare tilordne fil-objektet en ny eller filbane. Faktisk, en fil beholder sin tillatelser når det er flyttet, fordi du flytter en fil ikke endre eller re-opprette det.
Fil-og katalog inodes aldri antyde arv og er diktert av filsystemet selv., Inode oppdrag er sekvensiell basert på når filen ble opprettet, og er helt uavhengig av hvordan du organisere din datamaskin. En fil «inne» i en katalog kan ha en lavere inode antall enn sine overordnede katalogen, eller et høyere nivå. For eksempel:
$ mkdir foo
$ mv example.txt foo
$ ls --inode
7476865 foo
$ ls --inode foo
7344977 example.txt
Når du flytter en fil fra en harddisk til en annen, men inode er svært sannsynlig å endre. Dette skjer fordi nye data må være skrevet på et nytt filsystem. For denne grunn, i Linux lov å flytte og endre navn på filer er bokstavelig talt den samme handlingen., Om du vil flytte en fil til en annen katalog eller til den samme katalogen med et nytt navn, både handlinger som er utført av de samme underliggende programmet.
Denne artikkelen fokuserer på å flytte filer fra en katalog til en annen.
du går med en mus
GUI er et vennlig og, for de fleste mennesker er kjent laget av abstraksjon på toppen av en kompleks samling av binære data. Det er også den første og mest intuitive måten å flytte filer på Linux. Hvis du er vant til skrivebordet opplevelse, i en generell forstand, så har du sannsynligvis allerede vet hvordan å flytte filer rundt på harddisken., I GNOME skrivebordet, for eksempel som standard når dra og slippe en fil fra ett vindu til et annet er å flytte filen i stedet for å kopiere den, så det er trolig en av de mest intuitive handlinger på skrivebordet:
Dolphin filbehandling i KDE Plasma-skrivebordet standarder for å be brukeren om en handling. Hold nede Skift-tasten mens du drar en fil styrker et trekk følgende:
du går på kommandolinjen
shell-kommando som er ment for å flytte filer på Linux, BSD, Illumos, Solaris, og MacOS er mv., En enkel kommando med en forutsigbar syntaks, mv <kilde> <mål> går en kilde filen til den oppgitte destinasjonen, hver definert av enten en absolutt eller relativ filbanen. Som nevnt før, mv er en felles kommando for POSIX-brukere som mange av sine ekstra modifikatorer er generelt ukjent, så denne artikkelen gir noen nyttige modifikatorer til din oppmerksomhet om du er ny eller erfaren.,
Ikke alle mv kommandoer er skrevet av de samme personene, skjønt, så du kan ha GNU mv, BSD mv, eller Solen mv, avhengig av ditt operativsystem. Kommandoen alternativer varierer fra gjennomføring til gjennomføring (BSD mv har ingen lang valg i det hele tatt), så kan du se din mv man-siden for å se hva som er støttet, eller installere din foretrukne versjonen i stedet (som er den luksus av open source).,
du Flytter en fil
for Å flytte en fil fra en mappe til en annen med mv, husk syntaksen mv <kilde> <mål>. For eksempel, for å flytte filen eksempel.txt-til Dokumenter-mappen:
$ touch example.txt
$ mv example.txt ~/Documents
$ ls ~/Documents
example.txt
Akkurat som når du flytter en fil ved å dra og slippe det på en mappe ikonet, denne kommandoen erstatter ikke Dokumenter med eksempel.txt. I stedet, mv oppdager at Dokumenter er en mappe, og steder som eksempel.txt-fil inn i det.,
Du kan også gunstig til, gi nytt navn til filen som du flytte den:
$ touch example.txt
$ mv example.txt ~/Documents/foo.txt
$ ls ~/Documents
foo.txt
Det er viktig fordi det gjør det mulig for deg å endre navn på en fil, selv når du ikke ønsker å flytte den til en annen plassering, for eksempel slik:
$ touch example.txt$ mv example.txt foo2.txt$ lsfoo2.txt
Flytte en mappe
De mv kommandoen ikke skille en fil fra en mappe på den måten cp gjør., Du kan flytte en katalog eller en fil med samme syntaks:
$ touch file.txt
$ mkdir foo_directory
$ mv file.txt foo_directory
$ mv foo_directory ~/Documents
du Flytter en fil trygt
Hvis du kopierer du en fil til en mappe der en fil med samme navn allerede eksisterer, mv kommandoen erstatter målfilen med den du er i bevegelse, som standard. Dette problemet kalles jobben, og noen ganger er det akkurat hva du har tenkt. Andre ganger er det ikke.
Noen distribusjoner alias (eller du kan skrive inn din egen) mv for å mv –interaktive, som ber deg om å bekrefte. Noen gjør det ikke., Uansett, kan du bruke –interaktive eller -jeg muligheten til å sikre at mv ber om bekreftelse i tilfelle at to filer med samme navn, som er i konflikt:
$ mv --interactive example.txt ~/Documents
mv: overwrite '~/Documents/example.txt'?
Hvis du ikke ønsker å gripe inn manuelt, kan du bruke-ingen-antrekket eller -n i stedet. Dette flagget stille avviser flytte handlingen i tilfelle av konflikt. I dette eksempel en fil som heter eksempel.,txt allerede finnes i ~/Documents, så det ikke blir flyttet fra gjeldende mappe som beskrevet:
$ mv --no-clobber example.txt ~/Documents
$ ls
example.txt
du går med sikkerhetskopier
Hvis du bruker GNU mv, det finnes alternativer for sikkerhetskopiering tilbyr en annen måte trygt å bevege seg. For å opprette en sikkerhetskopi av alle motstridende mål fil, bruker -b alternativ:
$ mv -b example.txt ~/Documents
$ ls ~/Documents
example.txt example.txt~
Dette flagget sikrer at mv fullfører flytte handlingen, men også beskytter noen pre-eksisterende fil på den nye plasseringen.,
en Annen GNU backup alternativet er –backup, som tar et argument for å definere hvordan backup filen heter:
- eksisterende: Hvis nummerert sikkerhetskopier allerede finnes i målmappen, og deretter en nummerert backup er opprettet. Ellers er den enkle ordningen er brukt.
- ingen: ikke opprett en sikkerhetskopi selv om –backup er satt. Dette alternativet er nyttig for å overstyre en mv alias som setter backup alternativet.
- nummerert: Tilføyer reisemål fil med et nummer.,
- enkel: Føyer til målfilen med en ~, som enkelt kan være skjult fra din daglige vise med –ignore-backup alternativet for ls.
For eksempel slik:
En standard backup ordningen kan stilles inn med miljøvariabelen VERSION_CONTROL. Du kan sette miljøvariabler i ~/.bashrc fil eller en dynamisk før kommando:
–backup alternativet fortsatt respekterer –interaktive eller -jeg valget, slik at det fortsatt blir du bedt om å overskrive målfilen, selv om det skaper en sikkerhetskopi før du gjør slik:
Du kan overstyre -jeg med –force eller -f alternativet.,
–backup alternativet er ikke tilgjengelig i BSD mv.
Flytte mange filer på en gang
Når du flytter flere filer, mv behandler siste katalog med navnet som destinasjon:
$ mv foo bar baz ~/Documents
$ ls ~/Documents
foo bar baz
Hvis det siste elementet er ikke en katalog, mv returnerer en feil:
$ mv foo bar baz
mv: target 'baz' is not a directory
syntaksen av GNU mv er ganske fleksibel., Hvis du er i stand til å gi mv kommando med de mål som siste argument, bruk –mål-katalogen eller -t-alternativet:
$ mv --target-directory=~/Documents foo bar baz
$ ls ~/Documents
foo bar baz
Dette er spesielt nyttig når du lager mv kommandoer fra produksjon av noen andre kommandoen, for eksempel kommandoen finn, xargs, eller GNU Parallelt.
Beveger seg basert på mtime
Med GNU mv, kan du angi en move action basert på om filen blir flyttet er nyere enn målfilen det ville erstatte., Dette alternativet er mulig med –update eller -u-alternativet, og er ikke tilgjengelig i BSD mv:
Dette resultatet er utelukkende basert på filene » modifikasjon tid, ikke på en diff av to filer, så bruk den med omhu. Det er lett å lure mv med en ren touch-kommandoen:
Selvfølgelig, dette er ikke den mest intelligente update-funksjonen tilgjengelig, men det tilbyr grunnleggende beskyttelse mot overskriving av nyere data.
Bevegelse
Det er flere måter å flytte data enn bare mv kommando, men som standardprogram for jobben, mv er en god universal alternativ., Nå som du vet hvilke alternativer du har, kan du bruke mv smartere enn noen gang før.