a fájlok mozgatása Linuxban viszonylag egyszerűnek tűnhet, de több lehetőség áll rendelkezésre, mint a legtöbb megvalósítani. Ez a cikk azt tanítja, kezdők, hogyan kell mozogni a fájlokat a GUI-t, meg a parancssorban, de azt is megmagyarázza, mi történik valójában a motorháztető alatt, valamint a címek parancssori opciók hogy sok tapasztalat felhasználók ritkán vizsgálni.
mozgó mi?
a fájlok áthelyezése előtt érdemes közelebbről megvizsgálni, hogy mi történik valójában a fájlrendszer objektumainak mozgatásakor., Amikor létrehoz egy fájlt, egy inódhoz van rendelve, amely egy rögzített pont az adattároláshoz használt fájlrendszerben. Akkor mi inode térképek egy fájlt az ls paranccsal:
$ ls --inode example.txt
7344977 example.txt
ha áthelyez egy fájlt, akkor valójában nem mozgatni az adatokat az egyik inode a másikra, akkor csak rendelni a fájl objektum egy új nevet vagy fájl elérési útját. Valójában egy fájl megőrzi engedélyeit, amikor áthelyezi, mert a fájl mozgatása nem változtatja meg vagy nem hozza létre újra.
fájl és könyvtár inodes soha nem jelenti azt, öröklés és diktálja a fájlrendszer maga., Inode hozzárendelés szekvenciális alapján, amikor a fájl jött létre, és teljesen független attól, hogyan szervezi a számítógépet. Egy könyvtár “belsejében” lévő fájlnak alacsonyabb inode-száma lehet, mint a szülő könyvtárának, vagy egy magasabb. Például:
$ mkdir foo
$ mv example.txt foo
$ ls --inode
7476865 foo
$ ls --inode foo
7344977 example.txt
egy fájl egyik merevlemezről a másikra történő mozgatásakor az inode nagyon valószínű, hogy megváltozik. Ez azért történik, mert az új adatokat egy új fájlrendszerre kell írni. Ezért Linuxban a fájlok áthelyezése és átnevezése szó szerint ugyanaz a művelet., Akár áthelyez egy fájlt egy másik könyvtárba, akár ugyanabba a könyvtárba egy új névvel, mindkét műveletet ugyanaz a mögöttes program hajtja végre.
Ez a cikk a fájlok egyik könyvtárból a másikba történő áthelyezésére összpontosít.
mozgó egérrel
a GUI egy barátságos, a legtöbb ember számára, ismerős réteg absztrakció tetején egy komplex gyűjteménye bináris adatok. Ez egyben az első és legintuitívabb módja a fájlok Linuxon történő mozgatásának. Ha megszokta az asztali élményt, általános értelemben, akkor valószínűleg már tudja, hogyan kell fájlokat mozgatni a merevlemez körül., A GNOME asztalon például az alapértelmezett művelet, amikor egy fájlt az egyik ablakból a másikba húz, a fájl áthelyezése, nem pedig másolása, tehát valószínűleg ez az egyik leginkább intuitív művelet az asztalon:
a KDE Plasma desktop Dolphin fájlkezelője alapértelmezés szerint felszólítja a felhasználót egy műveletre. Tartja a Shift billentyűt, miközben húzza a fájlt erők egy lépés művelet:
tovább a parancssorban
A shell parancs szánt fájlok áthelyezése a Linux, BSD, Illumos, Solaris, valamint a MacOS mv., Egy egyszerű parancs kiszámítható szintaxissal, MV <forrás destination áthelyez egy forrásfájlt a megadott rendeltetési helyre, mindegyik abszolút vagy relatív fájl elérési útján definiálva. Mint korábban említettük, az mv olyan közös parancs a POSIX felhasználók számára, hogy számos további módosítója általában ismeretlen, így ez a cikk néhány hasznos módosítót hoz a figyelmébe, függetlenül attól, hogy új vagy tapasztalt-e.,
nem minden mv parancsokat írt ugyanaz az ember, bár, így lehet, hogy GNU mv, BSD mv, vagy Sun MV, attól függően, hogy az operációs rendszer. A Parancsbeállítások a végrehajtástól a végrehajtásig különböznek (a BSD mv-nek egyáltalán nincs hosszú lehetősége), ezért olvassa el az mv man oldalt, hogy megnézze, mi támogatott, vagy telepítse helyette a kívánt verziót (ez a nyílt forráskódú luxus).,
fájl áthelyezése
egy fájl áthelyezéséhez az egyik mappából a másikba az mv-vel, ne feledje az MV source div>. Például a fájl példa áthelyezéséhez.txt a dokumentumok könyvtárába:
$ touch example.txt
$ mv example.txt ~/Documents
$ ls ~/Documents
example.txt
csakúgy, mint amikor egy fájlt egy mappa ikonra húzva áthelyez, ez a parancs nem helyettesíti a dokumentumokat példával.txt. Ehelyett az MV észleli, hogy a dokumentumok egy mappa, és elhelyezi a példát.txt fájlt bele.,
Azt is, kényelmesen, nevezze át a fájlt mozgatni:
$ touch example.txt
$ mv example.txt ~/Documents/foo.txt
$ ls ~/Documents
foo.txt
Ez azért fontos, mert lehetővé teszi, hogy nevezze át a fájlt akkor is, ha nem akarom, hogy helyezze át egy másik helyre, például így:
$ touch example.txt$ mv example.txt foo2.txt$ lsfoo2.txt
Mozgó könyvtár
A mv parancs nem különbözteti meg a fájlt egy könyvtárba, ahogy cp jelent., Áthelyezhet egy könyvtárat vagy egy fájlt ugyanazzal a szintaxissal:
$ touch file.txt
$ mkdir foo_directory
$ mv file.txt foo_directory
$ mv foo_directory ~/Documents
fájl biztonságos áthelyezése
Ha egy fájlt átmásol egy olyan könyvtárba, ahol már létezik azonos nevű fájl, az mv parancs alapértelmezés szerint felváltja a célfájlt azzal, amelyet mozgat. Ezt a viselkedést clobbingnak hívják,néha pontosan ezt akarja. Máskor nem az.
egyes disztribúciók alias (vagy írhat saját) mv-t az MV-interactive-ra, amely megerősítést kér. Néhányan nem., Akárhogy is, használhatja a — interactive vagy-i opciót annak biztosítására, hogy az mv megerősítést kérjen abban az esetben, ha két azonos nevű fájl ütközik:
$ mv --interactive example.txt ~/Documents
mv: overwrite '~/Documents/example.txt'?
ha nem akar manuálisan beavatkozni, használja a –No-clobber vagy-n parancsot. Ez a zászló csendben elutasítja a lépés akció konfliktus esetén. Ebben a példában egy példa nevű fájl.,txt már létezik a ~/Documents, így nem költözött a jelenlegi könyvtár, ahogy kérte:
$ mv --no-clobber example.txt ~/Documents
$ ls
example.txt
Mozog a biztonsági
Ha a GNU mv, vannak biztonsági lehetőségeket kínál egy olyan biztonságban mozog. Az ütköző célfájl biztonsági másolatának létrehozásához használja a-b opciót:
$ mv -b example.txt ~/Documents
$ ls ~/Documents
example.txt example.txt~
Ez a zászló biztosítja, hogy az mv befejezze a áthelyezési műveletet, de védi a rendeltetési hely bármely meglévő fájlját is.,
egy másik GNU biztonsági mentési lehetőség a — backup, amely egy argumentumot vesz fel, amely meghatározza a biztonsági mentési fájl nevét:
- létező: ha a számozott biztonsági mentések már léteznek a rendeltetési helyen, akkor számozott biztonsági mentés jön létre. Ellenkező esetben az egyszerű sémát használják.
- none: nem hoz létre biztonsági másolatot akkor sem, ha a –backup be van állítva. Ez az opció hasznos a biztonsági mentési lehetőséget beállító MV alias felülbírálásához.
- számozott: a célfájlt egy számmal egészíti ki.,
- egyszerű: a célfájlt egy ~ – vel csatolja, amely kényelmesen elrejthető a napi nézetből a — ignore-backups opcióval az ls-hez.
például:
alapértelmezett biztonsági mentési sémát lehet beállítani a VERSION_CONTROL környezeti változóval. Beállíthatjuk környezeti változók a~/.bashrc fájl vagy dinamikusan a parancs előtt:
a –backup opció továbbra is tiszteletben tartja a — interactive vagy-i opciót, így továbbra is felszólítja a célfájl felülírására, annak ellenére, hogy biztonsági másolatot készít, mielőtt ezt megtenné:
felülbírálhatja-i-t a –force vagy-f opcióval.,
a — backup opció nem érhető el a BSD mv-ben.
sok fájl egyszerre mozgatása
Több fájl mozgatásakor az mv a végső könyvtárat rendeltetési helyként kezeli:
$ mv foo bar baz ~/Documents
$ ls ~/Documents
foo bar baz
Ha a végső elem nem könyvtár, az mv hibát ad vissza:
$ mv foo bar baz
mv: target 'baz' is not a directory
a GNU mv szintaxisa meglehetősen rugalmas., Ha nem tudja megadni az MV parancsot a célállomással végső argumentumként, használja a — target-directory vagy-t opciót:
$ mv --target-directory=~/Documents foo bar baz
$ ls ~/Documents
foo bar baz
Ez különösen akkor hasznos, ha MV parancsokat készít valamilyen más parancs kimenetéről, például a find parancsról, xargs, vagy GNU Parallel.
mozgó alapuló mtime
a GNU mv, megadhat egy lépés művelet alapján, hogy a fájl mozgatása újabb, mint a cél fájl lenne cserélni., Ez a lehetőség a — update vagy-u opcióval lehetséges, és nem érhető el a BSD mv-ben:
Ez az eredmény kizárólag a fájlok módosítási idején alapul, nem pedig a két fájl diff-jén, ezért óvatosan használja. Könnyű becsapni az mv-t egy egyszerű érintőképernyős paranccsal:
nyilvánvaló, hogy ez nem a legintelligensebb frissítési funkció, de alapvető védelmet nyújt a legutóbbi adatok felülírása ellen.
Moving
az adatok mozgatásának több módja van, mint az mv parancs, de a feladat alapértelmezett programjaként az mv egy jó univerzális lehetőség., Most, hogy tudja, milyen lehetőségek állnak rendelkezésre, használhatja MV okosabb, mint valaha.