Next: , Previous: Local Variables, Up: Top


5 Shell Command Guessing

Based upon the name of a file, Dired tries to guess what shell command you might want to apply to it. For example, if you have point on a file named foo.tar and you press !, Dired will guess you want to `tar xvf' it and suggest that as the default shell command.

The default is mentioned in brackets and you can type M-p to get the default into the minibuffer and then edit it, e.g., to change `tar xvf' to `tar tvf'. If there are several commands for a given file, e.g., `xtex' and `dvips' for a .dvi file, you can type M-p several times to see each of the matching commands.

Dired only tries to guess a command for a single file, never for a list of marked files.

dired-guess-shell-alist-default
Predefined rules for shell commands. Set this to nil to turn guessing off. The elements of dired-guess-shell-alist-user (defined by the user) will override these rules.
dired-guess-shell-alist-user
If non-nil, a user-defined alist of file regexps and their suggested commands. These rules take precedence over the predefined rules in the variable dired-guess-shell-alist-default (to which they are prepended) when dired-do-shell-command is run).

Each element of the alist looks like

          (regexp command...)
     

where each command can either be a string or a Lisp expression that evaluates to a string. If several commands are given, all of them will temporarily be pushed onto the history.

If `*' in the shell command, that means to substitute the file name.

You can set this variable in your ~/.emacs. For example, to add rules for `.foo' and `.bar' file extensions, write

          (setq dired-guess-shell-alist-user
                (list
                 (list "\\.foo$" "foo-command");; fixed rule
                 ;; possibly more rules...
                 (list "\\.bar$";; rule with condition test
                        '(if condition
                             "bar-command-1"
                           "bar-command-2"))))
     

This will override any predefined rules for the same extensions.

dired-guess-shell-gnutar
Default: nil

If non-nil, this is the name of the GNU Tar executable (e.g., `tar' or `gnutar'). GNU Tar's `z' switch is used for compressed tar files. If you don't have GNU tar, set this to nil: a pipe using `zcat' is then used.

dired-guess-shell-gzip-quiet
Default: t

A non-nil value means that `-q' is passed to gzip overriding a verbose option in the GZIP environment variable.

dired-guess-shell-znew-switches nil
Default: nil

A string of switches passed to znew. An example is `-K' which will make znew keep a .Z file when it is smaller than the .gz file.

dired-shell-command-history nil
History list for commands that read dired-shell commands.