GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Soll ich beim Kopieren von Ordnern einen abschließenden Schrägstrich nach Quelle und Ziel setzen?

Ich versuche, ein abschließendes / einzufügen am Ziel.

Wenn ich einen Fehler mache und sowohl Quelle als auch Ziel Dateien und keine Verzeichnisse sind, füge ich den / hinzu bedeutet, dass ich eine Fehlermeldung bekomme; ohne / es wird die Zieldatei verstopfen.

(Die Tabulatorvervollständigung fügt normalerweise die abschließende / hinzu sowieso, also ist es normalerweise einfacher, es hinzuzufügen als nicht.)

Weitere Einzelheiten finden Sie in der Antwort von Volker Siegel.


Kein abschließender Schrägstrich im Quellverzeichnis

Sie sollten nicht Setzen Sie einen abschließenden Schrägstrich auf das Quellverzeichnis:

Der Punkt ist relevant für cp - aber auch zu mv , wo es viel wichtiger ist .

Ich werde die Warnung aus dem Handbuch zitieren - beachten Sie, dass sie nicht in der Manpage zu finden ist, sondern auf der Infoseite info coreutils 'mv invocation' :

Warnung :Vermeiden Sie die Angabe eines Quellnamens mit einem abschließenden Schrägstrich, wenn es sich um einen symbolischen Link zu einem Verzeichnis handeln könnte. Andernfalls kann 'mv' etwas sehr Überraschendes tun, da sein Verhalten vom zugrunde liegenden rename-Systemaufruf abhängt. Auf einem System mit einem modernen Linux-basierten Kernel schlägt es mit 'errno=ENOTDIR' fehl. Auf anderen Systemen (mindestens FreeBSD 6.1 und Solaris 10) benennt es jedoch stillschweigend nicht den Symlink um, sondern das Verzeichnis, auf das der Symlink verweist.

Nachlaufende Schrägstriche im Zielverzeichnis verwenden

Wenn Sie Dateien und Verzeichnisse in ein Verzeichnis verschieben möchten, sollten Sie dem Zielverzeichnis einen abschließenden Schrägstrich hinzufügen.
Es ändert nichts, solange alles gut geht.
Aber es kann Sie vor einem häufigen Fehler bewahren, der zum Verlust oder zur Änderung von Daten führt:

Wenn Sie eine Datei in ein Verzeichnis verschieben, können zwei Dinge schief gehen:
Möglicherweise haben Sie die letzte Komponente des Zielverzeichnisnamens falsch geschrieben, z. B. ein falsches Zeichen. Zwei Dinge, die passieren können, sind diese beiden Fälle:

  • Wenn der falsch geschriebene Name nicht existieren:

    • die Datei wird in den falsch geschriebenen Namen umbenannt

    • es wird in das übergeordnete Verzeichnis des beabsichtigten Ziels verschoben

    • Es landet also weder dort, wo es war, noch dort, wo Sie es erwarten.

  • Wenn der falsch geschriebene Name zutrifft existiert und ist eine Datei:

    • Die Datei überschreibt die Datei mit dem falsch geschriebenen Namen im übergeordneten Verzeichnis des Ziels.

    • Auch hier werden Sie es nicht finden, wo es war oder wo es sein sollte:es ist einfach verschwunden.

Wenn Sie für das Zielverzeichnis einen abschließenden Schrägstrich verwenden, werden beide Fälle verhindert:

Es macht mv Verwenden Sie es nicht als Dateinamen, wenn dies normalerweise der Fall wäre. Stattdessen mv gibt nur einen Fehler aus:

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

Schrägstriche automatisch entfernen

Es gibt eine spezielle Option für cp und mv Um das Risiko zu mindern, entfernen Sie immer den Schrägstrich von src dirs:

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. Wenn Sie „ls -a“ eingeben, was ist die Bedeutung von „.“ Und ".."?

  2. Wie vergleiche ich zwei Ordner und kopiere den Unterschied in einen dritten Ordner?

  3. Wann sollte ich einen abschließenden Schrägstrich in einem Verzeichnis verwenden?

  4. Wann und warum sollte ich Apt-get Update verwenden?

  5. Dateien kopieren, die nach einem bestimmten Datum mit Cp-Schaltern geändert wurden?

So kopieren Sie Dateien und Verzeichnisse unter Linux

So kopieren Sie das Verzeichnis unter Linux

Ordner mit Mv zusammenführen?

Wann sollte man aus dem Quellcode kompilieren und installieren?

Können Sie mehrere ausführbare Skripte in einem Verzeichnis ablegen und durch die Beschaffung dieses Verzeichnisses alle diese Befehle verfügbar machen?

Unterschied kopieren Inhaltsordner zwischen /. und /* unter Linux