Você poderia usar a expansão de chaves como esta:
cp example_file{,.bak}
Geralmente, quando estou editando algum arquivo de sistema, primeiro crio uma cópia de backup. Por exemplo:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Existe algum 'atalho' simples como:
sudo cp /etc/ssh/sshd_config %s.bak
?
Você poderia usar a expansão de chaves como esta:
cp example_file{,.bak}
Você pode criar um pequeno arquivo shellscript bupper
:
Eu tenho um diretório ~/bin
, onde guardo esses arquivos de ajuda.
#!/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
Torne-o executável,
chmod ugo+x bupper
Quando em ~/bin
, estará em PATH e você poderá executá-lo como qualquer programa executável em qualquer lugar (onde você tem permissões de gravação).
Exemplo:
$ 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'
Alguns editores têm a opção de criar uma cópia de backup do arquivo antes de salvar uma nova versão. Este backup tem frequentemente um til como o último caractere (til é a extensão, mas não há ponto antes dele).
Gedit, o editor padrão no Ubuntu é um deles.
Depois de definir gedit
para salvar uma cópia de backup:
gedit hello.txt
E verifique depois
$ ls hello.txt*
hello.txt hello.txt~ hello.txt.bak
Agora hello.txt~
foi adicionado a hello.txt
e o backup criado por bupper
.
Isso também funciona com nano
, com a opção -B
nano -B hello.txt
para que você possa fazer isso com um editor de linha de comando para tarefas 'sudo': -)
Tags command-line cp