Title: emacs: standard input is not a TTY
Date: 2011-12-11 13:54:02

Did you ever tried something like :

    :::bash
    $ find -name '*.c' | xargs emacs
    or
    $ grep -rl snmp . | xargs emacs

and got the error "emacs: standard input is not a tty" ? That's normal,
as the stdin for emacs is here the pipe, not your tty, you need a
workaround to leave the normal stdin to your emacs. There are different
approches, the one I used for a long time was a command substitution :

    :::bash
    $ emacs $(find -name '*.c')

But other approches exists, redirecting /dev/tty to emacs' stdin :

    :::bash
    $ find -name '*.c' | xargs sh -c 'emacs "$@" < /dev/tty' emacs


And if you are searching for a specific pattern with grep, you should
want to jump directly to the right line using the '+line file' syntax of
emacs, and the shell substitution :

    :::bash
    $ emacs $(grep -rn snmp services/ | sed -r 's/([^:]*):([0-9]*):.*/+\2 \1/g')

It's good while having only one occurence of the pattern in each file,
but if many occurences exists, the file is oppened only once, with a
while you can open one emacs for each occurence of the searched pattern
and the /dev/tty redirection :

    :::bash
    $ grep -rn snmp services/ | sed -r 's/([^:]*):([0-9]*):.*/+\2 \1/g' | while read line file; do emacs $line $file < /dev/tty; done
