I do not know of any shell that has a feature that would allow one to do command preprocessing, but I have managed to persuade shell-mode in emacs to do what you want.

Emacs shell-mode can be customized by setting some variables defined in the comint package. Put the following code in a file with ending ".el" (emacs lisp), and load it with the command "M-x load-file". After that, opening a shell buffer with "M-x shell" will give you a "shell" that does what you want. Quoting is achieved by enclosing the text to quote with "my-quote()".

Emacs lisp code:

(defun my-quote-function (s) "quote special chars in string" (shell-quote-argument s)) (defun my-input-sender (proc command) "specialized comint-input-sender function with extra quoting" (let ((quoting-regex "my-quote(\\(.*\\))")) (string-match quoting-regex command) (let ((string-to-quote (match-string 1 command))) (if (null string-to-quote) (comint-simple-send proc command) (let ((quoted-string (my-quote-function string-to-quote))) (string-match quoting-regex command) (comint-simple-send proc (replace-match quoted-string t t command))))))) (setq comint-input-sender 'my-input-sender)

Works like this (excerpt from shell mode buffer):

--> echo $foo --> echo my-quote($foo) $foo --> echo "This is not quoted but" my-quote("this") is This is not quoted but "this" is -->

Christian Lemburg
Brainbench MVP for Perl
http://www.brainbench.com


In reply to Re: Command line preprocessing by clemburg
in thread Command line preprocessing by suaveant

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.