Shell-bash的基本特性
1、命令历史
作用:查看之前使用的命令
关于命令历史的文件
每个用户家目录下面的.bash_history
在关机的时候,会自动写入一次(history -r 将内存中的命令历史写入文件)
关于命令历史的变量(环境变量)
env //查看环境变量
set //查看详细的环境变量参数
HISIZE=1000 数量
HISCONTROL = ignoredups
history的常见操作
查看历史命令
!!上一条命令
*!$*上一条命令的最后的一个参数
ls /etc
ls !$
ESC +
常见的选项
-a
-d
-c
history # 显示最近#行的命令
2、命令补全
TAB
1、提示2、自动补全
扩展:制表符 \t 四个空格键
3、目录补全
TAB
1、提示2、自动补全
4、命令展开-date命令
{}
Linux的目录需要遵循什么规则? --FHS目录规则
date 基于date命令创建目录
%F CCYY-mm-dd
%H hh
%M MM
%S ss
练习:通过for语句循环创建一个月的日志文件:.log 2019-08-6.http.log
for i in {1..30};do
touch `date +%F-%m-%$i.http.log
done
tar
压缩工具
【压缩只能对文件进行压缩,不能对目录进行压缩】
gzip
bzip2
xz
zcat //查看压缩文件且不解压
tar的常见参数:
tar 归档工具【可以对目录进行操作】
-j bzip2
-J xz
-z gzip
-c create
-x extract //可以不用指定解压的工具
-f 指定文件名
-v 显示详细信息verbose
-t 不解压查看内容和zcat一样
tar cjvf 2018-08.http.log.bz2 2018-08-*.http.log
tar xvf 2018-08.http.log.bz2 -C abc
练习:编写脚本,每天02:20备份/etc/目录中所有文件,名称为当前日期;且保存文件为压缩文件;
crontab -e --20 2 * * * /root/xx.sh
vim xx.sh
#!/bin/bash
#
tar cJvd /var/`date +%F`.xz /etc/
clock
hwclock
5、命令的执行状态
在Linux中,每一条命令执行后都会有两个结果:
命令本身反回的内容
其次,命令执行的结果状态
$?变量,就是用来存放命令执行状态的变量;
0表示成功状态(和Python正好相反)
1-255表示失败状态
6、命令的快捷键
ctrl + I
ctrl + C
ctrl + U //删除光标前的字符
ctrl + K //删除光标后的字符
ctrl + A
ctrl + E
ctrl + W //以空格为分隔符,去删除文件
ctrl + R //进入一个交互界面,搜索最近一次使用的命令
7、alias别名
系统启动时读取一些特殊文件的顺序;
alias cdnet="cd /etc/sysconfig/network-scripts" //这种定义alias只能在当前shell生效
/etc/profile:定义环境变量(所有用户) --EXPORT HISTCONTROL =
/etc/bashrc:定义本地本量--alias(所有用户)
~/.bash_profile:定义环境变量(指定用户)
~/.bashrc:定义本地变量--alias(指定用户)
sources ~/.bashrc
8、文件通配符 -- globbing
【文件通配符不是正则表达式】
? 任意单个字符
* 任意长度的任意字符
[] 指定范围内的任意一个字符
^ 1、以什么开头
2、[^]指定范围以外的任意一个字符
[^0-9A-Za-z]
[0-9][a-z][A-Z][a-zA-Z]
指定字符类:
符号
字符标识
[:digit:]
任意数字, 相当于0-9
[:lower]
任意小写字母
[upper:]
任意大写字母
[alpha:]
任意大小写字母
[:alnum:]
任意数字或字母
[:blank:]|
水平空白字符
[:space:]
水平或垂直空白字符
[punct:]
标点符号
[print:]
可打印字符
[:cntrl:]
控制(非打印)字符
[:graph:]
图形字符
[xdigit:]
十六进制字符
9、练习
1、显示/var目录下所有以1开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录;
ls /var/1*[0-9]*[a-z]
2、显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录
ls /etc/[0-9]*[^0-9]
3、显示/etc目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
ls /etc/[^[:alpha:]][[:alpha:]]*
4、复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/test目录中;
cp -a /etc/m*[^0-9] /tmp/test
5、复制/etc目录下,所有以.d结尾的文件或目录至/tmp/test.com目录中
cp -a /etc/*.d$ /tmp/test.com
6、复制/etc目录下,所有.conf结尾,且以m n r p开头的文件或目录至/tmp/test.com目录中
cp -a /etc/[mnrp]*.conf /tmp/test.com
原文地址:https://www.cnblogs.com/jklp-1234/p/11311440.html
- 谈谈分布式事务之二:基于DTC的分布式事务管理模型[下篇]
- 孙明俊:人工智能之算力演进
- 探秘Tomcat——一个简易的Servlet容器
- 2017年与机器学习相关的10大Python开源库
- 控制并发访问的三道屏障: WCF限流(Throttling)体系探秘[上篇]
- 探秘Tomcat——从一个简陋的Web服务器开始
- EnterLib PIAB又一个BUG?[续]——这是一个致命的BUG
- Google工程师:谷歌翻译在几个月内效果明显提升的秘诀
- 回调与并发: 通过实例剖析WCF基于ConcurrencyMode.Reentrant模式下的并发控制机制
- EnterLib PIAB又一个BUG?[续]——这是一个致命的BUG
- 年终盘点2017年发生在上海的科技大新闻
- 数字供应链第六章-网络风险、知识产权盗窃、合规和数据挖掘业务合同
- 使命必达: 深入剖析WCF的可靠会话[实例篇](内含美女图片,定力差者慎入)
- 快速全面构建大数据认知体系
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Newbe.Claptrap 框架如何实现多级生命周期控制?
- Kafka linux(centos7)安装配置kerberos并在另一台机器上使用Java服务接收消息
- SpringCloud bus 手动post可用 使用webhooks自动更新配置失效的解决小记
- 处理Storm1.2.2 日志报错 与spring boot冲突
- Java 中的 ==, equals 与 hashCode 的区别与联系
- 专家精品|密码朋克的社会实验(三):比特币发明了什么
- 面试题答案
- Vue3 为何使用 Proxy 实现数据监听
- vivo 悟空活动中台 - H5 活动加载优化
- PostgreSQL常用命令
- 实用!一键生成数据库文档,堪称数据库界的Swagger
- 布隆过滤器原理
- 缓存穿透了怎么办?
- Stata | 生成等差数列的几种方式
- 一致性算法 - Raft协议流程