Aliasing 'rm' para criar uma “lixeira” CLI

1

Quando fazemos

mv /root/file /root/folder/

Move /root/file para /root/folder

Eu quero fazer a mesma coisa, mas quero inverter a ordem de como mv percebe os argumentos

Eu quero declarar um alias (não função) como

alias rm="mv /root/folder"

Então, quando eu faria

rm /root/file

ele moveria esse arquivo específico para o /root/folder

Por que não quero usar uma função?

Porque não consigo nomear a função rm() porque a palavra-chave rm já existe.

Eu quero poder usar a palavra-chave rm porque é um hábito comum para todos nós.

    
por GypsyCosmonaut 18.07.2017 / 01:18

2 respostas

3

alias rm="mv -t /root/folder" fará isso se você tiver um mv que suporte a opção% padrão-t. Veja mv (1) para mais opções (você provavelmente vai querer --no-clobber / --interactive também).

Se você quiser uma solução POSIX, pode trabalhar em torno do link básico rm ( ) com uma função chamada rm :

rm() {  mv "$@" /root/folder;  } # a start
    
por 18.07.2017 / 01:38
5

Pessoalmente, acho que esta é uma má ideia. Se você quiser usar uma lixeira ou lixeira na linha de comando, instale trash-cli .

Por que acho que é uma má ideia:

  • O que acontece quando você deseja usar rm - o aplicativo de saída, remoção de arquivos ou diretórios?

  • O que acontece quando você move um arquivo com um nome de arquivo que corresponde a um arquivo que já está em /root/folder ?

É importante notar que o autor de trash-cli também acha que o aliasing é uma má ideia , depois de alguma experiência com ele:

Can I alias rm to trash-put?

You can but you shouldn't. In the early days I thought it was a good idea to do that but now I changed my mind.

...

E, ela recomenda um abordagem alternativa :

You could alias rm to something that will remind you to not use it:

alias rm='echo "This is not the command you are looking for."; false'
    
por 18.07.2017 / 01:29

Tags