シェル芸界隈でVimシェル芸なるVimをワンライナーで使う代物が流行ってたので、そろそろEmacsで解いてくる猛者が出てくるかなーとか考えていた。 で、なんか標準入力受け付けられないという話だったので調べてみたところ、「--insert」で/dev/stdinを指定すれば標準入力を受け付けられるらしい。
echo abcd | emacs -Q --batch --insert /dev/stdin --eval='(princ (replace-regexp-in-string "a" "1" (buffer-string)))'
blacknon@BS-PUB-UBUNTU-01:~$ echo abcd | emacs -Q --batch --insert /dev/stdin --eval='(princ (replace-regexp-in-string "a" "1" (buffer-string)))'
1bcd
さらに、@kuwashimaさんがEmacsでシェル芸の問題を解いてみてくれた。
@blacknon_ 知見がないので最短じゃないかもしれませんが Q1 https://t.co/eqlGmJRMgD #シェル芸 #Emacs
— kuwa1 (@kuwashima) 2017年2月15日
普通に再帰関数 27回 Q6 https://t.co/gSa5ISMP8u #シェル芸 #Emacs
— kuwa1 (@kuwashima) 2017年2月15日
はー…(゚д゚ )。 さすがに、標準入力の読み込み時点でVimシェル芸ほどの短さでは書けないようだが、出来ないことは無いんだなー…とか考えていたところ、数か月前に先駆者がいたようだ。
vi とか powershell 版が出てきたので elisp で #シェル芸 #Emacs pic.twitter.com/L9BtsH58M7
— ゾンビプログラマ (@Heliac1999) 2016年10月30日
世の中は広い。