shell是什么
shell是一个命令解释器,它接收应用程序/用户命令,然后调用操作系统内核。shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。
shell解析器
Linux提供的Shell解析器有以下六种:
cat /etc/shells
/bin/sh :
/bin/bash : Centos默认的解析器是/bin/bash
/***in/nologin:
/bin/dash:
/bin/tcsh:
/bin/csh:
shell入门
1.脚本格式
(1) 脚本以 #!/bin/bash 开头 (指定解释器)
(2) 脚本执行方式:
① sh test.sh
② bash test.sh
③ 。/test.sh :这种方式需要授予test.sh脚本执行权限
2.shell中的变量
(1) 常用的系统变量 ① $HOME:当前用户的家目录 ② $PWD:当前的目录 ③ $SHELL:默认的解析器 ④ $USER:当前用户 (2) 自定义变量 ① 基本语法:变量=值 ② 撤销变量:unset 变量 ③ 声明静态变量:readonly变量,注意:不能unset ④ 变量定义规则: 《1》 环境变量名建议大写 《2》 等号两边不能有空格 《3》 在bash中,变量默认都是字符串类型,无法直接进行数值运算 《4》 变量的值如果有空格,需要用双引号或单引号括起来
特殊变量:$n
$n (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,10以上的参数需要用大括号包含,如 ${11} )
特殊变量: ①。 $* :代表命令行中所有的参数,$*把所有的参数都看成是一个整体 ② $@ :代表命令行中所有的参数,$@把每个参数区分对待 ③。 $# :代表命令行中的参数个数;eg: sh test.sh para1 para2 ,则$#的值为2 ④。 $? :上一个命令执行的返回状态,如果这个状态值是0,证明上一个命令执行正确,反之不是0,则证明上一个命令执行失败
5 运算符
① $((运算式)) :$(( 3 + 4 )) ② $[运算式] : $[(2+3)*4] ③ expr + , - , * , / , % 加,减,乘,除,取余 :*expr `expr 2 + 3` \** 4* 6 条件判断
① 【condition】前后要有空格 ② 条件非空即为true,反之为false ③常用的判断条件 《1》两个整数之间的比较 = : 字符串比较 -lt : 小于 -le : 小于等于 -eq : 等于 -ge : 大于等于 -gt : 大于 -ne : 不等于 《2》按照文件权限进行判断 -r : 有读的权限 -w : 有写的权限 -x : 有执行的权限 《3》 按照文件类型进行判断 -f : 文件存在,并且是一个常规的文件(file) -e : 文件存在 -d : 文件存在,并且是一个目录(directory) 7 流程控制
① if 判断
if [ 条件 ];then if [ 条件 ] 程序 then else 程序 程序 else fi 程序 fi ② case
case $变量名 in “值1”) 程序1 ;; “值2”) 程序2 ;; *) 默认程序 ;; ③ for循环
语法1: for(( 初始值;循环控制条件;变量变化 )) s=0 do for(( i=0;i《100;i++ )) 程序 do done s=$[$s+$i] done echo $s 语法2 for 变量 in 值1,值2,值3.。. for i in $* do do 程序 echo “value is $i” done done ④ while循环
while [ 条件表达式 ] do 程序 done
read读取控制台输入
read 选项 参数
选项: -p : 指定读取值时的提示符 -t : 指定读取值时等待的时间 参数: 变量:指定读取值时的b变量名 实例:提示7s内,读取控制台输入的名称 touch read.sh vi read.sh #!/bin/bash read -t 7 -p “Enter your name in 7 seconds ” NAME echo $NAME sh read.sh
函数
1系统函数
① basename: eg: basename /opc/home/aa.txt 输出: aa.txt eg: basename /opc/home/aa.txt .txt 输出: aa ② dirname: eg: dirname /opc/home/aa.txt 输出:/opc/home 2 自定义函数
基本语法 [funciton] funname[()] { Action [return int;] } funname
cut 工具
cut [选项参数] filename
选项参数
-f:列号,提取第几列 -d:分隔符,按照指定分隔符分格列 2.实例
eg: cut -d “ ” -f 1 aa.txt
eg: ifconfig eth0 | grep “inet addr” | cut -d : -f 2 | cut -d “ ” -f 1
sed工具
1.sed是一种流编辑器。一次处理一行内容,把当前处理的行存储在临时缓冲区中,成为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾,文件内容并没有改变,除非你使用重定向存储输出。
2.用法:
sed [选项参数] ‘command’ filename 选项参数: -e : 直接在指令列模式上进行sed的动作编辑 命令功能描述: a: 新增 d:删除 s:查找并替换
3.实例
sed “2a mytest” aa.txt : 将mytest插入到aa.txt的第二行下
sed “/mytest/d” aa.txt :将aa.txt中的mytest删除
sed “s/mytest/youtest/g” aa.txt : 将aa.txt中的mytest替换成youtest
sed -e “2d” -e “s/mytest/youtest/g” :先删除第二行,在替换aa.txt中的mytest为youtest
awk工具
1.一个强大的文本分析工具,把文本逐行的读入,以空格为默认分割符将每行切片, 切开的部分在进行分析处理
2.基本语法 awk [选项参数] ‘pattern1 {action1} pattern2 {action2} 。.. ’ filename pattern :表示awk在数据中查找的内容,也就是匹配模式 action :在找到匹配内容时执行的一系列命令 参数说明 -F : 指定输入文件的分隔符 -v : 赋值一个用户定义变量 3.实例 awk -F : ‘/^root {print $7}’ /etc/passwd // 只显示/etc/passwd 的第一列和第七列,以逗号分隔, //且在所有行前面添加列名user,在最后一行添加“test,ch” awk -F : ‘BEGIN {print “user”} {print $1,“,” $7} END{print “test,ch”}’ /etc/passwd
sort
1.sort 命令在linux中非常有用,它能将文件进行排序,并将排序结果标准输出。
2.语法
sort [选项] [参数] 3.选项
-n 依照数值大小排序 -r 以相反的顺序排序 -t 设置排序时所用的分隔符 -k 指定需要排序的列
4.实例
sort -t : -nrk 3 aa.txt
shell是什么
shell是一个命令解释器,它接收应用程序/用户命令,然后调用操作系统内核。shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。
shell解析器
Linux提供的Shell解析器有以下六种:
cat /etc/shells
/bin/sh :
/bin/bash : Centos默认的解析器是/bin/bash
/***in/nologin:
/bin/dash:
/bin/tcsh:
/bin/csh:
shell入门
1.脚本格式
(1) 脚本以 #!/bin/bash 开头 (指定解释器)
(2) 脚本执行方式:
① sh test.sh
② bash test.sh
③ 。/test.sh :这种方式需要授予test.sh脚本执行权限
2.shell中的变量
(1) 常用的系统变量 ① $HOME:当前用户的家目录 ② $PWD:当前的目录 ③ $SHELL:默认的解析器 ④ $USER:当前用户 (2) 自定义变量 ① 基本语法:变量=值 ② 撤销变量:unset 变量 ③ 声明静态变量:readonly变量,注意:不能unset ④ 变量定义规则: 《1》 环境变量名建议大写 《2》 等号两边不能有空格 《3》 在bash中,变量默认都是字符串类型,无法直接进行数值运算 《4》 变量的值如果有空格,需要用双引号或单引号括起来
特殊变量:$n
$n (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,10以上的参数需要用大括号包含,如 ${11} )
特殊变量: ①。 $* :代表命令行中所有的参数,$*把所有的参数都看成是一个整体 ② $@ :代表命令行中所有的参数,$@把每个参数区分对待 ③。 $# :代表命令行中的参数个数;eg: sh test.sh para1 para2 ,则$#的值为2 ④。 $? :上一个命令执行的返回状态,如果这个状态值是0,证明上一个命令执行正确,反之不是0,则证明上一个命令执行失败
5 运算符
① $((运算式)) :$(( 3 + 4 )) ② $[运算式] : $[(2+3)*4] ③ expr + , - , * , / , % 加,减,乘,除,取余 :*expr `expr 2 + 3` \** 4* 6 条件判断
① 【condition】前后要有空格 ② 条件非空即为true,反之为false ③常用的判断条件 《1》两个整数之间的比较 = : 字符串比较 -lt : 小于 -le : 小于等于 -eq : 等于 -ge : 大于等于 -gt : 大于 -ne : 不等于 《2》按照文件权限进行判断 -r : 有读的权限 -w : 有写的权限 -x : 有执行的权限 《3》 按照文件类型进行判断 -f : 文件存在,并且是一个常规的文件(file) -e : 文件存在 -d : 文件存在,并且是一个目录(directory) 7 流程控制
① if 判断
if [ 条件 ];then if [ 条件 ] 程序 then else 程序 程序 else fi 程序 fi ② case
case $变量名 in “值1”) 程序1 ;; “值2”) 程序2 ;; *) 默认程序 ;; ③ for循环
语法1: for(( 初始值;循环控制条件;变量变化 )) s=0 do for(( i=0;i《100;i++ )) 程序 do done s=$[$s+$i] done echo $s 语法2 for 变量 in 值1,值2,值3.。. for i in $* do do 程序 echo “value is $i” done done ④ while循环
while [ 条件表达式 ] do 程序 done
read读取控制台输入
read 选项 参数
选项: -p : 指定读取值时的提示符 -t : 指定读取值时等待的时间 参数: 变量:指定读取值时的b变量名 实例:提示7s内,读取控制台输入的名称 touch read.sh vi read.sh #!/bin/bash read -t 7 -p “Enter your name in 7 seconds ” NAME echo $NAME sh read.sh
函数
1系统函数
① basename: eg: basename /opc/home/aa.txt 输出: aa.txt eg: basename /opc/home/aa.txt .txt 输出: aa ② dirname: eg: dirname /opc/home/aa.txt 输出:/opc/home 2 自定义函数
基本语法 [funciton] funname[()] { Action [return int;] } funname
cut 工具
cut [选项参数] filename
选项参数
-f:列号,提取第几列 -d:分隔符,按照指定分隔符分格列 2.实例
eg: cut -d “ ” -f 1 aa.txt
eg: ifconfig eth0 | grep “inet addr” | cut -d : -f 2 | cut -d “ ” -f 1
sed工具
1.sed是一种流编辑器。一次处理一行内容,把当前处理的行存储在临时缓冲区中,成为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾,文件内容并没有改变,除非你使用重定向存储输出。
2.用法:
sed [选项参数] ‘command’ filename 选项参数: -e : 直接在指令列模式上进行sed的动作编辑 命令功能描述: a: 新增 d:删除 s:查找并替换
3.实例
sed “2a mytest” aa.txt : 将mytest插入到aa.txt的第二行下
sed “/mytest/d” aa.txt :将aa.txt中的mytest删除
sed “s/mytest/youtest/g” aa.txt : 将aa.txt中的mytest替换成youtest
sed -e “2d” -e “s/mytest/youtest/g” :先删除第二行,在替换aa.txt中的mytest为youtest
awk工具
1.一个强大的文本分析工具,把文本逐行的读入,以空格为默认分割符将每行切片, 切开的部分在进行分析处理
2.基本语法 awk [选项参数] ‘pattern1 {action1} pattern2 {action2} 。.. ’ filename pattern :表示awk在数据中查找的内容,也就是匹配模式 action :在找到匹配内容时执行的一系列命令 参数说明 -F : 指定输入文件的分隔符 -v : 赋值一个用户定义变量 3.实例 awk -F : ‘/^root {print $7}’ /etc/passwd // 只显示/etc/passwd 的第一列和第七列,以逗号分隔, //且在所有行前面添加列名user,在最后一行添加“test,ch” awk -F : ‘BEGIN {print “user”} {print $1,“,” $7} END{print “test,ch”}’ /etc/passwd
sort
1.sort 命令在linux中非常有用,它能将文件进行排序,并将排序结果标准输出。
2.语法
sort [选项] [参数] 3.选项
-n 依照数值大小排序 -r 以相反的顺序排序 -t 设置排序时所用的分隔符 -k 指定需要排序的列
4.实例
sort -t : -nrk 3 aa.txt
举报