GNU Info

Info Node: (elisp)Shell Arguments

(elisp)Shell Arguments


Next: Synchronous Processes Prev: Subprocess Creation Up: Processes
Enter node , (file) or (file)node

Shell Arguments
===============

   Lisp programs sometimes need to run a shell and give it a command
that contains file names that were specified by the user.  These
programs ought to be able to support any valid file name.  But the shell
gives special treatment to certain characters, and if these characters
occur in the file name, they will confuse the shell.  To handle these
characters, use the function `shell-quote-argument':

 - Function: shell-quote-argument argument
     This function returns a string which represents, in shell syntax,
     an argument whose actual contents are ARGUMENT.  It should work
     reliably to concatenate the return value into a shell command and
     then pass it to a shell for execution.

     Precisely what this function does depends on your operating
     system.  The function is designed to work with the syntax of your
     system's standard shell; if you use an unusual shell, you will
     need to redefine this function.

          ;; This example shows the behavior on GNU and Unix systems.
          (shell-quote-argument "foo > bar")
               => "foo\\ \\>\\ bar"
          
          ;; This example shows the behavior on MS-DOS and MS-Windows systems.
          (shell-quote-argument "foo > bar")
               => "\"foo > bar\""

     Here's an example of using `shell-quote-argument' to construct a
     shell command:

          (concat "diff -c "
                  (shell-quote-argument oldfile)
                  " "
                  (shell-quote-argument newfile))


automatically generated by info2www version 1.2.2.9