On Tue, 25 Jan 2005, Ric Fischer wrote: > > > mv: cannot move `andor' to `and\\/or': No such file or directory > > > > You can not use the / (slash) because it means directory. > > Actually, that's not quite true. If I > > $ cd /home/ric > > The '/' (forward slash) character is not part of the names for either > home or ric. The file system uses it as a delimiter to separate one > level of the file system from another. It's far more complicated than > that, but that's a boiled-down explanation. Because the '/' character > is only a delimiter and not a part of the file system itself, it's a > legal character in filenames. > > For some reason, Bash is auto-escaping things in his command line. > > Hmm. This is curious. Bash is holding our hands far more than I > remember from way, way back when I first played with Unix and learned > about shell stuff. It has nothing to do with bash nor any shell. The / is not a valid character for a basename. > Does a more modern-day Linux shell guru have an answer? Is this supposed to be an insult? I am not "modern-day"? I am not a "Linux guru"? I am not a "shell guru"? :) Have a look at coreutils's basename(1) source code. It specifically checks for '/' as the full pathname delimiter making it impossible for the POSIX.2 basename to work if the filename actually contained a slash. (See ./config.hin, ./lib/dirname.h, lib/basename.c, and src/basename.c in coreutils-5.2.1.) By default, the fnmatch(3) standard C library function uses the slash as the delimiter. The NetBSD libc code for file hierarchy traversing (src/lib/libc/gen/__fts13.c) specifically lists '/' as the pathname delimiter making it impossible to use a slash in a basename component. I know it is not Linux -- but it is Unix compatible. (This is fts(3) of the standard C library.) Also have a look at GLIBC's string/basename.c for basename(3) aka gnu_basename -- it also specifically uses a '/' with strrchr(3) to return the filename. (Also making a slash impossible.) And see GLIBC's misc/dirname.c for dirname(3) function -- it also specifically uses the '/' as the pathname separator. I'm sure I can find examples in the Linux kernel itself, but that may be for another day. Jeremy C. Reed technical support & remote administration http://www.pugetsoundtechnology.com/ --------------------------------------------------- PLUG-discuss mailing list - PLUG-discuss@lists.plug.phoenix.az.us To subscribe, unsubscribe, or to change you mail settings: http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss