Ilekroć mam rmkilka przedmiotów naraz z globowaniem skorupy i istnieje nawet najmniejsza możliwość, że wzór rozszerzy się bardziej niż się tego spodziewam, zawsze staram się pamiętać o dodaniu -i, ale (oczywiście) mogłem zapomnieć i przypadkowo zdmuchnąć coś pożytecznego. Niektórzy próbują rozwiązać ten problem za pomocą aliasu, na przykład alias rm='rm -i'nie podoba mi się pomysł, aby rm zawsze był interaktywny, ponieważ wtedy nabiorę nawyku korzystania z niego przez -fcały czas, co oczywiście pokona cały cel.
To, co chciałbym zrobić, to rmużywać tylko -iwtedy, gdy używam globowania, i -foczywiście w celu zastąpienia -i, więc nadal mogę wymazać całe katalogi ze zwykłymi rm -rf junk.
Dlatego rm *blah*naprawdę byłoby, rm -i *blah*ale rm blahdziałałoby dokładnie tak, jak na maszynie.
W przypadku różnicy, w jaki sposób można to osiągnąć w różnych powłokach, wybiorę odpowiedź, która dostarcza metody zarówno dla bash, jak i zsh, zamiast odpowiedzi, które obejmują tylko jedną lub drugą.
Uwaga : tak naprawdę nie jestem przekonany, że to koniecznie dobry pomysł; Pytam tylko, czy to możliwe. Jeśli uważasz, że to głupi pomysł, byłbym bardzo szczęśliwy, słysząc uzasadnienie twojej opinii, ale proszę nie zamieszczaj takich komentarzy w polu odpowiedzi . Prawdziwe odpowiedzi albo mówią mi, jak to zrobić, albo wyjaśniają, że / dlaczego nie jest to możliwe (lub ewentualnie oferują alternatywną metodę uzyskania podobnego wyniku). Ale jeśli chcesz mi powiedzieć, dlaczego to jest głupie, napisz jako komentarz. Głosuję za uzasadnionymi komentarzami, nawet jeśli nie zgadzam się z wnioskiem.
noglobnp. Z aliasingu rm do noglob my-rm, a następnie mając my-rm jako skrypt, który sprawdza glob, rozwija go i przekazuje -i lub nie. Nie jestem pewien, nie znam Zsh.
myrmi pozwolić temu skryptowi robić to, co lubisz.
rm -Ijest tak,-iże uruchamia się tylko wtedy, gdy-rzostaną przekazane więcej niż trzy pliki . WbashużyjCtrl-x *skrótu klawiaturowego, aby rozwinąć glob i sprawdzić go sam.