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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük