shell 是操作系统的最外层。shell 也是操作系统中的一个软件它包在 linux 内核的外面,为用户和内核之间的交互提供了一个接口,系统中的命令用 shell 去解释,shell 接收系统回应的输出并显示其到屏幕中
bash = GNU Bourne-Again Shell
shell 合并编程语言以控制进程和文件,以及启动和控制其它程序。shell 通过提示您输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出来管理您与操作系统之间的交互。
##############如何创建新 shell 脚本
vim script.sh ###用 vim 编写脚本
#!/bin/bash ####脚本使用的解释器,通常用幻数 "#!" 指定
#AUTHOR ####脚本作者
#DATE ####脚本创作时间
#MAIL ######脚本作者联系方式
#VERSION ######脚本的版本
###########脚本示例 ####运行脚本,在屏幕上输出 hello world!
vim hello.sh
#!/bin/bash
#AUTHOR:
#VERSION:1.0
#MAIL:
#DATE:xxxx-xx-xx
echo "hello world!"
#############运行脚本的几种方法##
1:利用sh命令调用
2:给脚本添加可执行(X)权限,再用./XX.sh运行脚本
###############脚本的调式
sh -x scritps.sh
vim scripts.sh
#!/bin/bash -x
适用于所有 shell 脚本
shell 脚本必须有 X 权限
############编写shell脚本中常用的几种命令
1:diff 命令
diff 命令是用来比较两个文件或目录的不同
diff [options] target1 target2
diff file1 file2
diff direcory1 directory2
2a3
> linux ###########表示在第一个文件的第二行后添加linux即可与第二个文件的第三行匹配
############diff 在比较文件过程中结果读取方式
[num1 , num2][a|c|d][num3,num4]
num1,num2 表示在第一个文件中的行数
a 表示添加 ----add
c 表示更改 ----change
d 表示删除 ----delete
< 表示第一个文件中的内容, > 表示第二个文件中的内容, --- 分割线
num3,num4 表示在第二个文件中的行数
2,4c2,4 表示改变第一个文件中的第二行和第四行才能匹配第二个文件中
的第二行和第四行
###############diff 中常用的参数
-b 或 --ignore-space-change ##不检查空格字符的不同
-B 或 --ignore-blank-lines ##不检查空白行
-c ##显示全部内文,并标出不同之处
-i 或 --ignore-case ##不检查大小写的不同
-p : ##若比较的文件为 C 语言的程序码文件时,显示差异所在的函数名称;
-q 或 --brief : ##仅显示有无差异,不显示详细的信息
-r 或 --recursive : ##比较子目录中的文件
-u ##以合并的方式来显示文件内容的不同
2:pacth
用于文件不同文件打布丁 ## 将文件域目标文件内容匹配
patch [options] file.old file.path
-b #####加上-b参数,可以保留一份源文件
####使用patch命令需要下载patch
(1):yum install patch -y
(2):生成file.path文件
diff -u file1 file2 > file.path
(3):保留源文件的情况下给file1打补丁
3:cut
cut 命令多用与字符截取
cut -d 指定分隔符
cut -f 1,7|1-7 指定截取的列
指定分隔符为:指定截取列为第一列
cut -c 1,4|1-4 指定截取的字符位置
4:sort 多用于字符排序
sort -n 纯数字排序
sort -r 倒序
sort -u 去掉重复数字
sort -o 输出到指定文件中
sort -t 指定分隔符
sort -k 指定要排序的列
test 命令 与[ ]等同
[-f "file" ] ###检测file是否为普通文件
[-L "file" ] ###检测file是否为软链接
[-S "file" ] ###检测file是否为套接字
[-b "file" ] ###检测file是否为块设备
[-d "file" ] ###检测file是否为目录
[-c "file" ] ###检测file是否为字符文件