Next: Virtual Dired, 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-n` 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-n` 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-case-fold-search`
  Default: `t`

  Non-`nil` means `dired-guess-shell-alist-default` and `dired-guess-shell-alist-user` are matched case-insensitively.

`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.