Results tagged “unix”

December 24, 2009

更换终端程序

在买了 MacBook 之后,我的终端程序一直用的是系统自带的 Terminal.app。总体感觉来说还不错,虽然默认的配置看起来丑了些,但把风格切换成 Pro 的,字体弄成平滑的,用起来也算舒心了。

其实丑不丑倒是没关系,这方面我不是很挑剔,但最让我不习惯的是无法使用 Bash 中的快捷键。比方说,向左移动一个单词,过去我在 Linux 下可以按 Alt+b 来完成,这在命令行中特别有用。有时要调整某个参数,没有这个快捷键,用方向键或 Ctrl+b 来一个字符一个字符来移动的,就特别麻烦。我观察了一阵子,发现最主要的问题在于 Terminal.app 是个 Mac 程序,因此很多系统快捷键都需要用 command 键来调用。而 command 左边的 alt 键,则是用于输入一些特殊的符号,比如 ∫(是数学里的积分符号,我不知道能不能正常显式)。所以我在习惯之前一直非常苦恼。

对我来说,终端程序基本上是日常必备的软件。每次重启之后我要首先打开的几个程序中,就有终端程序。很多人觉得命令行难,但是一旦习惯了 UNIX shell 的那种工作方式,就感觉一直离不开了,因为有些程序实在是太赞了。所以我就很怀念过去我自己配置的 fvwm 桌面,我把 Alt+F1 快捷键绑定到“打开一个 urxvt 窗口”。我在启动脚本里面加上了运行 urxvt 的服务进程的指令,所以开机后就会在后台有个进程来先载入 rxvt 的一部分,所以我的快捷键只是打开一个新的窗口,因此速度非常快,基本上是随用随调。另外,我的 Alt+F2 绑定的是运行 gmrun,从里面可以运行任何命令,我一般用它来打开某个程序,就像 Quicksilver 一样用。

所以在 Mac 下,我也希望弄到这个效果。不过一来很少有软件会用到 C-S 架构,二来我对 Mac 本身的快捷键也不熟悉。在 fvwm 里所有的快捷键都是我从头自己设计的,不会有冲突问题;在 Mac 中会不会有冲突问题,发生冲突时以谁为主,我都不清楚,也没有什么时间研究了。所以就一直迟迟没有弄成这个功能,只是在某个 space 里面固定放一个 Terminal.app 窗口,等需要的时候就过去那个 space 就好了。

后来我好像是在课堂上,看到坐在我前面几排中有人一样用 MacBook,他的系统有一种功能,就是把一个终端窗口弄的和屏幕一样宽,高度大概有十公分多一些,所到屏幕的最上方。用的时候,终端窗口会从上方滑下来,用完了之后又滑了上去。我过去在用 fvwm 的前期,曾经也用这种方式做过。启动的时候运行一个 aterm,在屏幕上方缩成一条线。等我鼠标顶到屏幕最上方的时候,aterm 窗口会滑下来。开始的时候我觉得这个功能挺有意思,后来觉得有点添乱,所以在有了新的方法之后,就没有再用这个。我当时觉得这个样子应该会解决一些问题,于是就回家研究,发现了 SIMBL 这个插件,然后需要做一些设定,绑定到一个快捷键上,就完成了这个效果。我印象里好像是绑定到了 command+F2 上,当我按这个快捷键时,Terminal.app 会从上方滑下来,占据几乎整个桌面(除了 Dock 部分),用完了之后,再按一次 command+F2,窗口就回去了。

当时我就一直这么用着,Terminal.app 可以建立多个标签页,因此有多个终端可以同时使用,用起来也够了。可是当我把系统升级到 Snow Leopard 后,好像 SIMBL 不能用了,大概是 32 位和 64 位兼容的问题。那时我每次运行 Terminal.app 之后,Dock 上会出现它的图标,然后过几秒钟之后,图标就没了。当时我搜索过一些网页,好像没有什么解决办法,于是就干脆放弃 Terminal.app,改用我之前就用过的 iTerm。关于这个 iTerm,我是在一些文章上看到的,之前也用过。好像是在过去,Mac 自带的 Terminal.app 功能还不大够的时候,人们会用 iTerm 代替。我试用的时候感觉 iTerm 功能也就那个样子,于是还是用系统自带的终端。这会 Terminal.app 不能运行了,我就用 iTerm 来代替。

iTerm 我用起来也还不错的。我没有对显示效果做任何的调校,因为默认的界面就已经不错了。其中我最喜欢的功能是按 command+return 会把 iTerm 整个全屏,这样在终端上工作就可以不受打扰了,而且终端更宽了之后显式的东西也多,读起来也更方便了。iTerm 同样支持标签页,但它的标签页切换方式不是系统默认的 command+shift+[ 和 command+shift+],而是 command+数字键。这在开始让我很不习惯,我经常按原先的切换标签,得到的确实“嘟嘟”的错误提示音。不过后来习惯了之后,反而觉得这种方法能一下子跳到想去的标签,感觉也不错。而且现在 Google Chrome 也兼容这种切换的方式,我接触这种方式的机会多了,也就更习惯了。想比较而言,还有第三种切换标签页的方法,一直为我所不齿,就是 command+左右方向键,Adium 就是用的这种方法。这种方法最大的问题是,切换标签的时候,右手要从主要的区域挪到方向键区域,很麻烦的,要让我每天都要这样移动,一定会疯掉。后来在一些小的部件升级之后,Terminal.app 可以使用了,不过那时我已经习惯了 iTerm,所以就一直这么用着。

iTerm 还是有一个问题,就是一些细节上的地方还是太过靠近与 Mac,而不是 UNIX。主要就是向左向右移动一个单词的问题。我在按 command+b 的时候出现的是 iTerm 的标签;我在按 option+b 的时候出现的还是积分符号。而我在前几天看了一个视频,让我回到了 Terminal.app 的怀抱。我看的那个视频是教给我们如何在 Terminal.app 中使用 UNIX 那种移动光标的方法,原来就是在设定里面的 keyboard 标签下面,选中 “Use option as meta key”,就可以通过 option+b 之类的快捷键来快速移动光标了。

terminal-setting-meta-key.png

知道了这一点之后,我又翻了一下 iTerm 的设定,没有找到有相关的设定。于是我立刻决定回到 Terminal.app 的怀抱。之前的 Pro 主题的一些具体参数因为升级系统而丢掉了,二来也确实有了一些审美疲劳,于是就换了一个 Novel 主题,感觉米黄色的底色加上黑色的字符,既明显又不刺眼,十分舒服。

terminal-novel-theme.png

换回 Teriminal.app 之后,我有几点不习惯。首先是现在我经常用 command+数字键 来切换标签,而在 Terminal.app 程序里这个快捷键的作用是切换不同的 Terminal.app 窗口。我一般只开一个窗口,并在那个窗口里开多个标签,所以按这个快捷键时会经常发出“嘟嘟”的提示音。二是我在用 command+tab 切换程序的时候,脑子里想的还是 iTerm 的图标,等半天后才反应过来应该找 Terminal.app 的图标才对。

October 5, 2009

Mac OS X下创建locate数据库的命令

Mac OS X虽然底层是正统的BSD UNIX,但有一些命令还是跟我过去用Linux的经验相左的。我没有经历过那种在大型机和工作站上运行UNIX的时代,不知道到底是哪种方式更“正统”一些。不过现在那个时代已经一去不复返了,很多软件直接在Linux下开发运行,自然也变得更正统了一些了吧。

我过去用Linux的时候,经常要通过关键字找一个文件。比如说我想知道ls程序放在什么目录,就要用到locate。它通过自己维护一个数据库,而不是遍历整个目录结构,因此搜索的速度很快。但它的数据库需要运行程序来更新。我印象里记得Gentoo里默认的locate软件包用的更新程序好像是locate-update之类的(太久没用,忘记了)。但在Mac OS X里面就完全不是这么回事了。

经过查找,发现这个命令是让locate开始生成数据库的(我升级到Snow Leopard后,原先的数据库就没了,因此要重新生成):

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

但我不知道是不是更新数据库也是一样的命令,因此就把它先记下来,等以后知道了再更新。

July 14, 2009

Unix-Center.Net与UNIX在中国的推广

今天收到了一封来自Unix-Center.Net的邮件,邮件内容为号召大家为Unix-Center捐款。Unix-Center的创始人蒋清野也在官方blog发表了一篇内容相似的文章:《Unix-Center.Net需要您的帮助》。

看完了这封信,我感到一点悲哀的感觉。坦率的说,我不会捐款,虽然我很佩服蒋清野的行动,以及已经捐款的那些人们。有点更冷血的说,我对Unix-Center这个网站的存在价值有所怀疑。更确切的说,我对这种推广UNIX的方式有所怀疑。

我忘了是在什么时候注册过Unix-Center了,也忘了当时是出于什么样的目的来注册的了。因为不要钱,多一个帐号不压人,可能这就是我当时注册的目的。我在注册后的登录次数大概还是个位数,希望没有浪费Unix-Center的资源。我的登录的次数说明了Unix-Center对于普通用户的吸引力。如果Unix-Center是为了让用户通过ssh远程登录来体验UNIX的话,我想这种方式是失败的。

推广UNIX,我觉得关键在于让用户了解UNIX的好处。而单单通过ssh所体现出来的UNIX的好处是很有限的。我过去觉得像用户来展示UNIX下的compiz之类的动感桌面是件很逊的事,但公平上来说,让用户通过ssh来体验UNIX的效果,远不如让用户看到UNIX绚丽的桌面更有效。通过ssh来体验UNIX,对于初学者来说只是留下了UNIX晦涩、难用的印象。

如果在上个世纪70至90年代,我会觉得Unix-Center做了一件不得了的事情。现在人们以为Windows的正版授权费用昂贵,与那个时候一套UNIX的授权根本不能比。个人用户想在自己的电脑上用UNIX是件不可能的事情。那时候一些大学的UNIX主机有远程端口可以登录,对UNIX的使用基本上也仅限于命令行的操作,如果有一个Unix-Center这么个公益网站可以让用户免费使用UNIX,基本上就是让用户开机就登录的服务。

而放到今天,免费的UNIX、Linux发行版本随处可得的情况下,使用UNIX的成本被无限放低,这时候如果再通过ssh登录来使用UNIX,就太落后了。在今天,想用UNIX的人,只要从网上下载一个iso文件,刻盘安装,就可以以最大的速度使用UNIX,完全不必忍受ssh远程登录的缓慢速度。从另一个角度上说,如果一个人连在自己的电脑上安装UNIX都不愿意的话,让他使用Unix-Center的ssh服务也意义不大。简明来说,就算知道了UNIX是命令行,最后产生的意义接近于0。

那么提供ssh登录能够给用户什么好处呢?蒋清野认为是有的。他在邮件中说道:“譬如说,清华大学教授操作系统课程的一位教授告诉我说他让学生们到 Unix-Center.Net来对不同的操作系统进行比较。又譬如说,我收到中国科技大学一位博士生的电子邮件,说是他利用这些服务器完成了毕业论文中比较关键的一些计算。这些有限的证言,让我坚信这个系统是有其存在的意义的。”看到这两个例子,让我觉得荒谬的无奈。

首先我不认为学习操作系统课程需要比较不同的UNIX、Linux这些表面的东西,就算需要,通过ssh登录就能比较出来吗?shell的不同、配置文件位置的不同,这些相比起操作系统使用的内部策略不同来说,根本毫无意义。就算这种比较是必要的,清华大学作为全国最好的高等学府之一,竟然没有自己的UNIX服务器,教授反而要学生通过一个私人的项目来学东西,这不是相当可笑的事情吗?中国科技大学在全国的大学中也算是第一集团的了,自己的博士生的计算还要通过非盈利组织提供的计算机来完成。我不相信凭中科大的经济实例还负担不起比蒋清野个人出钱购买的计算机。这种服务,本来就应该是每个大学应该做的,甚至有条件的话,应该向周边的社区免费或便宜的提供的啊。如果说山东大学没有这样的服务,我勉强可以接受;如果连清华大学都没有给学生用的UNIX主机,我是绝对不能认同的。

无可置疑,蒋清野的这个工作确实很伟大。70万人民币的硬件费用,每年30万人民币的托管和带宽费用,听起来还是一个天文数字。让一个个人来出这些费用,我觉得是极为荒谬的。而这个项目带给大家的是什么东西呢,可以说是一个小型的、免费的Dreamhost基本服务了。Unix-Center在免费的条件下,坚持了这么几年,已经是一个壮举了。

根本上来说,我个人觉得UNIX不需要推广,推广了也没用,也基本上无法推广。归根到底,UNIX在中国的合理定位,还是“少数人手中的玩具”比较合适。真要做到这么大规模的推广,非得国家支持才行。如果这个服务由国家相关部门出资赞助(至少是托管和带宽费用,国家能花4170万来搞绿坝,同样的资金,花在每年30万元的托管费用上,国家可以支持整整139年),将是一件美事,可推广UNIX的责任毕竟无法依赖那些只动动嘴皮子不办实事的官员身上。在这种情况下,UNIX也只能在少数的爱好者中间流传,这样Unix-Center带给大家的,就远远小于一些提供知识的社区(如Ubuntu中文社区)带给我们的价值了。

说了这么多,总结起我的想法是,Unix-Center靠大家的捐助,想要坚持下去是比较困难的,也没有太大意义。假定捐款的人是UNIX爱好者,那么自己拥有一台UNIX工作站不是难事,有了UNIX工作站,又何必要ssh远程登录一个更慢的UNIX主机呢?而且中国目前似乎也没有捐助公益项目就能免税的政策,这样下去的捐助肯定会越来越少。因此我觉得对于Unix-Center的未来来说,要么停办,改做一些更有意义的知识推广活动(就像一些中文社区做的那样),要么就要走商业路线。SDF的模式是一个不错的例子。SDF可以算是美国的Unix-Center,为大家提供telnet/ssh远程接入服务,从1987到现在,已经有22年的历史了。任何人都可以获得ssh帐号,但只有付费用户才能获得更高权限(运行更多的程序)、使用数据库或HTTP服务器、或者获得更高的空间。一个UNIX爱好者,付36美元,获得终身的ARPA权限,我觉得对用户来说是很合理的。

1

Tags

OpenID accepted here Learn more about OpenID

Find recent content on the main index or look in the archives to find all content.