Wie würde ich eine Datei "file.doc" kopieren und beim Kopieren in "file_copy.doc" umbenennen und im selben Verzeichnis ablegen?
Und das nur, indem Sie das Skript aufrufen und den Dateinamen in das Argument einfügen:
bash launch_copyer file.doc
Wie würde ich eine Datei "file.doc" kopieren und beim Kopieren in "file_copy.doc" umbenennen und im selben Verzeichnis ablegen?
Und das nur, indem Sie das Skript aufrufen und den Dateinamen in das Argument einfügen:
bash launch_copyer file.doc
mv
undcp
unzureichend? Könnten wir ein Beispiel haben?Antworten:
Hier ist keine Notwendigkeit erforderlich
bash
, eine Standard-sh
Interpreter-Implementierung reicht aus:(setzt voraus, dass die Datei- und Verzeichnisnamen nicht mit Zeilenumbrüchen enden).
(natürlich, das wird auch die Arbeit mit ,
bash
dabash
ist einer dieser Standardsh
Dolmetscher .)Für eine
bash
spezifische Lösung können Sie Folgendes versuchen:quelle
foo.d/bar
,foo/.bashrc
,/foo
richtig , die auch Lösung nicht ...Da fragt das OP nach einer Bash-Lösung. Hier ist eine, die es tut.
quelle
-foo-
,foo.tar.gz
,/foo/bar
,foo.d/bar.doc
. Ich bin mir nicht sicher, warum Sie darauf bestehen, dass das Argument eine reguläre Datei oder ein Symlink zu einer regulären Datei ist. Dies ist nicht Teil der Anforderung. Fehlermeldungen sollten auf stderr angezeigt werden.--
Ende der Optionen angeben sollen. Nun, das.doc
schlägt eine Datei vor. Diese Überprüfung ist auch nicht unbedingt.Dies schlägt fehl, wenn
file
kein Punkterweiterungsteil vorhanden ist. Wenn Sie dies benötigen, verwenden Sie die Lösung von Stéphane Chazelas .quelle
-foo
erwähnt mit einem Bindestrich beginnen .Dies gibt den Dateinamen an und macht, was Sie wollen
quelle
cp /path/to/dir/{file.doc,file_copy.doc}
Wieder auf die OP wan'ts die Positionsparameter verwenden$1
cp /path/to/dir/file{,_copy}.doc
hier.Versuche dies:
Das Skript prüft, ob die als Eingabe empfangene Eingabedatei vorhanden ist. In diesem Fall erstellt es eine temporäre Kopie der Datei und benennt diese Kopie dann um, wobei der erste Punkt in seinem Namen durch die Zeichenfolge ersetzt wird
_copy.
Ich hoffe es ist was du brauchst.
quelle