新手问题 给 Ruby 新人一个建议: 不懂 Linux, 不懂 CLI, 你无法了解 Ruby 是多么的优雅.

zw963 · 2013年09月23日 · 最后由 woody1983 回复于 2013年10月22日 · 5731 次阅读

斗胆给 Ruby 新人这个建议。

就说 split 和 join 吧。用 shell 脚本写,如果不用第三方工具 (awk 我也就不会), 需要这样写:

name=$(basename $0)
# 以 _ 作为 delimiter, 将一个字符串 split 到一个叫做 array 的数组中.
IFS='_' && read -a array <<< "$name"
# 现在 $array 里面有了个数组.
# 以 : 作为 delimiter, 将数组的元素合成一个字符串. 
IFS=":" && task="${array[*]}"
# 恢复默认 IFS.
IFS=
echo "$task"

如果用 ruby, 真的好简单,你根本不用考虑记录分隔符的问题。

task=$(echo `basename $0` |ruby -e 'print ARGF.readlines(".").map(&:chop).join(":")')

通过比较,你可能再也不想用 shell 脚本了。

唯一的一个问题是:万一某些发布版没有 Ruby 解释器咋办?可能有点杞人忧天?

不懂这段脚本是用来做什么的...

哦,IFS 是 internal field separator, 学习了

你拿别人短处和自己长处比,有意思么. ruby 无法取代 bash 之类的 shell 是有道理的。

没感觉有多大进步

好像这个更简单:

sed -e 's/\./:/g'

我能感受到 Ruby 的优雅 , 但不能完全赞同您的观点 .

就想问一个问题,怎样算懂

我对 无法绝对 这两个词眼毫无好感

之前看了一篇文章还不错的 让你用 Python 或 Ruby 来实现 Unix 的命令~

重做 Unix 命令,快速有效学习新语言

没有 Ruby 的系统很多,但是没有一个和 sh 兼容的 shell 的系统,还比较少见。

身为一个 Android dev 我只是觉得 ruby 很简洁,但是我确实没感受到他的优雅特性~~以后有机会再体会吧

#2 楼 @zgm

呵呵,说的也是...

#4 楼 @luikore 师父,在说 split 和 join, 如果仅仅替换,那么 tr '_' ':' 不是更简洁。

其实我想表达的是:

在 Ruby 中面对的 几乎所有 问题,或者说 Ruby 的绝大多数功能,都是 UNIX 下存在 很久的功能 优雅的再包装,Ruby 已经深深的扎根在 Linux 文化当中,你不可能绕过 UNIX 而试图去真正了解 Ruby.

Ruby 不一定更简洁,但一定更优雅,更易读。

#12 楼 @zw963 其实语言都差不多是这样子的东西。。。。。。

我赞同这句话: 「给 Ruby 新人一个建议:不懂 Linux, 不懂 CLI, 你无法了解 Ruby」

#13 楼 @ruby_sky  歪楼下,您好。您在 GitHub 上好像有一个 api4baidu 的项目,是吧?做的挺有意思的,希望能深入沟通交流一下。

#15 楼 @mobiwolf 貌似我没怎么宣传过这个 gem,api4baidu ,需要改进添加的地方还挺多,有七天的时间没提交了,研究别的去了,国庆会继续完善这个 gem。 如果您有什么需要沟通的请直接联系我的新浪微博:http://www.weibo.com/denghuaitao

#8 楼 @woody1983 看来您是个控制主义者

#8 楼 @woody1983 这个太水了额 至少也要实现所有选项 认认真真的做完一个程序吧。

不要指望一门其它脚本语言可以取代 shell。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号