Mam jeden skrypt powłoki działający w środowisku Windows na środowisku cygwin. Ten skrypt ma jedną funkcję czyszczącą, która usuwa określony folder w bazach systemu w określonych warunkach.Cygwin: różnica między poleceniem " rm -fr" a "rm -fr"?
przygotować listę wszystkich folderu że chcesz usunąć, a następnie użyć polecenia:
rm -rfv $purge (where purge is the list of directories I want to delete)
Teraz gdy testowałem tego skryptu, katalogi nie są coraz usunięte w ogóle. Najpierw myślałem, że jest jakiś problem z listą czyszczenia, ale podczas debugowania dowiedziałem się, że lista czystek jest w porządku.
Po wielu próbach i debugowania Zrobiłem małą zmianę w poleceniu:
\rm -rfv $purge
to tylko rodzaj przeboju i prób i skrypt zaczyna działać prawidłowo. Teraz, o ile wiem, \ rm i rm -f oba oznaczają wymuszone usuwanie.
Teraz, jak mogę to uzasadnić, dlaczego "rm -f" co teraz działa wcześniej, ale "\ rm -f". Chcę poznać podstawową różnicę między tymi dwoma poleceniami.
Próbowałem również podać dokładną ścieżkę polecenia rm, jak/usr/bin/rm -fr. Myślę, że to jest równe \ rm -fr ... prawda? popraw mnie jeśli się mylę – dhroove
Jeśli masz/usr/bin/rm pierwszy w PATH i nie masz zdefiniowanej żadnej funkcji rm(), to tak. Zauważ, że w większości systemów rm znajduje się w/bin/(nie/usr/bin /), ponieważ jest to niezbędne polecenie systemowe. –
nawet po użyciu bezwzględnej ścieżki dla polecenia rm w moim skrypcie. Funkcja purgowania nie działała w skrypcie ... Tylko po tym, jeśli użyłeś \ rm, to tylko jego rozpoczęcie pracy .... Czy mamy dobre wyjaśnienie tego. .. Uprzejmie mnie popraw, jeśli gdzieś się zakręcę .. – dhroove