ruby调用执行shell命令的方法

ruby执行shell的方法主要有:

1.Exec方法:

Kernel#exec方法通过调用指定的命令取代当前进程:

值得注意的是,exec方法用echo命令来取代了irb进程从而退出了irb。主要的缺点是,你无法从你的ruby脚本里知道这个命令是成功还是失败。

2.System方法。

Kernel#system方法操作命令同上, 但是它是运行一个子shell来避免覆盖当前进程。如果命令执行成功则返回true,否则返回false。

3.反引号(Backticks,Esc键下面那个键)

这种方法是最普遍的用法了。它也是运行在一个子shell中。

继续阅读

Linux chmod命令

之前用chmod命令一直也没注意chmod go-w xxx, chmod ugo+x xxx这类命令的意义,只是简单的766、+x、+w之类,所以特意把这篇文章转过来给备忘。

转自http://blog.csdn.net/linuxgroup

chmod 命令

用途
更改文件方式。

语法

要用符号更改文件方式
chmod [ -R ] [ -h ] [ -f ] [ [ u ] [ g ] [ o ] | [ a ] ] { { - | + | = } [ r ] [ w ] [ x ] [ X ] [ s ] [ t ] } { File ... | Directory ... }

要用数字更改文件方式
chmod [ -R ] [ -h ] [ -f ] PermissionCode { File ... | Directory ... }

继续阅读

Emacs下的ls指令乱码问题

在Emacs下使用shell的时候,打ls会出现奇怪的代码,但是dir命令却没有。

Google后发现是因为Emacs默认的终端类型是VT100,改成ANSI就可以了。打开~/.emacs文件,如果不存在则自己创建一个。里面添加一行:

(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

这样终端类型就变成了Ansi类型了。

至于什么是终端类型,我们为什么总是要选择它们,在我们SSH的时候就偶尔看到它们。我在网上大致查了一下,似乎这方面的资料不是很多(也许是我找的不仔细),比较靠谱的一个说从前是主机时代,多个终端连接一个主机,所以需要选择对应的终端类型,如今终端几乎都兼容了,但是选择自己喜欢的终端的方式遗留下来,当然也许出自向前兼容的考虑。大部分都兼容VT100,所以默认一般都用VT100,如果终端允许,你可以使用ANSI这样的彩色终端。

如果存在错漏,还请指教。