前段时间看过王垠关于 shell 的评论:http://blog.jobbole.com/25792/
觉得说的很有道理。本来结构化的输入输出,用文本的方式传递,增加了解析成本以及大量隐含 bug,是可以说是设计上面的败笔。
我在想,shell 本身应该是门语言,输入输出结构化,ruby 可以用来作为一个主要的载体。搜索了一下相关的工具,发现有:
所以我虚拟一个 ruby-shell:
普通操作:
$ ls
=> [
['a', 'b', 'c']
]
$ ls :l
=> [
[888, 1, 'halida', 'staff', 1019, '2012-10-11 10:11:10', 'intro.md'],
[888, 1, 'halida', 'staff', 1019, '2012-10-11 10:11:10', 'intro.md'],
[888, 1, 'halida', 'staff', 1019, '2012-10-11 10:11:10', 'intro.md'],
]
$ pwd
=> ['home', 'halida', 'temp']
$ mkdir 'test'
$ cd 'test'
=> ['home', 'halida', 'temp', 'test']
$ cd '...'
$ touch 'a.txt', 'b.txt'
$ find '*.txt'
=> ['a.txt', 'b.txt']
管道:
$ io{echo "hello world"} > io{wc}
=> [1,3,11]
输入输出重导向:
$ io{ echo("yes and no") } > fio('/dev/null')
后台:
$ bgd{python module: 'SimpleHTTPServer'}
$ jobs
=> [1, :running, [:python, {module: 'SimpleHTTPServer'}]]
$ fg
特性:
问大家一下看法。包括: