shell:bash基本特性
1.命令历史
作用:查看之前使用的命令
命令历史记录在那个文件:家目录下的.bash_history,在关机的时候会自动写入一次(history -r 手动将内存中的命令历史写入文件)
useradd xls-1
echo “123456” | passwd --stdin “xls-1”
cd /home/xls-1
ls -a
关于命令历史的变量(环境变量):
env //查看环境变量
set //查看更详细的环境变量参数
HISTSIZE=1000 数量
HISTCONTROL=ignoredups
忽略重复的历史命令
ignorespace 忽略空白开头的历史命令
ignoreboth 两者都生效
HISTFILE=/root/.bash_history
history的常见操作
查看命令历史
!# #表示数值,执行#行的命令
!string 匹配最近一次的字符串
!!上一条命令
!$ 上一条命令的最后一个参数
ls /etc
ls !$
ESC+.
常见的选项:
-a 添加
-d 删除
-c 清空
history # 显示最近#行的命令
PATH只是环境变量的一种
2.命令补全
tab键
1.提示2.自动补全
制表符 \t 四个空格键
3.目录补全
tab键
1.提示 2.自动补全
4.命令展开
{}
Linux的目录需要遵循什么规则?--FHS目录规则
mkdir -pv mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,
属性1 属性2
a 1
b 2
mkdir -pv /var/{a,b}-{1,2}
基于date命令创建目录
date + %F 改变日期输出时间
date + %F + %H 年月日时
date + %F + %H + %M 年月日时分
date + %F + %H + %M + %S 年月日时分秒
%F CCYY-mm-dd
%T hh:MM:ss
%M MM
%H hh
%S ss
练习:通过for语句循环创建一个月的日志文件;.log 2019-08-06.http.log
for i in {1..30};do
touch `date + %Y-%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 2019-08.http.log.bz2 2019-08-*.http.log
tar xvf 2019-08.http.log.bz2 -C abc 解压
编写脚本,每天02:20备份/etc/目录中所有文件,名称为当天日期,且保存文件为压缩文件;
crontab -- 20 02 * * */root/xxx.sh
编写xxx.sh
vim xxx.sh
#!/bin/bash
#
tar cjvf /var/`date+%F`.xz /etc/
chmod +x xxx.sh
补充:
clock / hwclock查看硬件时钟 (如何同步系统时钟与硬件时钟)
cal 日历 cal 1998
date
clock
hwclock
5.命令的执行状态
在linux中,每一条命令执行后都会有两个结果:
命令本身放回的内容
其次,命令执行的结果状态
$?变量,就是用来存放命令执行状态的变量
0 表示成功状态
1-255 表示失败状态
[$? -eq 0] && exit 0 || exit 1
6.命令的快捷键
ctrl + l //清屏
ctrl + c //退出
ctrl + u //删除光标前的字符
ctrl + k //删除光标后的字符
ctrl + a //跳到光标头
ctrl + e //跳到光标尾
ctrl + w //以空格为分隔符,去删除文件
ctrl + r //进入一个交互界面,搜索最近一次使用的命令(需要输入一个字符串)
7.alias别名
系统启动时读取一些特殊文件的顺序
alias cdnet="cd /etc/sysconfig/network-scripts/" 给这条命令给一个别名,运行别名的时候就是运行了这条命令,这种方式定义的别名只能在当前shell中生效(pstree查看当前shell)
所有人都可以使用
/etc/profile :定义环境变量 --EXPORT HISTCONTROL == XXX
/etc/bashrc :定义本地变量
自己可用
~/.bash_profile :定义环境变量 写在谁的家母录下就是谁可用
~/.bashrc :定义本地变量 写在谁的家母录下就是谁可用
sources /etc/profile 或者 ./etc/profile
8.文件通配符 --globbing
【文件通配符不是正则表达式】
? 任意单个字符
* 任意长度的任意字符
[] 指定范围内的任意一个字符
^ [^]指定范围以外的任意字符
[^0-9A-Za-z]
指定字符类
[:alnum:]字母加数字
[:alpha:]
[:cntrl:]
[:digit:]
[:graph:]
[:lower:]
[:print:]
[:punct:]
[:space:]
[:upper:]
[:xdigit:]
用的时候:再加一层中括号
练习:
1.显示/var目录下所有以1开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录;
ls /var/ 1*[0-9]*[a-z]
2.显示/etc目录下,以任意以为数字开头,且以非数字结尾的文件或目录
ls /etc/ [0-9]*[^0-9]
3.显示/etc目录下,以非字母开头,后面跟了一个字母及其他任意长度任意字符的文件或目录
ls /etc/ [[:alpha:]][A-Za-z]*
4.复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/test目录中
cp /etc/ m*[0-9] /tmp/test
5.复制/etc目录下,所有以.d结尾的文件或目录至/tmp/test.com目录中
cp /etc/ *.d /tmp/test.com
6.复制/etc目录下,所有.conf结尾,且以m n r p开头的文件或目录至/tmp/test.com目录中
cp /etc/ [mnrp]*.conf /tmp/test.com
原文地址:https://www.cnblogs.com/lyali/p/11307879.html
- 结构变量作为方法的参数调用,在方法内部使用的“坑”你遇到过吗?
- 使用表达式树,让访问者直接执行“角色”对象的方法
- 【更正】“给自定义控件(Web Control)添加事件的几种方法”有一个不太准确的地方。
- 在数据库上实现类似铁路售票锁票功能
- Android代码判断手机是否已root方法学习
- 实体类的枚举属性--原来支持枚举类型这么简单,没有EF5.0也可以
- Android中Context用法详解学习
- 【自然框架】之 “表单控件”与“实体类”
- Android数据存储实现的5大方式
- Android实现图片异步加载操作
- (PDF.NET框架实例讲解)将存储过程映射为实体类
- 【开源】QuickPager ASP.NET2.0分页控件——使用示例、基本应用和查询功能
- 移花接木:当泛型方法遇上抽象类----我的“内存数据库”诞生记
- Android扫描多媒体文件剖析
- 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 数组属性和方法
- 使用SNVSniffer软件找somatic mutation
- 腾讯云cvm 内存使用率监控指标解读
- Redis常见面试题
- 使用MuSE软件找somatic mutation
- vivo 基于原生 RabbitMQ 的高可用架构实践
- 数据库锁
- 现在单细胞还想“水”CNS恐怕得多组学了
- 7个处理JavaScript值为undefined的技巧
- Python高级知识点
- 三阴性乳腺癌表达矩阵探索之数据下载及理解
- 6种展示代码的工具,你学会了吗?
- 巧用 Ansible 实现配置管理:多环境配置问题
- 三阴性乳腺癌表达矩阵探索笔记之差异性分析
- TCGA官方数据挖掘文章教你机器学习or深度学习
- 2020年入门数据分析选择Python还是SQL?七个常用操作对比!