web-dev-qa-db-fra.com

Est-il possible de créer une copie de sauvegarde d'un fichier sans saisir deux fois son nom?

Souvent, lorsque je modifie un fichier système en premier, je crée une copie de sauvegarde. Par exemple:

Sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Existe-t-il un simple "raccourci" tel que:

Sudo cp /etc/ssh/sshd_config %s.bak

?

7
pa4080

Vous pouvez utiliser l'expansion de corset comme ceci:

cp example_file{,.bak}
10
robosnacks

1. Ce que vous avez demandé

Vous pouvez créer un petit fichier shellscript bupper:

J'ai un répertoire ~/bin, où je garde ces fichiers d'aide.

#!/bin/bash

if [ $# -eq 1 ]
then
 cp -pvi "$1" "${1}.bak"
else
 echo "Info:  $0 copies to a backup file"
 echo "Usage: $0 <file to be backed up with .bak extension>"
fi

Le rendre exécutable,

chmod ugo+x bupper

Dans ~/bin, ce sera dans PATH et vous pourrez l'exécuter comme n'importe quel programme exécutable n'importe où (où vous avez des autorisations d'écriture).

Exemple:

$ bupper hello.txt 
'hello.txt' -> 'hello.txt.bak'
$ bupper hello.txt 
cp: overwrite 'hello.txt.bak'? n
$ bupper hello.txt 
cp: overwrite 'hello.txt.bak'? y
'hello.txt' -> 'hello.txt.bak'

2. Alternative - laissez l'éditeur faire le travail automatiquement

Certains éditeurs ont la possibilité de créer une copie de sauvegarde du fichier avant de sauvegarder une nouvelle version. Cette sauvegarde a souvent un tilde comme dernier caractère (tilde est l'extension, mais il n'y a pas de point avant).

Gedit, l'éditeur standard d'Ubuntu en fait partie.

enter image description here

Après avoir configuré gedit pour enregistrer une telle copie de sauvegarde:

gedit hello.txt

Et vérifier après

$ ls hello.txt*
hello.txt  hello.txt~  hello.txt.bak

Maintenant hello.txt~ a été ajouté à hello.txt et à la sauvegarde créée par bupper.

Ceci fonctionne aussi avec nano, avec l'option -B

nano -B hello.txt

vous pouvez donc le faire avec un éditeur de ligne de commande pour les tâches 'Sudo' :-)

1
sudodus