Eu escrevi meu script usando o diretório ~/deleted
(é um script longo). depois de usar ~/deleted
o script inteiro. Quero deixar o usuário escolher o diretório, colocando o caminho ~/.rm.cfg
.
Meu arquivo começa assim:
#!/bin/bash
defaultpath=~/deleted
if [ -s ~/.rm.cfg ]
then
defaultpath=$(head -1 ~/.rm.cfg)
fi
Eu preciso substituir todos ~/deleted
com $defaultpath
no meu script. Existe uma maneira de fazer isso na linha de comando para salvar e substituir o arquivo original?
Não consigo fazer perl ou sed trabalhar.
bash
files
text-processing
lonewarrior556
fonte
fonte
sed
deve ser suficiente. O que você tentou?Respostas:
Explicação:
-i
dizsed
para modificar o arquivo no lugar.s|~/deleted|"$defaultpath"|g
dizsed
para substituir~/deleted
com"$defaultpath"
onde quer que o encontre.Recurso extra: preservar ~ / excluído na terceira linha
Você não pediu isso, mas, no seu exemplo de script, seria bom deixar
~/deleted
inalterado na terceira linha em que é usado para definirdefaultpath
. Para alterar todas as instâncias,~/deleted
exceto a da terceira linha, use:Isso adiciona o único
sed
comando3n
que dizsed
para pular a terceira linha.fonte