Linux期末复习!!!
其实期末到了还是很慌的,因为这学期要复习的东西是真的多啊...总之就是干。
脚本:
脚本语言:不用编译,解析执行;速度慢,执行简单。
1.外部命令:当外部命令执行时,shell会创建出一个子进程。这种操作被称为fork。外部命令ps很方便显示出它的父进程以及自己所对应的衍生子进程。
外部命令程序通常位于/bin、/usr/bin、/sbin或/usr/sbin中。 ps就是一个外部命令。你可以使用which和type命令找到它。
2.内建命令:
有些命令有多种实现。例如echo和pwd既有内建命令也有外部命令。两种实现略有不同。要查看命令的不同实现,使用type命令的-a选项。命令type -a显示出了每个命令的两种实现。注意,which命令只显示出了外部命令文件。
3.bash脚本编程:
变量的定义 与Python等动态语言类似,Bash变量在使用时直接定义,例如: my_bash_var="this is my bash var“
变量的引用 使用已定义的变量时,只要在变量名前面加$符号即可
在脚本中,你可以在环境变量名称之前加上美元符($)来使用这些环境变量。
$ 1,$ 2,$ 3等表示脚本的第一个,第二个,第三个等参数。
转义字符:只要脚本在引号中出现美元符,它就会以为你在引用一个变量。要显示美元符,你必须在它前面放置一个反斜线。
从命令中提取信息:
变量数学运算:
在bash中,在将一个数学运算结果赋给某个变量时,可以用美元符和方括号 $[ operation ] 将数学表达式围起来;也可以用双圆括号 $(( operation )) 将数学表达式围起来。
bash shell数学运算符只支持整数运算。
查看退出状态码:对于需要进行检查的命令,必须在其运行完毕后立刻查看或使用 $? 变量。按照惯例,一个成功结束的命令的退出状态码是0。如果一个命令结束时有错误,退出状态码就是一个正数值。
退出状态码126表明用户没有执行命令的正确权限。另一个会碰到的常见错误是给某个命令提供了无效参数。这会产生一般性的退出状态码1,表明在命令中发生了未知错误。
exit命令允许你在脚本结束时指定一个退出状态码:exit 5 或 exit $var3
4.条件语句if:
test命令:
test命令可以判断三类条件: 数值比较 字符串比较 文件比较
注意,不需要将双括号中表达式里的大于号转义。这是双括号命令提供的另一个高级特性。
5.case语句:
6.for语句:
7.数组:
8.while语句:
while命令中定义的test command和if-then语句(参见第12章)中的格式一模一样。可以使用任何普通的bash shell命令,或者用test命令进行条件测试,比如测试变量值。
9.
必须作为root用户才能运行这个脚本,因为useradd命令需要root权限。
10.抓取所有参数:
$*和$@的区别:
$*变量会将命令行上提供的所有参数当作一个单词保存。
$@变量会将命令行上提供的所有参数当作同一字符串中的多个独立的单词。
11.移动变量:
bash shell的shift命令能够用来操作命令行参数。默认情况下它会将每个参数变量向左移动一个位置。
如果不知道有多少参数时。你可以只操作第一个参数,移动参数,然后继续操作第一个参数。
12.读取:
(1)基本的从键盘读取:
在read命令行中不指定变量,read命令会将它收到的任何数据都放进特殊环境变量REPLY中。
(2)从文件中读取( 用cat加管道):
将文件中的数据传给read命令。最常见的方法是对文件使用cat命令,将结果通过管道直接传给含有read命令的while命令。每次调用read命令,它都会从文件中读取一行文本。当文件中再没有内容时,read命令会退出并返回非零退出状态码。
(3)从文件中读取(用输入重定向):
13.函数:
(1)创建函数:
第一种格式采用关键字function,后跟 分配给该代码块的函数名。第二种在name后加( )表示它是函数:
(2)函数的返回值:
(1 默认退出状态码:
默认情况下,函数的退出状态码是函数中最后一条命令返回的退出状态码。
使用函数的默认退出状态码是很危险的:
(2 使用return命令来退出函数并返回特定的退出状态码:
(3 使用echo返回函数的输出:
(3)向函数传递参数:
函数可以使用标准的参数环境变量来表示命令行上传给函数的参数。然后函数可以用参数环境变量来获得参数值: