GNU/Linux >> Znalost Linux >  >> Linux

Měl bych při kopírování složek umístit za zdroj a cíl koncové lomítko

Snažím se vložit koncové / na cíl.

Pokud udělám chybu a zdroj i cíl jsou soubory, nikoli adresáře, přidám / znamená, že dostanu chybu; bez / zablokuje cílový soubor.

(Dokončení tabulátoru obvykle přidá koncové / tak jako tak, takže je obvykle jednodušší to přidat než nepřidat.)

Další podrobnosti naleznete v odpovědi Volkera Siegela.


Žádné koncové lomítko ve zdrojovém adresáři

Neměli byste vložte koncové lomítko do zdrojového adresáře:

Bod je relevantní pro cp - ale také mv , kde je to mnohem důležitější .

Budu citovat varování z manuálu – všimněte si, že se nenachází v manuálové stránce, ale na informační stránce info coreutils 'mv invocation' :

Upozornění :Neuvádějte název zdroje s koncovým lomítkem, pokud by to mohl být symbolický odkaz na adresář. Jinak může 'mv' udělat něco velmi překvapivého, protože jeho chování závisí na základním systémovém volání rename. Na systému s moderním jádrem založeným na Linuxu selže s 'errno=ENOTDIR'. Na jiných systémech (alespoň FreeBSD 6.1 a Solaris 10) však tiše nepřejmenuje symbolický odkaz, ale adresář, na který symbolický odkaz odkazuje.

Použijte koncová lomítka v cílovém adresáři

Pokud chcete přesunout soubory a adresáře do adresáře, měli byste do cílového adresáře přidat koncové lomítko.
Nic se nemění, pokud je vše v pořádku.
Může vás však zachránit před běžnou chybou, která způsobuje ztrátu nebo změnu dat:

Pokud přesunete soubor do adresáře, mohou se pokazit dvě věci:
Pravděpodobně jste zadali chybně poslední součást názvu cílového adresáře, například jeden špatný znak. Dvě z věcí, které se mohou stát, jsou tyto dva případy:

  • Pokud nesprávně napsaný název není existují:

    • soubor bude přejmenován na chybně napsaný název

    • přesune se do nadřazeného adresáře zamýšleného cíle

    • Takže to skončí ani nebylo, ne tam, kde očekáváte, že to půjde.

  • Pokud nesprávně napsaný název ano existovat a je to soubor:

    • soubor přepíše soubor s chybně napsaným názvem v nadřazeném adresáři cíle.

    • Opět to nenajdete tam, kde to bylo, nebo kde by mělo být:prostě to zmizelo.

Pokud v cílovém adresáři použijete koncové lomítko, zabrání se oběma případům:

To dělá mv nepoužívejte jej jako název souboru, když by to normálně bylo. Místo toho mv jen hlásí chybu:

mv: failed to access ‘foo/’: Not a directory

Automaticky odstranit lomítka

Pro cp existuje speciální volba a mv ke zmírnění rizika vždy odstraněním lomítka z adresáře src:

Some GNU programs (at least `cp' and `mv') allow you to remove any
trailing slashes from each SOURCE argument before operating on it.  The
`--strip-trailing-slashes' option enables this behavior.

   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.

Linux
  1. Když zadáte „ls -a“, jaký je význam „.“ A ".."?

  2. Jak porovnat dvě složky a zkopírovat rozdíl do třetí složky?

  3. Sloučení složek s Mv?

  1. Kdy bych měl použít koncové lomítko v adresáři?

  2. Kdy byste měli kompilovat a instalovat ze zdroje?

  3. Můžete umístit více spustitelných skriptů do jednoho adresáře a zajištěním tohoto adresáře zpřístupnit všechny tyto příkazy?

  1. Jak kopírovat / přesouvat soubory a adresáře v Linuxu pomocí příkazů „cp“ a „mv“.

  2. Linux:zkopírujte a vytvořte cílový adresář, pokud neexistuje

  3. Nelze přistupovat ke složkám připojeným pomocí sshfs po spánku (nebo při ztrátě připojení)