rm -rf return codes
To see the return code, you can use echo $?
in bash.
To see the actual meaning, some platforms (like Debian Linux) have the perror
binary available, which can be used as follows:
$ rm -rf something/; perror $?
rm: cannot remove `something/': Permission denied
OS error code 1: Operation not permitted
rm -rf
automatically suppresses most errors. The most likely error you will see is 1
(Operation not permitted), which will happen if you don't have permissions to remove the file. -f
intentionally suppresses most errors
grabbed coreutils from git....
looking at exit we see...
openfly@linux-host:~/coreutils/src $ cat rm.c | grep -i exit
if (status != EXIT_SUCCESS)
exit (status);
/* Since this program exits immediately after calling 'rm', rm need not
atexit (close_stdin);
usage (EXIT_FAILURE);
exit (EXIT_SUCCESS);
usage (EXIT_FAILURE);
error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
exit (EXIT_SUCCESS);
exit (status == RM_ERROR ? EXIT_FAILURE : EXIT_SUCCESS);
Now looking at the status variable....
openfly@linux-host:~/coreutils/src $ cat rm.c | grep -i status
usage (int status)
if (status != EXIT_SUCCESS)
exit (status);
enum RM_status status = rm (file, &x);
assert (VALID_STATUS (status));
exit (status == RM_ERROR ? EXIT_FAILURE : EXIT_SUCCESS);
looks like there isn't much going on there with the exit status.
I see EXIT_FAILURE and EXIT_SUCCESS and not anything else.
so basically 0 and 1 / -1
To see specific exit() syscalls and how they occur in a process flow try this
openfly@linux-host:~/ $ strace rm -rf $whatever
fairly simple.
ref:
http://www.unix.com/man-page/Linux/EXIT_FAILURE/exit/