命令解释器
.bash都是环境配置参数的文件
1、history
2、alias创建别名
alias soso=“find / -name”
soso lisi(对当前进程有效);
unalias soso(取消);
3、重定向
标准输出:从屏幕终端上显示出来的称为标准输出
只要不是在屏幕上输出就是重定向;
cat .bash.profile > /root/ 桌面/ming(会覆盖原始文件内容)
echo在屏幕终端显示一句话
echo “helloworld”> /root/桌面/index.html(会覆盖原始内容)
echo “thisis啊test” >>
/root/桌面/index.html(追加重定向原始内容还在)
4、 输入重定向:把文件内容输入给一个命令
wc -l < /root/桌面/index.html
5、错误的追加重定向
echo 2>>
6'不管对错都放到文件里面去
find / na lisi &> /root/桌面/index
7、 管道符
rpm -qa | grep ssh
两个命令可以到一行前一个命令的结果是后一条命令的输入
grep “bash$” /etc/passwd | awk -F '{print $1,$7}'(awk是指定行);
以冒号分隔输出第1、7列字段;
awk是分列查询文本文件;
8、boy=’tom‘
echo “hi,i'm a $boy
”
要用双引号把字符串显示出来(临时)
env环境变量
把用户变量变成系统变量
export将用户自定义的变量导出到环境变量
set GIRL=xiaohong
unset 取消变量名
9、 path=·pwd·
echo $path1
10、expr 5 + 9整数运算
计算字符串的长度 expr length “hello,i am lisi”
AA =8
BB=9
let CC=AA+BB
echo “$CC”
11系统定义的
PS1(用户终端名)PS1=“**”
12、$n带表引用第几个参数
$#显示位置变量的个数
变量的类型
自定义变量:由用户自己定义、修改和使用
环境变量:由系统维护,用于设置工作环境
位置变量:通过命令行给脚本程序传递参数
预定义变量:Bash中内置的一类变量,不能直接修改
符号的意义
双引号:允许通过$符号引用其他变量值
单引号:禁止引用其他变量值,$视为普通字符
反撇号:命令替换,提取命令执行后的输出结果,
read [-p "提示信息"] 变量名
设置变量的作用范围
格式1:export 变量名 ...
格式2: export 变量名=变量值 ...
整数变量的运算
格式:expr 变量1 运算符 变量2 [运算符 变量3] ...
常用运算符 加法运算:+ 减法运算: - 乘法运算: \* 除法运算: / 求模(取余)运算: %
环境变量
由系统提前创建,用来设置用户的工作环境 用户可以用set或者env来查询环境变量
常见的环境变量: PWD、PATH USER 、LOGNAME、UID、SHELL、HOME PS1、$PS2
位置变量
表示为 $n,n为1~9之间的数字
预定义变量
$#:命令行中位置变量的个数
$*:所有位置变量的内容
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错
$0:当前执行的进程/程序名
有效期
默认情况下,在shell下的用户变量、alias等,只在此次登录中有效。一旦关闭终端或注销后,则将会设置恢复初始值。
用户可以将这些设置放入一个系统环境配置文件中,使其长期生效。
每一个用户都有一个登录shell,且默认为bash,当用户打开一个bash时,系统就去读取~/.bashrc配置文件。因此可以将相关的用户设定放入次文件中。
截取命令 cut
能说明:显示文件中的某一列语法: cut <选项>
文件 常用选项:
-d:指定分隔符
-f:指定显示某一列
-c:指定几个字符对应的列
文件操作命令 sort
功能说明:将文本文件内容加以排序 语 法: sort [选项] <文件…>
常用选项: -o <输出文件>:将排序后的结果存入指定文件
-r:以相反的顺序来排序
-n:显示匹配的行及其行号
-t <分隔字符>: 指定排序时所用的栏位分隔字符。
-k: :以那个区间 (field) 来进行排序的意思
文件操作命令 uniq
功能说明:合并文件中相邻的行 语 法:
unip [选项] [文件] 常用选项:
-i :忽略大小写字符的不同
-c :进行重复出现行计数
-d: 仅显示重复出现的行列
-u: 仅显示出一次的行列
文件操作命令 tr
功能说明:文字替换或者删除一段信息文字 语 法:
tr [选项] 常用选项:
-d :删除信息当中的 SET1 这个字符串
-s :取代掉重复的字符
文件操作命令 paste
功能说明:合并文件的列
语法: paste [选项] [文件1] [文件2]
常用选项: -d :用指定的间隔字符取代跳格字符
-s :串列进行而非平行
创建脚本;
1、创建*.sh
2、编辑文件
#! /bin/bash
3、chmod 777 *.sh
4、运行脚本
(1)./*.sh
(2)bash *.sh
Shell中的特殊变量
在Shell脚本中经常会用到下列特殊的变量:
$#:位置参数的个数 sh test1.sh a b c ($# => 3)
$*:位置参数的内容 sh test1.sh a b c ($* => “a”“b”“c”)
$$:当前shell进程的pid值
$?:前一命令返回的状态值(0为正常) touch file1 ; echo $? ( 结果 => 0)
$!:最近访问的后台进程的PID
Shell脚本命令行参数变量
当用户在使用一个带命令行参数的Shell脚本时,脚本名与它的参数名都可以通过一个特殊的变量来获取。
例:sh scriptname.sh [option1] [option2] ….. 引用Shell 脚本命令行参数
$0 命令名本身
$1 第一个参数(option1)
$2 第二个参数(option2)
$3 第二个参数(option3)
$N 第N个参数(optionN)
执行脚本文件
方法一:脚本文件路径
方法二:sh 脚本文件路径
test命令
测试特定的表达式是否成立,
当条件成立时,测试语句的返回值为0,
否则为其他数值
格式1:test 条件表达式 格式2:[ 条件表达式 ]
条件测试操作
文件测试 格式:[ 操作符 文件或目录 ]
常用的测试操作符 -d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-b: 该文件是否存在且为一个块设备文件
-c: 该文件是否存在且为一个字符设备文件
-S: 该文件是否存在且为一个Socket文件
-p: 该文件是否存在且为一个FIFO(pipe)文件
-L: 该文件是否存在且为一个链接文件
文件权限测试
格式:[ 操作符 文件或目录 ] 常用的测试操作符
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)
-u: 测试该文件是否存在且具有suid属性
-g: 测试该文件是否存在且具有sgid属性
-k: 测试该文件是否存在且具有sticky bit属性
-s :测试该文件是否存在且为非空文件
整数值比较
格式:[ 整数1 操作符 整数2 ] 常用的测试操作符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)
字符串比较
格式1:[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2:[ -z 字符串 ]
常用的测试操作符 =:字符串内容相同 !=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空
-n: string 判定字符串是否非为0,若string为空字符串,则为false。 注: -n 亦可省略
两个文件之间的比较测试
-nt (newer than)判断file1是否比file2新
-ot (older than)判断file1是否比file2旧
-ef 判断file1和file2是否为同一文可用在判断 hard link的判定上。 主要意义在判定,两个档案是否均指向同一个inode
单分支if语句
双分支if语句
多分支if语句
case语句应用示例
function函数功能