Often when I'm editing some system file first I create a backup copy. For example:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bakIs there any simple 'shortcut' such as:
sudo cp /etc/ssh/sshd_config %s.bak?
A workaround that I found is to use sed in this way:
sudo sed '' /etc/ssh/sshd_config -i.bak 0 2 Answers
You could use brace expansion like this:
cp example_file{,.bak} 5 1. What you asked for
You can create a small shellscript file bupper:
I have a directory ~/bin, where I keep such help files.
#!/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>"
fiMake it executable,
chmod ugo+x bupperWhen in ~/bin, it will be in PATH and you can run it like any executable program anywhere (where you have write permissions).
Example:
$ 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 - let the editor do the job automatically
Some editors have an option to create a backup copy of the file before you save a new version. This backup has often a tilde as the last character (tilde is the extension, but there is no dot before it).
Gedit, the standard editor in Ubuntu is one of them.
After setting gedit to save such a backup copy:
gedit hello.txtAnd check afterwards
$ ls hello.txt*
hello.txt hello.txt~ hello.txt.bakNow hello.txt~ has been added to hello.txt and the backup created by bupper.
This works with nano too, with the option -B
nano -B hello.txtso you can do it with a command line editor for 'sudo' tasks :-)
3