8.1 shell介绍
每个用户都有自己bash /bin/bash
if for while循环 ,特定语法
8.2 命令历史
按向上的方向键查看之前的命令,存放在用户的家目录下
root都存放载这个文件里/root/.bash_history
history 查看之前的命令,最大存1000条
是由环境变量$HISTSIZE配置的
系统内置的环境变量
history -c 清空历史命令
/root/.bash_history下的命令是不会被删的
只有正常退出终端的时候才会被记录到.bash_history文件里面
修改这个值在/etc/profile配置文件下
修改完以后用souce /etc/profile或退出终端才会生效
更改历史命令格式
HISTTIMEFORMAT="%Y%m%d %H:%M:%S "
Y 年 m月 d日 H小时 M分钟 S秒 最后面有一个空格
永久生效写入到这个文件 /etc/profile
永久保存命令,加上特殊权限a 只能追加,不能删除
正常退出终端exit logout 如果没有正常退出的话,命令就保存的不全
!! 两个叹号代表执行最后一条命令
!21 代表执行命令历史中第21条命令(history)
!cha 代表执行命令历史中最近一次以cha开头的命令
8.3 命令补全和别名
tab键可以补全一个命令,文件路径,文件名
centos7 支持参数补全
yum install -y bash-completion 安装bash-completion就支持参数补全了
重启后生效
alias 自定义别名 alias restartnet='systemctl restart network.service'
用户家目录下配置别名的文件~/.bashrc 里面
其他的别名在/etc/profile.d/下目录下定义的
unalias restartnet 取消自定义别名
8.4 通配符
* 通配符 匹配零个或多个字符
?匹配一个字符
ls [0-3].txt 指定一个范围0到3,也可以指定大小写字母a-z A-Z,
ls {1,2,3,4,a}.txt 花括号也可以指定,但是需要逗号分隔
8.5 输入输出重定向
cat 1.txt > 2.txt 一个大于号代表把1.txt的内容重定向到2.txt里面,把2.txt里面原来的内容删除了
cat 1.txt >> 2.txt 两个大于号代表把1.txt的内容追加到2.txt里面,不会删除原来的内容
2> 错误输出重定向 2>> 错误输出追加重定向
&> 是正确和错误输出的结合,把正确和错误的信息输入同一个文件
&>> 同样也支持追加重定向
ls [12].txt aaa.txt > 1.txt 2>a.txt 可以把正确和错误的输出信息重定向到不同的指定文件里面
> 正确 2>错误
wc -l < 1.txt 输入重定向,wc -l 是查看一个文件有多少行,前面必须是一个命令
ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了
ls 1.txt aaa.txt >a.txt 2>&1 正确和错误输出到同一文件中
对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。
对于2 ,表示标准错误,stderr。
2>&1 的意思就是将标准错误重定向到标准输出。
8.6 管道符和作业控制
| 管道符是把前面输出的内容传递给后面的命令
ctrl + z 暂停一个任务
jobs 查看后台的任务
fg 把后台任务调到前台,不加id默认调最后一个任务
bg 把任务调到后台并运行,不加id默认调最后一个任务
命令后面加&符号,可以把命令丢到后台并运行
8.7 shell变量(上)
系统的变量通常是大写的英文字母,变量的值可以是数字或字符串
env 查看系统的常用环境变量
set 不仅可以查看的系统的环境变量,还可以查看用户的自定义变量
变量名规则:数字,字母,下划线 首位不能为数字
变量值有特殊字符的时候用单引号括起来
单引号可以脱意
变量的叠加
多个变量叠加的时候,用双引号引起来
8.8 shell变量(下)
export设置一个全局变量,只能往子shell继承(往下继承),对当前终端生效,新开的终端不起作用
pstree查看当前用户在那个bash下
运行bash进入一个子shell
unset 取消全局变量
全局变量只能往下继承
unset 取消全局变量
8.9 环境变量配置文件
系统层面 /etc/profile /etc/bashrc
用户层面 ~/.bashrc ~/.bash_profile ~/.bash_history ~/.bash_logout
用户~/.bash_profile 会调用 ~/.bashrc
如果有需求的话,可以编辑用户家目录下的.bashrc .bash_profile,这里只对当前用户生效,全局配置的话要在/etc/profile下配置
. ~/.bashrc 前面的点等同于 source 加载配置文件里面的一些配置
用户~/.bashrc 会调用 /etc/bashrc