Hi all, This patch adds a '-v' option to rm(1) for more verbose output.
$ mkdir a; touch a/b; touch c $ rm -rfv * removed 'a/b' removed directory 'a' removed 'c' Kind regards, Job diff --git bin/rm/rm.1 bin/rm/rm.1 index 5c8aefaab7d..7de2c7067ee 100644 --- bin/rm/rm.1 +++ bin/rm/rm.1 @@ -95,6 +95,8 @@ that directory is skipped. .It Fl r Equivalent to .Fl R . +.It Fl v +Explain what is being done. .El .Pp The diff --git bin/rm/rm.c bin/rm/rm.c index 3242ef5f410..574609c64e9 100644 --- bin/rm/rm.c +++ bin/rm/rm.c @@ -50,7 +50,7 @@ extern char *__progname; -int dflag, eval, fflag, iflag, Pflag, stdin_ok; +int dflag, eval, fflag, iflag, Pflag, vflag, stdin_ok; int check(char *, char *, struct stat *); void checkdot(char **); @@ -73,7 +73,7 @@ main(int argc, char *argv[]) int ch, rflag; Pflag = rflag = 0; - while ((ch = getopt(argc, argv, "dfiPRr")) != -1) + while ((ch = getopt(argc, argv, "dfiPRrv")) != -1) switch(ch) { case 'd': dflag = 1; @@ -93,6 +93,9 @@ main(int argc, char *argv[]) case 'r': /* Compatibility. */ rflag = 1; break; + case 'v': + vflag = 1; + break; default: usage(); } @@ -201,8 +204,12 @@ rm_tree(char **argv) case FTS_DP: case FTS_DNR: if (!rmdir(p->fts_accpath) || - (fflag && errno == ENOENT)) + (fflag && errno == ENOENT)) { + if (vflag) + (void)fprintf(stdout, + "removed directory '%s'\n", p->fts_path); continue; + } break; case FTS_F: @@ -213,8 +220,12 @@ rm_tree(char **argv) /* FALLTHROUGH */ default: if (!unlink(p->fts_accpath) || - (fflag && errno == ENOENT)) + (fflag && errno == ENOENT)) { + if (vflag) + (void)fprintf(stdout, + "removed '%s'\n", p->fts_path); continue; + } } warn("%s", p->fts_path); eval = 1; @@ -262,7 +273,8 @@ rm_file(char **argv) if (rval && (!fflag || errno != ENOENT)) { warn("%s", f); eval = 1; - } + } else if (vflag) + (void)fprintf(stdout, "removed '%s'\n", f); } } @@ -430,6 +442,6 @@ skip: void usage(void) { - (void)fprintf(stderr, "usage: %s [-dfiPRr] file ...\n", __progname); + (void)fprintf(stderr, "usage: %s [-dfiPRrv] file ...\n", __progname); exit(1); }