Existe uma maneira de criar uma cópia de backup de um arquivo, sem digitar seu nome duas vezes? [duplicado]

7

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

?

    
por pa4080 06.10.2017 / 12:46

2 respostas

9

Você poderia usar a expansão de chaves como esta:

cp example_file{,.bak}
    
por robosnacks 06.10.2017 / 13:38
1

1. O que você pediu

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'

2. Alternativa - deixe o editor fazer o trabalho automaticamente

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': -)

    
por sudodus 06.10.2017 / 13:34