Każdy może dać mi znać możliwe kody powrotu dla polecenia rm -rf inne niż zero, tj. Możliwe kody powrotu dla przypadków awarii. Chcę poznać bardziej szczegółowy powód niepowodzenia polecenia, inaczej niż polecenie nie powiodło się (powrót inny niż 0).
@ ØHankyPankyØ Tak naprawdę jestem zaskoczony, że strona podręcznika rm nie opisuje możliwych kodów statusu wyjścia. Jeśli korzystasz man lsz systemu Ubuntu, wyjaśnia on powód niezerowego statusu wyjścia
Nie zgadzam się z migracją z SO, ponieważ OP jest zainteresowany kodami powrotu, jest bardzo prawdopodobne, że jest to problem dotyczący skryptów / programowania.
Aby zobaczyć kod powrotu, możesz użyć echo $?w bash.
Aby zobaczyć rzeczywiste znaczenie, niektóre platformy (takie jak Debian Linux) mają perrordostępne pliki binarne, których można użyć w następujący sposób:
$ rm -rf something/; perror $?
rm: cannot remove `something/': Permission denied
OS error code 1: Operation not permitted
rm -rfautomatycznie pomija większość błędów. Najbardziej prawdopodobnym błędem, jaki zobaczysz, jest 1(Operacja niedozwolona), która wystąpi, jeśli nie masz uprawnień do usunięcia pliku. -fcelowo pomija większość błędów
@MattJoyce poinformuje stracecię, jeśli wywołanie systemowe nie powiedzie się, ale dopóki nie spojrzysz na źródło, nie wiesz, jak syscall odnosi się do statusu wyjścia z programu (na przykład, jeśli się uruchomisz -f, ENOENTzostanie pominięty). Dlatego nie ma to tutaj znaczenia
Chociaż może to częściowo mieć rację, nie odpowiada na pytanie PO, I want to know more detailed reason for the failure of the command unlike just the command is failed(return other than 0)więc głosy w dół są zrozumiałe.
komunikaty o błędach, których szukasz, znajdują się w rzeczywistym kodzie pliku usuwania ... dla busyboksa możesz załatać git.busybox.net/busybox/tree/libbb/remove_file.c ... dla każdego if (!(flags & FILEUTILS_FORCE)) {dodania else{printf("same error message as perror");}i jestem pewien, że inne implementacje by być podobne, ale jeśli nie, wersję busyboksa można zbudować samodzielnie i dołączyć.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.
man ls
z systemu Ubuntu, wyjaśnia on powód niezerowego statusu wyjścia