# HG changeset patch # User Richard M. Stallman # Date 1026040533 0 # Node ID 09a72d736076d454070be47b16b5ed5f59930467 # Parent abfe123bd6ff69b806741070043869778e3c6754 Update description of * and ? for shell commands. Mention that v uses external viewers. diff -r abfe123bd6ff -r 09a72d736076 man/dired.texi --- a/man/dired.texi Sun Jul 07 10:56:04 2002 +0000 +++ b/man/dired.texi Sun Jul 07 11:15:33 2002 +0000 @@ -276,12 +276,15 @@ @item v @kindex v @r{(Dired)} @findex dired-view-file -View the file described on the current line, using @kbd{M-x view-file} -(@code{dired-view-file}). +View the file described on the current line, using either an external +viewing program or @kbd{M-x view-file} (@code{dired-view-file}). -Viewing a file is like visiting it, but is slanted toward moving around -in the file conveniently and does not allow changing the file. -@xref{Misc File Ops,View File, Miscellaneous File Operations}. +@vindex dired-view-command-alist +External viewers are used for certain file types under the control of +@code{dired-view-command-alist}. Viewing a file with @code{view-file} +is like visiting it, but is slanted toward moving around in the file +conveniently and does not allow changing the file. @xref{Misc File +Ops,View File, Miscellaneous File Operations}. @item ^ @kindex ^ @r{(Dired)} @@ -658,40 +661,51 @@ @itemize @bullet @item -If you use @samp{*} in the shell command, then it runs just once, with -the list of file names substituted for the @samp{*}. The order of file -names is the order of appearance in the Dired buffer. +If you use @samp{*} surrounded by whitespace in the shell command, +then the command runs just once, with the list of file names +substituted for the @samp{*}. The order of file names is the order of +appearance in the Dired buffer. Thus, @kbd{! tar cf foo.tar * @key{RET}} runs @code{tar} on the entire list of file names, putting them into one tar file @file{foo.tar}. +If you want to use @samp{*} as a shell wildcard with whitespace around +it, write @samp{*""}. In the shell, this is equivalent to @samp{*}; +but since the @samp{*} is not surrounded by whitespace, Dired does +not treat it specially. + @item -If the command string doesn't contain @samp{*}, then it runs once -@emph{for each file}, with the file name added at the end. +If the command string doesn't contain @samp{*} surrounded by +whitespace, then it runs once @emph{for each file}. Normally the file +name is added at the end. For example, @kbd{! uudecode @key{RET}} runs @code{uudecode} on each file. -@end itemize -What if you want to run the shell command once for each file, with the -file name inserted in the middle? You can use @samp{?} in the command -instead of @samp{*}. The current file name is substituted for -@samp{?}. You can use @samp{?} more than once. For instance, here is -how to uuencode each file, making the output file name by appending -@samp{.uu} to the input file name: +@item +If the command string contains @samp{?} surrounded by whitespace, the +current file name is substituted for @samp{?}. You can use @samp{?} +this way more than once in the command, and each occurrence is +replaced. For instance, here is how to uuencode each file, making the +output file name by appending @samp{.uu} to the input file name: @example uuencode ? ? > ?.uu @end example +@end itemize -To use the file names in a more complicated fashion, you can use a -shell loop. For example, this shell command is another way to -uuencode each file: +To iterate over the file names in a more complicated fashion, use an +explicit shell loop. For example, this shell command is another way +to uuencode each file: @example -for file in *; do uuencode "$file" "$file" >"$file".uu; done +for file in * ; do uuencode "$file" "$file" >"$file".uu; done @end example +@noindent +This simple example doesn't require a shell loop (you can do it +with @samp{?}, but it illustrates the technique. + The working directory for the shell command is the top-level directory of the Dired buffer.