知识点如下:
1,关于shell编程中的变量,shell编程中的变量分为4种
本地变量:只对本系统本用户自己的shell有用
环境变量:对本系统的所有shell都有用 用export来声明变量 例如:export
A=1 另外:查看系统能用的shell的命令是cat /etc/shells
查看系统当前用户正使用的shell的命令:echo $SHELL
特殊变量:是bash内置的变量,用于调用bash脚本编程环境的一些特殊的执行结果
比如:$? 它的作用是表明上一个命令是否执行成功,在linux中 0 表
示成功,非零的都是错误,不同的值表示的错误不一样
位置变量:可以直接向脚本中传递参数并且被脚本调用的变量,例如 $1 $2 $3...
能够进行算术运算的几个特殊符号:$[] $(( )) 例如:a=3 b=5 echo "$[$a+$b]"
2,关于PS1 echo $PS1 export PS1='[\u@\h \w]\$'
3,变量的文件一般都是放在一下几个文件里的
按控制范围分为:
全局变量:/etc/profile /etc/profile.d/*,/etc/bash.rc
局部变量:~/.bash_profile ~/.bash.rc ~/.bash_logout
按作用类型分为:
profile类:设置环境变量 和 运行用户登录要运行的一些命令
bashrc 类:设置别名 和 设置本地变量
解决关于脚本为什么有时候不能用的问题
shell分为交互式登录shell 和非登录shell
所谓登录shell就是在用户进入系统的时候才开始执行的shell
读取顺序:/etc/profile-->/etc/profile.d/*-->~/.bash_profile--
>~/.bashrc/-->/etc/bashrc(越往后优先级越高)
非登录shell就是用户还没有进入系统的时候就已经开始执行的shell
~/.bashrc-->/etc/bashrc-->/etc/profile.d/*(越往后优先级越高)
4,关于输入输出重定向以及管道
标准输入:/dev/stdin 0 < (前面省略0)
标准输出:/dev/stdout 1 > (前面省略1)
标准错误输出:/dev/stderr 2 2>
如果想实现正确错误输出都到一个文件,则 用 &>
小技巧:很多情况下我们在定向一个内容的时候,我们如果用> 我们很可能会把
一个文件以前的内容弄丢,这个时候我们可以用set -C开启一个
功能 即 不会让文件被覆盖掉
关闭这个功能用set +C
管道:
echo "123456" | passwd --stdin redhat (用一个命令直接创建一个用户
redhat,密码是123456) passwd --stdin 表示从现实器上读取密码
(passswd默认情况下是从键盘读入密码)
命令tee:tee就是一个丁字路口 ,把一个输入流分给两个部分如:
ls /etc |tee /tmp/txt.txt | less (把etc下的内容给txt.txt,并且显示出来)
自定义文件输出重定向:
在我们编写脚本的时候我们常常要往一个文件里面写很多东西,为了提高效率
我们用这个命令 exec 3> /etc/out.txt 然后我们向out.txt里面定向内容 的时候我们就可以 ls -l /etc >&3,其实文件是被写到了/out.txt里了(这种放法在要多次向一个文件里定向内容的时候很有用,可以极大地提高读写效率)
关闭则用:exec 3>&-
5,循环语句:for 变量 in 队列;do
statement 1
statement 2
done
三种不同写法:
for I in 1 2 3 4 5=
for I in `seq 1 5`=
for I in (1..5)
队列可以分为以下几个类型:
简单列表:1 2 3 6 7
复杂列表:this is tom's cat (这里’会被当成一个字符,所以用的时候应该这样写 \' 表示转义)
从变量读:in `seq 1 $max`
从命令读: `ls /var`
通配符 : for i in /var/*
6, tail -2 /etc/passwd | cut -d: f1 截取/etc/passwd 下后两行的内容,然后以”:“为分割取第一部分 (这个命令很有用)
7,grep与正则表达式:
grep :
-i 不区分大小写
-v 显示没有匹配到的行
-n 显示匹配到的行和它的行号
An 连收索到的前n行也显示
Bn ///后n行显示
Cn context,上下文
--color 匹配到的窜高亮显示
定义:有一堆的元字符组成,表达的不是自己本身的意思,而是其他的意思
算了 ,正则表达式本人还没有完全理解,以后会以一篇专门的博文给出,今天
不在这里写了 ,SEE YOU !