Estou procurando uma solução para ser usada como resposta a "rm: remover arquivo regular protegido contra gravação [x]?"
Eu estava pensando em emitir um caractere seguido de retorno de carro por várias vezes, no bashrc. Como fazemos isso?
Estou procurando uma solução para ser usada como resposta a "rm: remover arquivo regular protegido contra gravação [x]?"
Eu estava pensando em emitir um caractere seguido de retorno de carro por várias vezes, no bashrc. Como fazemos isso?
Respostas:
Edite com base na pergunta atualizada:
Para evitar ser perguntado sobre a remoção de arquivos, adicione a opção -f("force"):
rm -f /path/to/file
Isso tem um efeito colateral que você deve estar ciente: Se algum dos caminhos fornecidos não existir, ele não reportará isso e retornará com êxito:
$ rm -f /nonexistent/path
$ echo $?
0
Resposta original:
Aqui está uma solução simples:
yes "$string" | head -n $number | tr $'\n' $'\r'
yesrepete qualquer sequência que você especificar infinitamente, separada por novas linhas. heado interrompe após o $numbertempo e trconverte as novas linhas em retornos de carro. Você pode não ver nenhuma saída devido aos retornos de carro, mas passá-la para este comando (in bash) deve ilustrá-la:
printf %q "$(yes "$string" | head -n $number | tr $'\n' $'\r')"
Usuários sem bashtubo pode o resultado para od, hexdumpou xxdpara ver os caracteres reais retornados.
O outro problema que de vez em quando me deparo rmé com um alias rm -i, algo assim no / etc / bashrc:
alias rm='rm -i'
Nesse caso, você pode, unalias rmou pode usar esse truque que eu descobri anos atrás, colocar uma barra invertida na frente de um comando com alias, para ignorar o alias apenas uma vez, por exemplo:
\rm somefile
Você pode aprender mais sobre aliases em um artigo da Nixcraft .
rmé codificado para pedir "interativamente" (prompt aguardando a entrada do usuário) em arquivos protegidos contra gravação. existem dois métodos para impedir a rmpergunta:
rm -rf somedir
e
rm -r --interactive=never somedir
(ambos também funcionam sem -rexcluir arquivos em vez de diretórios)
explicação:
-ffaz rmpara "ignorar arquivos e argumentos inexistentes, nunca solicitar".
--interactive=neverfaz o que diz: nunca seja interativo. em outras palavras: nunca solicite.
a diferença entre -fe --interactive=neveré esta parte: "ignore arquivos e argumentos inexistentes".
comparar:
$ rm -rf nonexistingname
$ echo $?
0
e
$ rm -r --interactive=never nonexistingname
rm: cannot remove 'nonexistingname': No such file or directory
$ echo $?
1
a diferença é principalmente interessante ao escrever scripts nos quais você nunca deseja rmser interativo, mas ainda deseja lidar com erros.
resumo: no uso da linha de comando rm -rf. em scripts use rm -r --interactive=never.
para obter uma resposta à pergunta indicada ("Como evitar a necessidade de emitir" y "várias vezes ao remover o arquivo protegido"), consulte https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line / 338860 # 338860
Eu também tive o mesmo problema. A resposta acima é apenas para um arquivo, mas se você deseja ignorar muito sim.
Você pode usar
sudo rm -r /path/to/directory
remover todos os arquivos regulares protegidos contra gravação