Powiedzmy, że chciałem się upewnić, że najpierw usuwam odpowiednie pliki, więc zrobiłem coś takiego:
rm -i *
tylko po to, aby upewnić się, że nie mam nic przeciwko usuwanym plikom. Poprosi mnie to o każdy plik. Po kilku plikach załóżmy, że zdaję sobie sprawę, że właśnie to chciałem usunąć. Czy zamiast CTRL+C
ingerować i po prostu robić rm *
, mogę po prostu powiedzieć wszystkim tak ?
To pytanie wynika bardziej z ciekawości niż z funkcjonalności.
Odpowiedzi:
Nie.
(Chyba że znajdziesz sposób na przerzucenie „interaktywnego” bitu za pomocą debuggera).
źródło
coreutils/src/remove.c:335
→coreutils/lib/yesno.c:46
(wygenerowano) →rpmatch(3)
: „zwraca 0 dla rozpoznanej odpowiedzi negatywnej („ nie ”), 1 dla rozpoznanej odpowiedzi pozytywnej („ tak ”) i -1, gdy wartość odpowiedzi nie jest rozpoznana”To naprawdę nie odpowiada na twoje pytanie. Ale zamiast używać
rm -i
, rozważ aliasingrm
dorm -I
:Strona podręcznika stanowi:
w swoim
~/.bashrc
, wstaw:to jest naprawdę przydatne!
źródło
Odpowiedź brzmi tak, przy użyciu tego kodu:
$ yes "yes" | rm -vRI directory
źródło
Sprawdź najpierw za pomocą,
ls *.bla
a potemrm -f *.bla
może?Zachowaj ostrożność!
źródło
Jeśli korzystasz z ekranu (ogólnie dobry pomysł), możesz:
Spowodowałoby to, że screen uruchomiłby komendę „tak”, gdzie y było wyjściem, i skierowałby wspomniane wyjście do działającego programu (rm -i).
źródło
Można to zrobić, zastępując na bieżąco deskryptory plików aplikacji. Potrzebujesz jednak pliku pośredniego.
Możesz użyć gdb i nazwanego potoku w ten sposób (zakładając, że używasz więcej terminali, w przeciwnym razie musisz użyć screena lub czegoś innego):
Następnie wpisz następujące polecenia w gdb, zastępując PID
To zastępuje klawiaturę nazwaną potokiem dla rm.
Teraz musisz wypełnić nazwaną rurę
rm przeczyta potok i nadpisze wszystko.
źródło
rm
proces w tle za pomocąCtrl+Z
.rm -i *
polecenie)-i
Enter
aby uruchomić poleceniefg %1
Ctrl+C
źródło
5s/fg/kill/; 6d