2011-10-12 19:28:12 +0000 2011-10-12 19:28:12 +0000
94
94

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ę.

Odpowiedzi (12)

107
107
107
2011-10-12 19:30:00 +0000

Możesz mieć rm aliased do rm -i więc spróbuj tego:

/bin/rm -f file.log

Aby zobaczyć swoje aliasy możesz uruchomić alias.

61
61
61
2011-10-12 19:30:22 +0000

Flaga siły usuwa wszystkie podpowiedzi;

rm -f {file}

34
34
34
2011-10-12 19:30:10 +0000

Niech siła będzie z tobą - rm -f

6
6
6
2011-10-12 20:52:48 +0000

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).

5
5
5
2016-07-28 12:15:27 +0000
\rm file

Backslash ` \rm file

Backslash omija aliasy.

5
5
5
2011-10-12 20:13:31 +0000

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).

5
5
5
2011-10-12 19:31:52 +0000

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
1
1
1
2017-03-26 13:45:49 +0000

Poza użyciem parametru -f, alternatywnie można użyć polecenia find, np.

find -name file.log -delete
0
0
0
2018-03-29 14:28:49 +0000

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.

0
0
0
2019-09-02 14:37:41 +0000
rm -Rf <folder-to-be-deleted>

-R: Rekursywny f: siła, bez pośpiechu

0
0
0
2015-02-25 12:18:42 +0000

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).

0
0
0
2019-08-12 07:47:40 +0000

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