'rm' prompt quando for dado mais de um arquivo [duplicado]

1
    

Esta pergunta já tem uma resposta aqui:

    
  •              Scripting 'rm' e 'rm -i'                                      3 respostas                          
  •     

Por algum motivo, minha memória digital converteu mv para rm . Até eu conseguir treinar esses dedos, como posso ter rm prompt quando fornecido vários locais (um dos quais provavelmente não existe)?

Eu sei que a opção -I solicitará mais de três arquivos, e o -i solicitará todos os arquivos, mas eu preciso de algo semelhante que solicitará mais de um arquivo.

    
por dotancohen 14.03.2016 / 13:49

2 respostas

3

defina a função rm no seu bash e verifique o número de args. Se houver apenas 1 arg, eles executarão command rm para chamar o comando original. Caso contrário, imprima um aviso.

Algo como:

function rm()
{
    if (( $# > 1 )); then
        read -r -p "sure? [y/n] " response
        case $response in
            [yY])
                command rm "$@"
                ;;
            *)
                echo "ignored"
                ;;
        esac
    else
        command rm "$@"
    fi
}

Uma coisa para melhorar na minha função é primeiro verificar todos os parâmetros e se um parâmetro começar com - , considere o parâmetro como uma opção. Então essa função rm manipula a entrada como rm -f 1.txt .

    
por 14.03.2016 / 13:55
0

Faça backups freqüentes, use instantâneos (à la time) se o seu sistema de arquivos for ZFS ou btrfs , treine seus dedos para usar os comandos corretos, mas aconselharia evitar alterar rm comportamento e semântica .

Fazer isso, mais cedo ou mais tarde, sairá pela culatra, assim como o desagradável alias rm="rm -i" ...

O que eu aconselharia no seu caso seria, ao executar shells interativos, ter o rm desabilitado e sendo substituído por um rm personalizado que fará o seu trabalho original. por exemplo. anexe estas linhas ao seu .bashrc

rm() {
    echo "rm disabled, use myRM instead"
}
alias myRM="command rm"

O incômodo criado pela nova função rm será mais eficiente para ajudar você a se livrar do erro de digitação e provavelmente deixará de digitar rapidamente rm .

Embora este conselho pareça contraproducente, a razão pela qual eu sugiro fazê-lo desta forma é que não haja risco de você estar acostumado a um comportamento ainda não padrão de trabalho para um comando Unix tão perigoso. Mais cedo ou mais tarde, você estará logado sob uma conta e / ou outro sistema sem o hack e você removerá arquivos sem nenhum aviso de segurança para salvá-los.

Por outro lado, se você se habituar a digitar myRM para remover arquivos, fazê-lo em sistemas externos será inofensivo.

Finalmente, se você quiser sobrecarregar o comando rm , aqui está uma maneira concisa de fazer isso:

rm() {
  echo command rm $([ ${#} -gt 1 ] && echo \-i) "$@"
}
    
por 14.03.2016 / 14:20

Tags