目录
3.bash基本功能
3.1 历史命令与补全
history //查看历史命令
vim /etc/profile //重要的环境变量配置文件,更改history的值,可修改历史命令条数
!n //重复执行第n条命令
!字符串 //重复执行以字符串开头的命令
//按tab健补全 可以补全命令,文件,目录 按一下自动补全,按两下查看可补全命令
3.2别名与快捷键
1别名
alias //查看系统默认别名
alias vi='vim' //设置命令
vim /root/.bashrc //修改文件永久生效
2命令执行顺序
1.用绝对路径或相对路径执行的命令
2.执行别名
3.bash的内部命令
4.按照$PATH环境变量定义的目录查找顺序找到的第一个命令
3常用快捷键
ctrl+C //强制终止当前命令
ctrl+L //清屏
ctrl+U //删除剪切光标以前的内容
ctrl+Y //粘贴剪切的内容
ctrl+R //在历史命令中搜索
ctrl+D //关闭当前终端
3.3输出输入重定向
设备 | 设备文件名 | 文件描述符 | 类型 |
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stdout | 2 | 错误标准输出 |
符号 | 作用 |
命令 > 文件 | 以覆盖的方式 |
命令 >> 文件 | 以追加的方式 |
ls > abc
ls >> abc
lss 2>> abcd //保存报错信息
lss 2> abcd
lss &>> abc //把命令的正确和错误结果都写在a文件中
lss &> abc
ls &> /dev/null //可以把没有意义的输出输出到垃圾箱里
ls >> def1 2>> def2
3.4多命令顺序执行与管道符号
1.多命令顺序执行
data; dd if =/dev/zero of=/root/testfile bs=1k count=100000;data // ; 命令顺序执行,不管命令执行成功或失败,其间并无逻辑关系
ls && echo yes // && 前一条命令执成功,后一条命令才会执行
ls || echo no // || 前一条命令执行失败,后一条命令才会执行
command && echo yes || echo no // 判断命令是否执行正确
2.管道符
命令1 | 命令2 //命令1的输出作为命令2的输入
ll -a /etc/ | more //more 可以分屏显示一个文件,但是不能直接现实命令
grep 关键字 文件路径 //显示出在文件中有关键字的行
-i 忽略大小写 -n 输出行号 -v 反向查找 --color=auto 搜索出的关键文字用颜色表示
grep root /etc/passwd --color=auto -n
netstat -an | grep ESTABLISHED
3.5 通配符和其他符号
通配符
?匹配一个字符 ,*匹配0个到多个任意字符 ,[abc] 匹配括号中的字符 ,[^a-c] 不匹配a-c ,[a-z]匹配a-z中一个字符
特殊符号
- '' 单引号,但因号中所有的特殊符号,如$,`都没有特殊含义
- "" 双引号,特殊符号没有特殊含义,但是$,`,\ 是例外,拥有'调用变量的值','引用命令','转义符'的特殊含义
drc@drc-Inspiron-7559:~$ name=drc
drc@drc-Inspiron-7559:~$ echo $name
drc
drc@drc-Inspiron-7559:~$ echo '$name'
$name
drc@drc-Inspiron-7559:~$ echo "$name"
drc
- `` 反引号。会告诉系统阔起来的内容是系统命令,会在bash中先执行他。然后把返回值输出,和$()一样,不过推荐使用后者,因为反引号非常容易看错。
- $() 和反引号一样
drc@drc-Inspiron-7559:~$ ab=`date`
drc@drc-Inspiron-7559:~$ echo $ab
2020年 01月 06日 星期一 16:16:23 CST
drc@drc-Inspiron-7559:~$ abc=$(date)
drc@drc-Inspiron-7559:~$ echo $abc
2020年 01月 06日 星期一 16:16:32 CST
- # 代表注释,在shell脚本中
4.bash变量
变量设置规则
- 变量名可以由字母数字下划线组成,但是不能以数字开头。
- 变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量的类型为数值型
- 变量由的等号连接,等号两边不能有空格
- 在变量的值中,可以使用'\'转义符
- 可以通过$(),把命令输出作为值赋值给变量
- 建议环境变量为大写
- 变量可以叠加,不过变量需要用双引号或括号包含,"$name" ,${name}
变量的分类
- 用户自定义变量
- 环境变量:和操作系统相关的数据,变量名称不可改,变量值可以改。系统允许用户定义自己的环境变量。
- 位置参数变量:用来向脚本中传递参数或数据,变量名不能自定义,变量作用是固定的
- 预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
4.1用户自定义变量
drc@drc-Inspiron-7559:~$ name=123
drc@drc-Inspiron-7559:~$ name=${name}456
drc@drc-Inspiron-7559:~$ echo $name
123456
set //查看系统中的所有变量,包括系统变量和自定义变量
unset name //删除变量
4.2环境变量
用户自定义变量只在当前shell生效,环境变量在当前shell和所有子shell中生效。
export name=drc //声明环境变量
env //查询环境变量
unset name //删除环境变量
sex=male
export sex
PATH : 用:分隔每个路径,系统只会执行由绝对路径或相对路径给出的二进制文件。但是每次输入绝对路径又很麻烦,所以系统会扫描PATH下所有路径来查找用户想要执行的可执行文件。
PS1:用来定制shell提示符
drc@drc-Inspiron-7559:~$
PS1='[\u@\h \w]\$ '
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
\# :下达的第几个命令
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
4.3位置参数变量
- 解释:主要是向脚本中传递数据,变量名不能自定义,变量作用是固定的
- $n $0代表命令本身,$1-9代表接受的第1-9个参数,10以上需要用{}括起来,比如${10}代表接收的第10个参数
- $* 代表接收所有的参数,将所有参数看作一个整体
- $@ 代表接收的所有参数,将每个参数区别对待
- $# 代表接收的参数个数
[root@localhost sh]# cat param_test.sh
#!/bin/bash
echo $0
echo $1
echo $2
echo $#
[root@localhost sh]# sh param_test.sh xx yy
param_test.sh
xx
yy
2
4.3预定义变量
- 解释:主要是Bash中已经定好的变量,名称不能自定义,作用也是固定的
- $? 最后一次执行的命令返回状态,0为成功,非0为失败
- $$ 当前进程的进程号
- $! 后台运行的最后一个进程的进程号
read 可以给用户提示,让用户一个一个的输入参数
5.bash变量
5.1数值运算与运算符
declare -i cc=$aa+$bb
dd=$(expr $aa + $bb)
ee=$((&aa+&bb)) //最常用
ee=$[&aa+&bb]
aa=$(((5+3)*2%3))
5.2变量测试与内容替换
6.环境变量配置文件简介
6.1环境变量配置文件简介
- source命令
source 配置文件 //重新加载配置文件
. 配置文件 //. 就是source的缩写
环境变量配置文件主要是定义对系统操作环境生效的系统默认环境变量,比如:PATH,HISTSIZE,PS1,HOSTNAME等默认环境变量。
系统当中五类环境变量配置文件
1. /etc/profile
2. /etc/profile.d/*.sh
3. /etc/bashrc
**前三个对所有用户都生效
4. ~/.bash_profile
5. ~/.bashrc
**波浪号代
表家目录,只是当前用户生效。. 开头为隐藏文件
pstree 查看进程树
环境变量配置文件的功能
系统正常启动过程的环境变量的启动
先向下走,在向右走;
在其他用户下切换用户的过程
先向下,然后再向右;
一. /etc/profile的作用
1. USER变量:
2. LOGNAME变量:
3. MAIL变量:
4. PATH变量:
5. HOSTNAME变量:
6. HISTSIZE变量:
7. umask:
8. 调用/etc/profile.d/*.sh文件
二. umask #查看系统默认权限
1. 文件最高权限为666
2. 目录最好权限为777
3. 权限不能使用数字进行换算,而必须使用字母;使用的是最高权限丢点默认的权限;
Eg:当前默认权限为022,那么创建的文件权限就是最高权限减去默认权限:wr-wr-wr- 减去 ----w--w- 那么创建的文件权限默认为wr--r--r-
4. Umask定义的权限,是系统默认权限中准备丢弃的权限如022,也就是----w—w-
三.~/.bash_profile的作用
1.调用了~/.bashrc 文件
2.在PATH变量后面加入了”:$HOME/bin”这个目录
四./etc/bashrc的作用
1.PS1
2.umask
3.PATH变量
4.调用/etc/profile.d/*.sh文件