Usuń plik bez pytania
Jak mogę usunąć plik bez pytania użytkownika, czy zgadza się on na usunięcie pliku? Piszę skrypt powłoki i używam funkcji rm, ale pyta “usuń zwykły plik?” i naprawdę tego nie potrzebuję. Dziękuję.
Jak mogę usunąć plik bez pytania użytkownika, czy zgadza się on na usunięcie pliku? Piszę skrypt powłoki i używam funkcji rm, ale pyta “usuń zwykły plik?” i naprawdę tego nie potrzebuję. Dziękuję.
Program yes
wielokrotnie odpowiada tak na wszelkie podpowiedzi, więc możesz podłączyć go do interaktywnego programu rm
, aby uzyskać pożądany efekt.
yes | rm <filename>
odwrotnie, jeśli nie chcesz robić czegoś interaktywnego, możesz zrobić
yes n | <something interactive>
i to będzie powtarzać ‘n’ na strumieniu wejściowym (efektywnie odpowiadając na “nie” na pytania).
W ramach skryptu powłoki, chciałbyś użyć rm -f <filename>
, ale masz również możliwość pozbycia się domyślnej opcji -i
dla Twojego środowiska poprzez wpisanie unalias rm
w Twojej powłoce (lub profilu).
Jeśli masz wymagane uprawnienia do usunięcia pliku i nie chcesz, aby Cię o to poproszono, wykonaj następujące czynności (-f = siła):
rm -f file
Jeśli nie masz uprawnień do pliku, musisz użyć:
sudo rm -f file
Jeśli Twój rm
jest powiązany z rm -i
, użyj unalias rm
;
Nie używaj rm -f
bezpośrednio, chyba że naprawdę chcesz usunąć wiele plików zabezpieczonych przed zapisem. Musi być bardzo dobry powód, aby użyć -f
.
Jeśli jednak masz dużo plików zabezpieczonych przed zapisem, możesz woleć rsync -r --delete empty/ removed_dir/
dla większej szybkości.
Obecnie pracuję w systemie, w którym powłoka bash otrzymała definicję polecenia rm jako funkcję w jednym z plików konfiguracji globalnej:
rm () { /bin/rm -i ${1+"$@"}; }
Stąd też żadna z powyższych odpowiedzi dotyczących aliasów nie zadziałała. Aby przeciwdziałać irytującym zachowaniom wyłączyłem funkcję rm w moim pliku .bashrc
unset -f rm
miałem podobny problem jak otwieracz. Nie znalazłem jednak odpowiedzi, która wspominałaby o możliwości, że rm
jest ukryty przez funkcję powłoki. Tak więc dodałem odpowiedź tutaj w nadziei, że będzie ona pomocna dla kogoś, kto ma problem tego samego typu.
Wpisywanie /bin/rm
lub rm -f
cały czas jest niewygodne i może mieć złe konsekwencje (w przypadku rm -f
).
Moim ulubionym sposobem na to jest po prostu użycie komendy command
w bashu, tak samo jak w przypadku sudo
. To uruchomi Twoją komendę bez aliasów, tak samo jak uruchomienie jej przez /bin/rm
(prawdopodobnie rm
jest oznaczone jako rm -i
).
Przykład:
command rm -f /tmp/file.txt