cp: Quellverzeichnis als Zielverzeichnis übernehmen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Maverick
Beiträge: 18
Registriert: 25.02.2003 20:00:50
Wohnort: Viersen

cp: Quellverzeichnis als Zielverzeichnis übernehmen

Beitrag von Maverick » 25.05.2006 22:51:31

Hallo,

ich möchte eine Backupkopie einer Datei im gleichen Verzeichnis mit der Ereiterung .orig erstellen und benutze dazu cp.

Beispiel:

Code: Alles auswählen

cp /etc/vsftp/vsftpd.conf /etc/vsftp/vsftpd.conf.orig
.

Wenn man sich nicht gerade im entsprechenden Verzeichnis befindet, wäre es schön den kompletten (absoluten) Verzeichnispfad inklusive Dateinamen nur einmal eingeben zu müssen und bei der Angabe des Ziels mit Hilfe von cp oder Bash Mitteln eine zweite Eingabe vermeiden zu können.

Kennt jemand da einen Weg? Kann mann innerhalb eines Kommandos das zuerst eingegebene Argument "wiederverwenden" mit Bash Mitteln (Variable oder ähnlich)?

Wie immer vielen Dank für Vorschläge.

DeletedUserReAsG

Beitrag von DeletedUserReAsG » 25.05.2006 23:08:02

Du könntest eine Variable mit dem Pfad erstellen und die dann benutzen.

cu

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 25.05.2006 23:11:17

Code: Alles auswählen

cp /etc/vsftp/vsftpd.conf{,.orig}
Um zu sehen, warum das funktioniert, hilft ein

Code: Alles auswählen

echo abc{ddd,eee,fff}ghi

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 25.05.2006 23:13:09

einfach eine Funktion in dein .bashrc und/oder .bash_profile einfügen:

Code: Alles auswählen

bcp() { cp $1 $1.orig; }
Diese kannst du dann ganz einfach verwenden

Code: Alles auswählen

root@gms1:~# ls
unison.log
root@gms1:~# bcp unison.log
root@gms1:~# ls
unison.log  unison.log.orig
Gruß
gms

Maverick
Beiträge: 18
Registriert: 25.02.2003 20:00:50
Wohnort: Viersen

Beitrag von Maverick » 26.05.2006 11:18:03

Vielen Dank für die schnellen und hilfreichen Antworten von euch beiden.
Ich hatte etwas in der Art des ersten Vorschlages erwartet, aber der zweite Vorschlag ist auch sehr gut.

Danke und Gruß

Maverick

tapferesschneiderlein
Beiträge: 189
Registriert: 11.08.2005 09:27:01

Beitrag von tapferesschneiderlein » 26.05.2006 11:19:03

Eine weitere Möglichkeit der bash wäre

Code: Alles auswählen

cp original !#$.orig
!# steht für »alles, was bisher auf dieser Zeile steht«
$ steht für »das letzte Argument«
!$ ist z. B. das von mir am häufigsten verwendete Konstrukt und steht für »das letzte Argument des letzten Befehls«

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 27.05.2006 21:47:57

tapferesschneiderlein hat geschrieben:!$ ist z. B. das von mir am häufigsten verwendete Konstrukt und steht für »das letzte Argument des letzten Befehls«
Dafür drücke ich immer Alt+.

tapferesschneiderlein
Beiträge: 189
Registriert: 11.08.2005 09:27:01

Beitrag von tapferesschneiderlein » 27.05.2006 22:15:46

Und das sagst mir erst jetzt?!? :wink:

Antworten