`alias rm =“ rm -i ”` considerato dannoso?


17

Ho letto qualche tempo fa (non riesco a trovare il riferimento) che usare un alias tanto alias rm="rm -i"grave.

Esistono prove storiche o spiegazioni di buon senso per questo fatto?

Immagino che dia all'utente una cattiva abitudine di fare affidamento sul prompt di conferma per controllare il suo comando, il che potrebbe portare a disastri se lo fa su un altro profilo che non ha l'alias.



Penso di aver trovato l'argomento che hai menzionato.
Daniel Beck

1
@Daniel in effetti la risposta più votata di questo thread cita questa cattiva pratica, ma non è proprio l'argomento centrale della domanda.
Dunaril,

Risposte:


36

Hai ragione.

È male perché ti ci abitui. Se sei su un sistema che non lo possiede e tu rm, inizia immediatamente a cancellare e ti stai chiedendo cosa sta succedendo.

Molti utenti sono abituati a SSH in sistemi diversi; pertanto l'utilizzo di molti sistemi diversi, a volte senza account utente personalizzati (inclusi alias) impostati, è piuttosto comune.

Invece, usa eg alias rmi='rm -i'e impara ad usarlo. Se ciò non è impostato su un sistema diverso, non hai eliminato accidentalmente i file e puoi sempre tornare a digitare il comando completo.


4

Come ha detto @Daniel, non è dannoso di per sé, oltre ad allenarti a aspettarti che sia lì. In effetti, è l'impostazione predefinita su CentOS (e per estensione RHEL, presumo - è passato troppo tempo da quando ne ho usata una) macchine, ed è un grande dolore per il tufo . Per il resto del mio tempo a quel concerto, ho digitato / bin / rm per evitare l'installazione di "Linux per persone che non dovrebbero avere accesso root".


3
RHEL ha questo di default, hai ragione, almeno i sistemi che ho usato.
Daniel Beck

4

Penso che il grande pericolo sia che le persone possano fare affidamento su qualcosa del genere per filtrare un globo. Immagina di voler eliminare alcune immagini da una directory, ma non tutte:

rm -i pics/*.jpg

Puoi usarlo per filtrare manualmente il glob, il che sarebbe del tutto ragionevole. Ma, se lo avessi aliasato e stavi usando rme ti fosse capitato di atterrare in una shell senza quell'alias e provarlo ... hai appena cancellato tutte le tue foto, oops!

Personalmente trovo anche che questo alias sia dannoso per la mia pressione sanguigna;). Ma sono solo io.


Bell'esempio Naturalmente se ti piace il pericolo o il gioco d'azzardo ...
Dunaril,

2

Oltre a ciò che ha detto Daniel Beck, mi sono ritrovato a utilizzare -fper bypassare il -i, che è potenzialmente pericoloso in quanto risulta nell'uso rm -fe rm -rfinutilmente. In qualche modo correlato: un modo per prevenire rm -rfproblemi è quello di creare un file chiamato "-i" come oscurato in risposta a questa domanda: Come posso prevenire rm -rf / * accidentale? .

Ma ancora una volta, se quell'alias non fosse lì, non userei -f, e l'intera cosa non sarà un problema.


3
Sembra che tu abbia trovato il modo di peggiorare ulteriormente questa cattiva pratica :)
Dunaril,

0

Questo è molto meno dannoso, in base alla mia esperienza di lavoro con centinaia di utenti in passato:

rm ()  # must be a function, must require single answer for all targets
{
    ls -FCsd "$@"
    local reply ; echo -n 'remove[ny]? ' ; read reply
    if [ "_$reply" = "_y" ] ; then
        /bin/rm -rf "$@" ; else echo '(cancelled)'
    fi
}
  • Gli utenti vengono formati per utilizzare correttamente i caratteri jolly, non solo '*' e quindi fare affidamento sulle richieste y / n per selezionare i file
  • Il condizionamento per usare i caratteri jolly corretti spesso ha salvato il disastro quando lo hanno usato rmin qualche altro contesto privo di questa funzione o rm -idell'alias.
  • Ho impiegato meno tempo a ripristinare i file in cui l'utente ha digitato 'y' una volta troppe volte
  • Gli utenti devono rispondere solo una volta, fornendo un feedback positivo e netto al loro utilizzo
  • Control-c interrompe il lavoro e segnala che non fanno nulla
  • Non è una sceneggiatura, quindi il vero rmè intatto, lasciando altri programmi imperterriti.

Lo stile del codice è per lo più compatibile con sh (tranne l'uso echo .... | tr -d '\012'per le shell pre-bash), sentiti libero di rendere il tuo più bash specifico. Non sto postando per condividere il codice stesso, ma per condividere la modifica dell'esperienza utente che ne deriva.


Kamil: La mia risposta include che rm -istoricamente (nella mia esperienza con centinaia di utenti) si ottiene una cancellazione errata dei file e che la funzione inclusa ha addestrato gli utenti a utilizzare invece i caratteri jolly corretti, riducendo il tasso di errore. Quindi ho affrontato problemi chiave che affliggevano rm -i e fornito una soluzione per motivi di convenienza, e il semplice fatto che i punti elenco siano al di sotto della funzione non impedisce loro di essere germani.
Alex North-Keys,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.