开始学习UNIX之前,先了解一下UNIX的历史会很有意思(http://baike.baidu.com/view/8095.htm#3)。许多人对UNIX有感情,多少和它那种“低调而伟大”的品质有关。低调,确实是,几乎所有的UNIX初学者都会遭遇的问题是“UNIX是什么?”、“UNIX和LINUX有什么区别?”、“谁在使用UNIX,为什么要学习UNIX?”,诸如此类。要知道这些问题的答案,一点点热情就够了,现在,开始百度吧!
UNIX是一种调皮捣蛋的文化,充满了善意的恶作剧和玩笑。他们发明了Kernel,还发明了Shell,相信第一次看到Shell(壳)这个词的人都会感到困惑,为什么用这么一个词来指代一个命令行解释器呢?有核就有壳,也许就是这么一种逻辑。在小骆驼书《Learning Perl》中,Scbwartz说UNIX开发者一定懒得无可救药,他们总是把user缩写为usr,能多省一次敲键就少敲一次。
Shell有很多版本,Linux提供的是Bourne-Shell的GNU版本——Bourne-again shell。在苹果的机器上则是TENEX C shell。
以斜线开头的路径名称为绝对路径名,否则称为相对路径。
指令ls用来打印出一个目录中的所有文件,ls可以由下面这段代码来实现:
这段代码用到main函数的命令行参数,库函数opendir和readdir和标准库中定义好的结构体dirent。使用另一个结构体_finddata_t 和 _findfirst,_findnext函数可以得到ls的另一种实现方式,下面是我以前写的一个用来打印目录中.cpp文件路径名和所有.cpp文件总长度的小程序(很不完善,懒得改了):
main函数命令行参数也算一个知识点吧,百度吧。
将标准输入复制到标准输出的两种方式:
标准输出结果可以重定向(又一个陌生名词,不用我说了吧)。
./programmename > data
从标准输入读命令并执行,这里初步介绍了父进程和子进程的概念。其中函数execlp用来执行从标准输入读入的命令。通常情况下,在进程运行过程中,按中断建(Ctrl+C)或退出键(Ctrl+/)系统默认方式是终止线程。引入信号(signal)机制,则可以对这些按键信息进行特定响应。
时间值。课后习题“若进程时间存放在带符号的32位整数中,而且每秒为100滴答,那么经过多少天后时间值将会溢出?”