GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Linux mv vysvětlený pro začátečníky (8 příkladů)

Stejně jako cp pro kopírování a rm pro mazání nabízí Linux také vestavěný příkaz pro přesun a přejmenování souborů. Jmenuje se mv . V tomto článku probereme základy tohoto nástroje příkazového řádku pomocí snadno srozumitelných příkladů. Vezměte prosím na vědomí, že všechny příklady použité v tomto tutoriálu byly testovány na Ubuntu 20.04 LTS.

Příkaz Linux mv

Jak již bylo zmíněno, příkaz mv v Linuxu slouží k přesunu nebo přejmenování souborů. Následuje syntaxe příkazu:

mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

A zde je to, co o tom říká manuálová stránka:

Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

Následující příklady ve stylu otázek a odpovědí vám poskytnou lepší představu o tom, jak tento nástroj funguje.

O1. Jak používat příkaz mv v Linuxu?

Pokud chcete pouze přejmenovat soubor, můžete použít příkaz mv následujícím způsobem:

mv [filename] [new_filename]

Například:

mv names.txt fullnames.txt

Podobně, pokud je požadavkem přesunout soubor do nového umístění, použijte příkaz mv následujícím způsobem:

mv [název souboru] [cíl-adresář]

Například:

mv fullnames.txt /home/himanshu/Downloads

Q2. Jak zajistit, aby se před přepsáním zobrazila výzva mv?

Ve výchozím nastavení se příkaz mv nezobrazí, když operace zahrnuje přepsání existujícího souboru. Například následující snímek obrazovky ukazuje, že existující full_names.txt byl přepsán souborem mv bez jakéhokoli varování nebo upozornění.

Pokud však chcete, můžete vynutit zobrazení výzvy mv pomocí -i možnost příkazového řádku.

mv -i [název_souboru] [název nového_souboru]

Výše uvedené snímky obrazovky tedy jasně ukazují, že -i vede k tomu, že mv požádá o povolení uživatele před přepsáním existujícího souboru. Vezměte prosím na vědomí, že v případě, že chcete výslovně určit, že nechcete, aby se před přepsáním zobrazovala výzva mv, použijte -f možnost příkazového řádku.

O3. Jak zajistit, aby mv nepřepsal existující soubor?

K tomu musíte použít -n možnost příkazového řádku.

mv -n [filename] [new_filename]

Následující snímek obrazovky ukazuje, že operace mv nebyla úspěšná, protože soubor s názvem 'full_names.txt' již existoval a příkaz měl v sobě volbu -n.

Poznámka:

If you specify more than one of -i, -f, -n, only the final one takes effect.

4. Jak zajistit, aby mv odstranilo koncová lomítka (pokud existují) ze zdrojového argumentu?

Chcete-li ze zdrojových argumentů odstranit všechna koncová lomítka, použijte --strip-trailing-slashes možnost příkazového řádku, jak je uvedeno níže.

mv --strip-trailing-slashes [source] [dest]

Zde je návod, jak oficiální dokumentace vysvětluje užitečnost této možnosti:

This is useful when a source argument may have a trailing slash and specify a symbolic link to a directory. This scenario is in fact rather common because some shells can automatically append a trailing slash when performing file name completion on such symbolic links. Without this option, mv, for example, (via the system’s rename function) must interpret a trailing slash as a request to dereference the symbolic link and so must rename the indirectly referenced directory and not the symbolic link. Although it may seem surprising that such behavior be the default, it is required by POSIX and is consistent with other parts of that standard.

O5. Jak zajistit, aby mv považoval cíl za normální soubor?

Chcete-li mít jistotu, že se s cílovou entitou zachází jako s normálním souborem (a nikoli s adresářem), použijte -T možnost příkazového řádku.

mv -T [source] [dest]

Zde je důvod, proč tato možnost příkazového řádku existuje:

This can help avoid race conditions in programs that operate in a shared area. For example, when the command ‘mv /tmp/source /tmp/dest’ succeeds, there is no guarantee that /tmp/source was renamed to /tmp/dest: it could have been renamed to/tmp/dest/source instead, if some other process created /tmp/dest as a directory. However, if mv -T /tmp/source /tmp/dest succeeds, there is no question that/tmp/source was renamed to /tmp/dest.
In the opposite situation, where you want the last operand to be treated as a directory and want a diagnostic otherwise, you can use the --target-directory (-t) option.

O6. Jak provést přesun souboru mv pouze v případě, že je novější než cílový soubor?

Předpokládejme, že v adresáři Downloads vašeho systému existuje soubor s názvem fullnames.txt a ve vašem domovském adresáři je soubor se stejným názvem. Nyní chcete aktualizovat ~/Downloads/fullnames.txt pomocí ~/fullnames.txt, ale pouze když je novější. Pak v tomto případě budete muset použít -u možnost příkazového řádku.

mv -u ~/fullnames.txt ~/Downloads/fullnames.txt

Tato možnost je užitečná zejména v případech, kdy potřebujete provést taková rozhodnutí ze skriptu shellu.

O7. Jak přimět mv vydávat podrobnosti o tom, co všechno dělá?

Pokud chcete, aby mv vydával informace vysvětlující, co přesně dělá, použijte -v možnost příkazového řádku.

mv -v [filename] [new_filename]

Například následující snímky obrazovky ukazují, že mv vydává některé užitečné podrobnosti o tom, co přesně udělal.

O8. Jak donutit mv k vytvoření zálohy existujících cílových souborů?

To můžete provést pomocí -b možnost příkazového řádku. Záložní soubor vytvořený tímto způsobem bude mít stejný název jako cílový soubor, ale bude k němu připojena vlnovka (~). Zde je příklad:

Závěr

Jak jste již uhodli, mv je stejně důležité jako cp a rm pro funkčnost, kterou nabízí - přejmenování/přesouvání souborů je koneckonců také jednou ze základních operací. Probrali jsme většinu možností příkazového řádku, které tento nástroj nabízí. Můžete si je tedy jen procvičit a začít příkaz používat. Chcete-li se o mv dozvědět více, přejděte na jeho manuálovou stránku.


Linux
  1. Linuxový příkaz paste vysvětlený pro začátečníky (5 příkladů)

  2. Příkaz wc pro Linux vysvětlený pro začátečníky (6 příkladů)

  3. Linuxový příkaz objdump vysvětlený pro začátečníky (7 příkladů)

  1. Linuxový příkaz dir pro začátečníky (10 příkladů)

  2. Linux unexpand Command Vysvětlený pro začátečníky (s příklady)

  3. Příkaz ukončení Linuxu vysvětlený pro začátečníky (s příklady)

  1. Příkaz Linux Csplit vysvětlený pro začátečníky (6 příkladů)

  2. Linuxový příkaz dirname vysvětlený pro začátečníky (4 příklady)

  3. Linux Free Command vysvětlený pro začátečníky (6 příkladů)