# Rubyの構文が使えるシェル「rush」がステキ
_published: 2009/04/24_ 
Schemeのシェルがありますが、こちらについては後述。WindowsにはPowerShellという.NETなシェルがあります。今回は、Rubyのシェル「rush」です。これも以前からたくさんのブクマがついていてい、いまさら感でいっぱいですが。
- [rush](http://rush.heroku.com/)
「UNIXのコマンドラインと同じことがすべて行えるirb」だそうな。
トップページに載っている例を2つほど。
普通は、こう。
```sh
find myproj -name \*.rb | xargs grep '^\s*class' | wc -l
```
rushだと、こう。
```ruby
myproj['**/*.rb'].search(/^\s*class/).lines.size
```
普通は、こう。
```sh
kill `ps aux | grep mongrel_rails | grep -v grep | cut -c 10-20`
```
rushだと、こう。
```ruby
processes.filter(:cmdline => /mongrel_rails/).kill
```
見てのとおり、Rubyです。オブジェクト指向です。
シェルの拡張もカンタン。この記事を参考に。
- [InfoQ: rush - Rubyが使えるOOPシェル](http://www.infoq.com/jp/news/2008/03/rush-oop-shell)
IPアドレスを取得するコマンドです。
```ruby
class Rush::Box
def ip_address
bash("ifconfig | grep inet | grep -v 127.0.0.1").match(/addr:([\d.]+)/)[1]
end
end
```
あと、リモート接続の機能があるそうな。
- [Rubyの構文でシェルを実現する「rush」 | エンタープライズ | マイナビニュース](http://journal.mycom.co.jp/news/2008/02/22/042/index.html)
Schemeのシェルについて少し。scshというシェルがあります。構文がSchemeです。
- [Scsh - The Scheme Shell](http://www.scsh.net/)
で、id:higeponがやってるのは、SchemeシェルをOS (Mona OSのデフォルトシェルにしようということです。そこが新しい。
- [IPA:2006年度下期「未踏ソフト」採択概要:5-3](http://www.ipa.go.jp/jinzai/esp/2006mito2/gaiyou/5-3.html)
上記ページより。
普通は、こう。
```sh
find -name "*.h" | xargs grep 'void sub()'
```
Schemeシェルだと、こう。
```scheme
grep "void sub()" (find "*.h"))
```
なんにせよ、自分の好きな言語でマシンを管理できたらステキです。id:amachangは、JavaScriptのシェルを作ればいいよ。