文件比对工具 diff
diff 是用在比对两个文件之间的差异的,并且是以行为单位来比对的
diff [- bBi] file1 file2
-b :忽略一行当中,仅有多个空白的差异(例如 “about me” 与 “about me” 视为相同
-B :忽略空白行的差异。
-i :忽略大小写的不同。
cmp 主要是利用单位去比对
patch 将旧的文件升级成为新的文件
文件打印准备: pr
Shell Script 概述
- 类似于Windows 下的批处理 把各类命令预先写入一个方便执行的文件中可以更方便的管理Linux主机
- 文件命名最好以*.sh结尾 便于管理
- 脚本第一行一般说明使用哪种shell #如 !/bin/bash
- 交互式脚本可以用read 指令
脚本的指令
- 指令的执行是从上而下、从左而右的分析与执行;
- 指令的下达就如同第四章内提到的: 指令、选项与参数间的多个空白都会被忽略掉;
- 空白行也将被忽略掉,并且 [tab] 按键所推开的空白同样视为空格键;
- 如果读取到一个 Enter 符号 (CR) ,就尝试开始执行该行 (或该串) 命令;
- 至于如果一行的内容太多,则可以使用『 [Enter] 』来延伸至下一行;
- 『 # 』可做为批注!任何加在 # 后面的资料将全部被视为批注文字而被忽略!
Shell script 的默认变数($0, $1…) $0代表命令本身
- $# :代表后接的参数个数
- $@ :代表『 “$1” “$2” “$3” “$4” “…”』之意,每个变量是独立的(用双引号括起来);
- $* :代表『 “$1c$2c$3c$4” 』,其中 c 为分隔字符,默认为空格键
脚本的执行
- 先给予x权限使用相对路径或者绝对路径
- 利用PATH变量 把脚本的路径加入PATH变量中可直接使用脚本名称执行
- 利用sh指令 无需做权限更改
- 利用“.”或“source”指令执行。
- source和 . 执行脚本区别是 . 执行变量存在子程序,source执行脚本 变量会在父程序。
test指令测试功能和[]
- test指令 0为真 1为假
- test指令可判断文件类型,如 test -e filename 表示存在否
- 文件的权限侦测,如 test -r filename 表示可读否
- 两个文件之间的比较,如: test file1 -nt file2
- 关于两个整数之间的判定,例如 test n1 -eq n2
- 判定字符串的数据
- 多重条件判定,例如: test -r filename -a -x filename
- 判断符号[ ] 用法几乎和test相同 *注意 使用[ ] 时候要有空格。
条件判断语句
- if-then基本语句
if [comdition]
then
commands
fi
if-then else格式
if [comdition]
then
commands
else
commands
fi
if-then elif格式
if [comdition1]
then
commands
elif [comdition2]
then
commands
elif [comdition3]
then
commands
fi
- case in esac 语句
- function函数
function fname () {
程序段
}
循环语句
while
- while [ condition ]
do
程序段落
done
until
- until [ condition ] ]
do
程序段落
done
for
- for var in con1 con2 con3 …
do
程序段
done - for (( 初始值; 限制值; 执行步阶 ))
do
程序段
done
随机函数 RANDOM
shell script的调试
sh [- nvx] scripts.sh
-n :不要执行 script,仅查询语法的问题;
-v :再执行 sccript 前,先将 scripts 的内容输出到屏幕上;
-x :将使用到的 script 内容显示到屏幕上,
shell调试工具bashdb