|
|
@@ -26,20 +26,12 @@
|
|
|
|
|
|
3. 1969年:MULTICS项目失败,Ken Tompson赋闲在家,为了玩“Space Travel”游戏用汇编语言在当时已经被淘汰的PDP-7上开发了Unics。
|
|
|
|
|
|
- 
|
|
|
-
|
|
|
- 
|
|
|
-
|
|
|
> 注:很难想象,Unix这么伟大的系统,居然是一个赋闲在家的程序员(关键是老婆回娘家还带上了孩子)在一台被淘汰的设备上为了玩游戏开发出来的。
|
|
|
|
|
|
4. 1970年~1971年:Ken Tompson和Dennis Ritchie用B语言在PDP-11上重写了Unics,并在Brian Kernighan的建议下将其更名为Unix。
|
|
|
|
|
|
- 
|
|
|
-
|
|
|

|
|
|
|
|
|
- 
|
|
|
-
|
|
|
5. 1972年~1973年:Dennis Ritchie发明了C语言来取代可移植性较差的B语言,并开启了用C语言重写Unix的工作。
|
|
|
|
|
|
6. 1974年:Unix推出了里程碑意义的第5版,几乎完全用C语言来实现。
|
|
|
@@ -1768,6 +1760,93 @@ build environment:
|
|
|
key semid owner perms nsems
|
|
|
```
|
|
|
|
|
|
+### Shell编程
|
|
|
+
|
|
|
+之前我们提到过,Shell是一个连接用户和操作系统的应用程序,它提供了人机交互的界面(接口),用户通过这个界面访问操作系统内核的服务。Shell脚本是一种为Shell编写的脚本程序,我们可以通过Shell脚本来进行系统管理,同时也可以通过它进行文件操作。总之,编写Shell脚本对于使用Linux系统的人来说,应该是一项标配技能。
|
|
|
+
|
|
|
+互联网上有大量关于Shell脚本的相关知识,我不打算再此对Shell脚本做一个全面系统的讲解,我们通过下面的代码来感性的认识下Shell脚本就行了。
|
|
|
+
|
|
|
+例子1:输入两个整数m和n,计算从m到n的整数求和的结果。
|
|
|
+
|
|
|
+```Shell
|
|
|
+#!/usr/bin/bash
|
|
|
+printf 'm = '
|
|
|
+read m
|
|
|
+printf 'n = '
|
|
|
+read n
|
|
|
+a=$m
|
|
|
+sum=0
|
|
|
+while [ $a -le $n ]
|
|
|
+do
|
|
|
+ sum=$[ sum + a ]
|
|
|
+ a=$[ a + 1 ]
|
|
|
+done
|
|
|
+echo '结果: '$sum
|
|
|
+```
|
|
|
+
|
|
|
+例子2:自动创建文件夹和指定数量的文件。
|
|
|
+
|
|
|
+```Shell
|
|
|
+#!/usr/bin/bash
|
|
|
+printf '输入文件名: '
|
|
|
+read file
|
|
|
+printf '输入文件数量(<1000): '
|
|
|
+read num
|
|
|
+if [ $num -ge 1000 ]
|
|
|
+then
|
|
|
+ echo '文件数量不能超过1000'
|
|
|
+else
|
|
|
+ if [ -e $dir -a -d $dir ]
|
|
|
+ then
|
|
|
+ rm -rf $dir
|
|
|
+ else
|
|
|
+ if [ -e $dir -a -f $dir ]
|
|
|
+ then
|
|
|
+ rm -f $dir
|
|
|
+ fi
|
|
|
+ fi
|
|
|
+ mkdir -p $dir
|
|
|
+ index=1
|
|
|
+ while [ $index -le $num ]
|
|
|
+ do
|
|
|
+ if [ $index -lt 10 ]
|
|
|
+ then
|
|
|
+ pre='00'
|
|
|
+ elif [ $index -lt 100 ]
|
|
|
+ then
|
|
|
+ pre='0'
|
|
|
+ else
|
|
|
+ pre=''
|
|
|
+ fi
|
|
|
+ touch $dir'/'$file'_'$pre$index
|
|
|
+ index=$[ index + 1 ]
|
|
|
+ done
|
|
|
+fi
|
|
|
+```
|
|
|
+
|
|
|
+例子3:自动安装指定版本的Redis。
|
|
|
+
|
|
|
+```Shell
|
|
|
+#!/usr/bin/bash
|
|
|
+install_redis() {
|
|
|
+ if ! which redis-server > /dev/null
|
|
|
+ then
|
|
|
+ cd /root
|
|
|
+ wget $1$2'.tar.gz' >> install.log
|
|
|
+ gunzip /root/$2'.tar.gz'
|
|
|
+ tar -xf /root/$2'.tar'
|
|
|
+ cd /root/$2
|
|
|
+ make >> install.log
|
|
|
+ make install >> install.log
|
|
|
+ echo '安装完成'
|
|
|
+ else
|
|
|
+ echo '已经安装过Redis'
|
|
|
+ fi
|
|
|
+}
|
|
|
+
|
|
|
+install_redis 'http://download.redis.io/releases/' $1
|
|
|
+```
|
|
|
+
|
|
|
### 相关资源
|
|
|
|
|
|
1. Linux命令行常用快捷键
|