第一章-入门
1. .a 代表传统的静态库函数。
2. .o 代表共享函数库。
第二章-Shell程序设计(一)
1.重定向输出
1)文件描述符 0 代表一个程序的标准输入。
2)文件描述符 1 代表标准输出。
3)文件描述符 2 代表标准错误输出。
2.管道
1)管道操作符 |
在Linux下通过管道连接的进程可以同时运行,并随着数据流在他们之间的传递可以自动进行协调。
3.通配符
1) * 可以用来匹配一个字符串。
2) ?可以用来匹配单个字符。
3) []允许匹配方括号中任意一个单个字符。
4) [^] 对方括号中的内容取反。
4.exit
1)exit 命令的作用是确保脚本程序返回一个有意义的退出码。
5.chmod +x 文件命名
1)将文件设置为可执行。
6.Shell 语法
1)变量
* 在Shell里,使用变量之前通常并不需要事先为它们做出声明。
* Linux是一个区分大小写的系统,因此Shell认为变量foo与Foo是不同的。
* 你可以通过在变量名前加一个$符号来访问它的内容。无论何时你想要获取变量内容,你都必须在它前面加一个$字符
* 当你为变量赋值时,你只需要使用变量名,该变量会根据需要被自动创建
* 在默认情况下,所有标量都被看作字符串并以字符串来存储,即使它们被赋值为数值时也是如此。
2)read
* 你可以使用read命令将用户的输入赋值给一个变量
3)使用引号
* 如果你箱子啊一个参数中包含一个或多个空白字符(例如,一个空格、一个制表符或者一个换行符),你就必须给参数加上引号。
* 如果你把一个$变量表达式放在双引号中,程序执行到这一行时就会把变量替换为它的值。
* 如果你把它放在单引号中,就不会发生替换现象。
* 字符串通常都被放在双引号中,以防止变量被空白字符分开,同时又允许$扩展。
4)环境变量
* $HOME 当前用户的家目录
* $PATH 以冒号分隔的用来搜索命令的目录列表
* $PS1 见书P25页这个基本不常用
* $IFS 见书P25页这个基本不常用
* $0 shell脚本的名字
* $# 传递给脚本的参数个数
* $$ shell脚本的进程号
5)参数变量
* $1 $2 ... 脚本程序的参数
* $* 在一个变量中列出所有的参数,各个参数之间用环境变量IFS中的第一
个字符分隔。
* $@ 它是$*的一种变体,它不使用IFS环境变量,所以即使IFS为空,参数也不会挤在一起。
6)test或[命令
* 为了增强可度性,当使用[命令时,我们还是使用符号]来结尾。
* 检查一个文件是否存在
if test -f fred.c
then
...
fi
if [ -f fred.c ]
then
...
fi
* test 命令使用的条件类型可以归为3类
字符串比较
算术比较
与文件有关的条件测试
一、字符串比较
string1 = string2 如果两个字符串相同则结果为真
string1 != stirng2 如果两个字符串不同则结果为假
-n string 如果字符串不为空则结果为真
-z string 如果字符串为null(一个空串)则结果为真
二、算术比较
exp1 -eq exp2 如果两个表达式相等则结果为真
exp1 -ne exp2 如果两个表达式不等则结果为假
exp1 -gt exp2 如果exp1 大于 exp2 则结果为真
exp1 -ge exp2 如果exp1 大于等于 exp2 则结果为真
exp1 -lt exp2 如果exp1 小于 exp2 则结果为真
exp1 -le exp2 如果exp1 小于等于 exp2 则结果为真
!exp 如果表达式为假则结果为真,反之亦然
三、文件条件测试
-d file 如果文件是一个目录则结果为真
-e file 如果文件存在则结果为真 不可移植 通常使用-f
-f file 如果文件是一个普通文件则结果为真
-g file 如果文件的 set-group-id 位被设置则结果为真
-r file 如果文件可读则结果为真
-u file 如果文件的 set-user-id位被设置则结果为真
-w file 如果文件可写则结果为真
-x file 如果文件可执行则结果为真
7)控制结构
* if 语句
if condition
then
statements
else
statements
fi
* elif 语句
if condition1
then
statements
elif condition2
statements
else
statements
fi
* for 语句
for variable in values
do
statements
done
* while 语句
while condition; do
statements
done
* until 语句
until condition
do
statements
done
当 condition 为真时循环结束
* case 语句
case variable in
pattern [ | pattern ] ... ) statements ;;
pattern [ | pattern ] ... ) statements ;;
...
esac
* AND 列表
statement1 && statement2 && statement3 && ...
从左开始顺序执行每一条命令,如果一条命令返回的结果为true,它右边的下条命令才能够
执行。如果持续直到有一条命令返回false,或者列表中的所以命令都执行完毕。&& 的作用
是检查前一条命令的返回值
* OR 列表
statement1 ||b statement2 || statement3 || ...
* 语句块
如果你想在某些只允许使用单个语句的地方 使用多条语句,你可以把它们扩在花括号{}中来
构造一个语句块
未完待续......