flytning af filer i Linu. kan virke relativt ligetil, men der er flere muligheder, end de fleste er klar over. Denne artikel lærer begyndere, hvordan man flytter filer i GUI og på kommandolinjen, men forklarer også, hvad der faktisk sker under hætten, og adresserer kommandolinjeindstillinger, som mange oplever, at brugere sjældent har udforsket.
flytter hvad?
før du går i gang med at flytte filer, er det værd at se nærmere på, hvad der faktisk sker, når du flytter filsystemobjekter., Når en fil oprettes, tildeles den en inode, som er et fast punkt i et filsystem, der bruges til datalagring. Du kan hvad inode maps til en fil med kommandoen ls:
$ ls --inode example.txt
7344977 example.txt
Når du flytter en fil, flytter du faktisk ikke dataene fra en inode til en anden, du tildeler kun filobjektet et nyt navn eller filsti. Faktisk bevarer en fil sine tilladelser, når den flyttes, fordi flytning af en fil ikke ændrer eller genopretter den.
fil-og mappeinoder indebærer aldrig arv og dikteres af selve filsystemet., Inode tildeling er sekventiel baseret på, hvornår filen blev oprettet, og er helt uafhængig af, hvordan du organiserer din computer. En fil “inde” i en mappe kan have et lavere inodenummer end dets overordnede mappe eller en højere. 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 anden, er det dog meget sandsynligt, at inoden vil ændre sig. Dette sker, fordi de nye data skal skrives på et nyt filsystem. Af denne grund er handlingen med at flytte og omdøbe filer i Linu.bogstaveligt talt den samme handling., Uanset om du flytter en fil til et andet bibliotek eller til det samme bibliotek med et nyt navn, udføres begge handlinger af det samme underliggende program.
Denne artikel fokuserer på at flytte filer fra en mappe til en anden.
flytning med en mus
GUI er en venlig og, for de fleste mennesker, velkendt lag af abstraktion på toppen af en kompleks samling af binære data. Det er også den første og mest intuitive måde at flytte filer på Linu.. Hvis du er vant til skrivebordsoplevelsen, i generisk forstand, ved du sandsynligvis allerede, hvordan du flytter filer rundt på din harddisk., I GNOME-skrivebordet, for eksempel, er standardhandlingen, når du trækker og slipper en fil fra et vindue til et andet, at flytte filen i stedet for at kopiere den, så det er sandsynligvis en af de mest intuitive handlinger på skrivebordet:
Dolphin-filhåndteringen i KDE Plasma-skrivebordet er som standard at bede brugeren om en handling. Hold Shift-tasten nede, mens du trækker en fil, tvinger en bevægelseshandling:
Flytning på kommandolinjen
shell-kommandoen beregnet til at flytte filer på Linu., BSD, Illumos, Solaris og MacOS er mv., En simpel kommando med en forudsigelig syntaks, mv <kilde> <destination> flytter en kilde filen til den angivne destination, hver defineret ved enten en absolut eller relativ fil sti. Som nævnt før er mv en sådan fælles kommando for posi. – brugere, at mange af dens yderligere modifikatorer generelt er ukendte, så denne artikel bringer et par nyttige modifikatorer til din opmærksomhed, uanset om du er ny eller erfaren.,
ikke alle mv-kommandoer blev skrevet af de samme personer, så du kan have GNU mv, BSD mv eller Sun mv afhængigt af dit operativsystem. Kommandoindstillinger adskiller sig fra implementering til implementering (BSD mv har overhovedet ingen lange indstillinger), så henvis til din mv-man-side for at se, hvad der understøttes, eller installer din foretrukne version i stedet (det er luksusen ved open source).,
Flytter en fil
for At flytte en fil fra én mappe til en anden med mv, skal du huske syntaks mv <kilde> <destination>. For eksempel at flytte fileksemplet.t .t i din dokumentmappe:
$ touch example.txt
$ mv example.txt ~/Documents
$ ls ~/Documents
example.txt
ligesom når du flytter en fil ved at trække og slippe den til et mappeikon, erstatter denne kommando ikke dokumenter med eksempel.t .t. I stedet opdager mv, At dokumenter er en mappe og placerer eksemplet.t .t fil ind i det.,
Du kan også bekvemt, at omdøbe den fil, som du flytter den:
$ touch example.txt
$ mv example.txt ~/Documents/foo.txt
$ ls ~/Documents
foo.txt
Det er vigtigt, fordi det giver dig mulighed for at omdøbe en fil, selv når du ikke ønsker at flytte den til en anden placering, som så:
$ touch example.txt$ mv example.txt foo2.txt$ lsfoo2.txt
du Flytter en mappe
mv kommandoen ikke skelne en fil fra en mappe på den måde, cp gør., Du kan flytte en mappe eller en fil med samme syntaks:
$ touch file.txt
$ mkdir foo_directory
$ mv file.txt foo_directory
$ mv foo_directory ~/Documents
Flytning af en fil, sikkert
Hvis du kopiere en fil til en mappe, hvor en fil med det samme navn allerede eksisterer, mv kommandoen erstatter den destination fil med en, du bevæger dig i, som standard. Denne adfærd kaldes clobbering, og nogle gange er det præcis, hvad du har til hensigt. Andre gange er det ikke.
nogle distributioner alias (eller du kan skrive din egen) mv til mv –interactive, som beder dig om bekræftelse. Nogle gør det ikke., Enten måde, kan du bruge –interactive eller -jeg mulighed for at sikre, at mv anmoder om bekræftelse i tilfælde af, at to filer med samme navn er i konflikt:
$ mv --interactive example.txt ~/Documents
mv: overwrite '~/Documents/example.txt'?
Hvis du ikke ønsker at manuelt gribe ind, skal du bruge –no-tæske-eller -n i stedet for. Dette flag afviser lydløst Flytningen i tilfælde af konflikt. I dette eksempel, en fil med navnet eksempel.,t .t findes allerede i ~/Documents, så det bliver ikke flyttet fra den aktuelle mappe som instrueret:
$ mv --no-clobber example.txt ~/Documents
$ ls
example.txt
flytning med sikkerhedskopier
Hvis du bruger GNU mv, er der sikkerhedskopieringsmuligheder, der tilbyder et andet middel til sikker bevægelse. For at oprette en sikkerhedskopi af enhver modstridende destinationsfil skal du bruge indstillingen-b:
$ mv -b example.txt ~/Documents
$ ls ~/Documents
example.txt example.txt~
dette flag sikrer, at mv afslutter flytningshandlingen, men beskytter også enhver allerede eksisterende fil på destinationsstedet.,
en anden GNU backup-indstilling er –backup, som tager et argument, der definerer, hvordan backupfilen hedder:
- eksisterende: hvis der allerede findes nummererede sikkerhedskopier i destinationen, oprettes en nummereret sikkerhedskopi. Ellers bruges den enkle ordning.
- none: opretter ikke en sikkerhedskopi, selvom –backup er indstillet. Denne indstilling er nyttig til at tilsidesætte et mv-alias, der indstiller backup-indstillingen.
- nummereret: tilføjer destinationsfilen med et nummer.,
- simple: tilføjer destinationsfilen med en~, som nemt kan skjules fra din daglige visning med indstillingen — ignore-backups til ls.
For eksempel:
en standard backup ordning kan indstilles med miljøvariablen VERSION_CONTROL. Du kan indstille miljøvariabler i din ~/.bashrc-fil eller Dynamisk før din kommando:
indstillingen –backup respekterer stadig indstillingen –interactive eller-i, så det beder dig stadig om at overskrive destinationsfilen, selvom den opretter en sikkerhedskopi, før du gør det:
Du kan tilsidesætte-i med indstillingen –force eller-f.,
indstillingen –backup er ikke tilgængelig i BSD mv.
at Flytte mange filer på en gang
Når du flytter flere filer, mv behandler den endelige mappe med navnet som destination:
$ mv foo bar baz ~/Documents
$ ls ~/Documents
foo bar baz
Hvis sidste element er ikke en mappe, mv returnerer en fejl:
$ mv foo bar baz
mv: target 'baz' is not a directory
syntaks af GNU mv er temmelig fleksibel., Hvis du ikke er i stand til at give mv kommandoen med destination som det sidste argument, skal du bruge –target-directory-eller-t-indstilling:
$ mv --target-directory=~/Documents foo bar baz
$ ls ~/Documents
foo bar baz
Dette er især nyttigt, når der bygges mv kommandoer fra output af en anden kommando, som finder den kommando, xargs, eller GNU Parallel.
flytning baseret på mtime
med GNU mv kan du definere en bevægelseshandling baseret på, om filen, der flyttes, er nyere end den destinationsfil, den ville erstatte., Denne indstilling er mulig med indstillingen –update eller-u og er ikke tilgængelig i BSD mv:
dette resultat er udelukkende baseret på filernes ændringstid, ikke på en diff af de to filer, så brug det med omhu. Det er let at narre mv med en ren berøringskommando:
det er klart, at dette ikke er den mest intelligente opdateringsfunktion, der er tilgængelig, men den giver grundlæggende beskyttelse mod overskrivning af nylige data.
flytning
Der er flere måder at flytte data på end blot mv-kommandoen, men som standardprogram til jobbet er mv En god universel mulighed., Nu hvor du ved, hvilke muligheder du har til rådighed, kan du bruge mv smartere end nogensinde før.