1、bash的基本特性
ctrl + l 清屏
上键
history 历史
1)命令历史
作用:查看之前使用的命令
关于命令历史的文件
每个用户家目录下的 -- .bash_history
在关机的时候,会自动写入一次(history -r 将内存中的命令历史写入文件)
关于命令历史的变量(环境变量)
env //查看环境变量
set //查看更详细的环境变量参数
HISTSIZE=1000 数量,总量为1000
HISTCONTROL=ignoredups
Ignoredups 忽略重复的历史命令
Ignorespace 忽略空白开头的历史命令
Ignoreboth 两者都生效
history的常见操作
查看命令历史 !# #表示数值,执行#行的命令
!string 匹配最近一次的字符串
!! 上一条命令
!$ 上一条命令的最后一个参数
ls /etc
ls !$ (直接调用了/etc)
ESC + . (和!$一样的作用)
常见的选项:
-a 追加历史行到历史文件中
-d 删除
-c 清空缓存区额历史命令缓存
history# 显示最近#行的命令
2)命令补全
tab
作用:1、提示 2、自动补全
扩展:制表符 ,代表四个空格键
3)目录补全
tab 作用:1、提示 2、自动补全
4)命令展开--data命令
{}
Linux的目录需要遵循什么规则? --FHS目录规则
属性1 属性2
a 1
b 2
mkdir -pv /var/{a,b}-{1,2}
date 系统时钟
基于date命令来创建目录:
date +%F 改变输出的时间格式,按照年-月-日的形式
%T 输出时-分-秒
%D 月/天/年
date +%F-%H-%M-%S H:小时 M:分钟 S:秒
练习:通过for语句循环创建一个月的日志文件; .log 2019-08-6.http.log
touch `date +%F`.http.log
for i in {1..30};do
touch `date +%Y-%m-$i`.http.log;
done
Tar 归档命令(做压缩)
压缩工具:《只能对文件进行操作,而不能对目录进行操作》
gzip
bzip2
xz
tar的常见参数:
tar归档工具,《可以对目录进行操作》
-j bzip2
-J xz
-z gzip
zcat:查看压缩文件,但是不解压文件
解压:
-c create
-x extract //可以不用指定解压工具
-f 指定文件名
-v 显示详细信息
-t 与zcat功能一样,不解压查看文件
tar cjvf 2018-08.http.log.bz2 2008-08-*.http.log 压缩2008-08-*.http.log文件,命名为2018-08.http.log.bz2。*:通配符
tar xvf 2018-08http.log.bz2 -C abc 把2018-08http.log.bz2文件解压到abc目录中
练习:编写脚本,每天02:20备份/etc/目录中所有的文件,名称为当天日期;且保存文件为压缩文件;
crontab -e -- 20 2 * * *
vim xxx.sh
#!/bin/bash
#
tar cJvf /var/`date +%F`.xz /etc/
chmod +x xxx.sh (执行权限)
补充:
lock /hwclock 查看硬件时钟(百度:如何同步系统时钟和硬件时钟)
cal + 年份(看这年打的日历) 日历
5)命令的执行状态
执行后会有两种结果
命令本身放回的内容
命令执行的结果状态
$?变量,就是用来存放命令执行状态的变量;
0 表示成功状态(和python正好相反)
1-255 表示失败状态
6)命令的快捷键
ctel + l 清屏
ctrl + c 结束进程
ctrl + u 删除光标前的字符
ctrl + k 删除光标后的字符
ctrl + a 跳到光标头
ctrl + e 跳到光标尾
ctrl + w 以空格为分隔符,去删除文件
ctrl + r 进入一个交互界面,搜索最近一次使用的命令(要输入string)
7)alias别名
系统启动时读取一些特殊文件的顺序;
alias 回车,查看当前文件的别名
alias cdnet="cd /etc/sysconfig/network-scriptes"(网卡目录) //这种方式定义alias只能在当前shell生效
/etc/profile 定义环境变量(所有用户) export histcontrol=xxx
/etc/bashrc 定义本地变量--alias(所有用户)
~/.bash_profile 定义环境变量(指定用户)
~/.bashrc 定义本地变量--alias(指定用户)
sources /etc/profile 或者 ./etc/profile (这样才可以生效)
8)文件通配符--globbing
【文件通配符不是正则表达式】
? 任意单个字符
* 任意长度的任意字符
[] 指定范围内的任意一个字符
^ [^]指定范围以外的任意一个字符
指定字符类:[0-9A-Za-z]
[:alnum:] 字母加数字
[:alpha:] 字母
[:cntrl:]
[:digit:] 数字
[:graph:]
[:lower:]
[:print:]
[:punct:] 特殊字符
[:space:] 空格
[:upper:]
[:xdigit:]
^[[:space:]]*$ //有空格键的空行(正则表达式)
练习:
1.显示/var目录下所有以1开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
ls /var/*[0-9]*[a-z]
2、显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录
ls /etc/[0-9]*[^0-9]
3、复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/test目录中
cp -a /etc/m*[^0-9] /tmp/test