vimだと、
echo hoge | vim -
というように、"-"とオプション指定すると標準入力のものを開いて編集できるらしい。
emacsではどうすればいいのかな?と調べてみたけどよく分からない。とりあえず見つけたのがコレ。
unix - How to make Emacs read buffer from stdin on start? - Super User
真似してやってみた。PATHが通っているところでemacspipeというシェルを作成。
#!/bin/sh TMP=$(mktemp -t emacs) cat > $TMP emacsclient -n $TMP rm $TMP
emacsclientってコマンドは最近まで全然知らなかったんだけど、"M-x server-start"しておけばemacsclientコマンドに渡したファイルをemacsで開けるようになるらしい。べんり!
これで
echo hoge | emacspipe
という具合に標準入力で渡ってきたものをemacsで見ることができるようになった。
追記
mktempで生成されるファイル名だとmodeの判別されなくてアレなので、引数で拡張子渡せるようにした。
#!/bin/sh TMP=$(mktemp -t emacs).$1 cat > $TMP emacsclient -n $TMP rm $TMP
こうしておくと、
echo print 1 | emacspipe pl
と例えば".pl"の拡張子を付加して開くようにすることで自動的にperlのmodeで開くようになって編集しやすい。