1.IO重定向功能分析
IO重定向也是Shell的基本功能之一,这篇文章比较全面地介绍了Linux Shell的IO重定向功能。总结一下,IO重定向的大致格式是这样:
cmd [src | &] (> | < | >> ) (& num|-) | dst
貌似写得有点复杂(我不是故意的)。解释一下,整个重定向语句由三部分组成:
IO重定向也是Shell的基本功能之一,这篇文章比较全面地介绍了Linux Shell的IO重定向功能。总结一下,IO重定向的大致格式是这样:
cmd [src | &] (> | < | >> ) (& num|-) | dst
貌似写得有点复杂(我不是故意的)。解释一下,整个重定向语句由三部分组成:
在写完一个最简单的命令解释器以后,我给自己的shell起了个名字——jdsh(JackalDire Shell)。
本来以为加入后台执行不是什么难事,但是认真想了一下要处理好一个字符‘&’不是一般的麻烦,各种问题接踵而至,于是决定先找点轻松的活干。
寒假在做Linux Kernel Project这本书上的习题,第二章的练习是写一个简单的shell,看了一下要求觉得这个练习很有价值,涉及到很多Linux C Programming的知识,所以准备认真地做一下。
可见写一个shell并不是一件简单的事,从简单的一步一步做起吧,手头有APUE,一边做一边查。
Linux下大多数软件都是将core和UI完全分离,很多程序原作者只提供了CLI接口,而图形化接口则由另一些人完成。这种做法不仅减小了开发难度,缩短了开发周期,松散的耦合使程序更容易移植。这和很多windows程序形成了鲜明对比,尤其是MFC的程序,core代码和UI代码杂糅到doc/view的框架里,完全没有可移植性。
这学期写大作业想做个GUI,就顺便看了下MFC,觉得MFC现在的现在的地位十分尴尬,大型项目几乎清一色SDK,小型应用则是.net的天下,MFC被用的最多的莫过于CString了。一个Application Framwork已经退化成一个单纯的Class Library了。
暑假前的小学期,又有一个不大不小的作业,决定完全在Linux编写,并且Core和UI完全分离,有时间的话想用GTK做GUI。直接用C代码设计一个稍微复杂点GTK界面简直就是自找苦吃,于是上glade。
这几天网络环境急剧恶化,不得不把Tor搬出来
pacman -S tor发现源里就有, 直接装之。装完以后默认的Socks绑定地址是127.0.0.1 9050, 当然也可以在配置文件里改掉:
sudo vim /etc/tor/torrc
大概在20行的位置,还有就是默认情况下tor是作为服务启动的,如果想改成手动启动,把配置文件里的RunAsDaemon的值从1改成0就行了。
Tor装好后就要给浏览器设置代理了,firefox这种支持socks代理的浏览器直接把socks代理设置为 127.0.0.1 9050就行了,配合switch proxy tools这种切换代理的插件会很方便。像opera、konqueror等不支持socks代理的浏览器就需要privoxy来帮忙了:
响应CasparAnt的号召,写了一下自己玩Linux的过程
老早我爸就开始玩Linux,不过没有装X,所以也就望而却步。直到大一遇到班上某牛S(现在投身ACM去了)玩Linux,又在宏福听了一场开源的讲座,兴趣大发,开始折腾。
我装Linux的过程那是相当曲折,Ubuntu7.04装完Grub引导出问题,那时候还不知道grub为何物,Google了N久发现ubuntu自带Grub和原来Vista Loader的Grub4Dos冲突,索性用Vista的安装盘把Vista Loader卸了,再把ubuntu重装了一遍(那时候还不会修复Grub),黑屏…又瞎折腾了几天,无果,就先扔一边去了。
过了两周,S牛不知从哪淘来一盒FC6,随便试了一下,竟然能进X了,第一次看到Gnome的桌面,那叫一个激动啊。兴奋了半天,发现缺各种驱动:显卡、声卡、网卡…没法上网、没法更新,除了玩玩小游戏,啥都做不了…于是乎又扔一边去了。
到了11月份,从遥远的波兰寄来的ubuntu 7.10的光盘到了,赶快装上,顺利进入X,以太网卡也能用了,赶紧插上根网线更新。还记得一条apt-get我至少Google了四五次才记住。接着就是解决无线网卡驱动的问题,Google到ndiswrapper,又折腾了一周。然后尝试各种软件,无休止的折腾。