1.python使人秃头
2.python使人秃头
3.python使人秃头
4.生活的调剂 今天学习shell基础语言
----------------------------------我是分界线-------------------------------------------
一.开始
shell程序在学校都是单行命令的形式来执行(缺乏逻辑关系)
区别:
使用shell实现linux的批量管理,而不是去开发应用程序
二.知识概述
shell(python、perl)shell更好的兼容操作系统
pip install ipython
1、bash基本特性
ctrl+l
上键
history
2、IO重定向与管道符
3、 编程基础
编程原理(面向对象,面向过程)
程序:执行某个功能的一个代码而已
程序:指令(命令)+数据(变量)+(逻辑关系)
4、 grep和正则表达式!!!!!
Linux三剑客
pattern“模式”
5、语句的逻辑关系
if
for***(不容易进入死循环)
放入for循环的列表
while
循环条件为true
until
循环条件为false
(不要进入死循环)
case(编写Linux的程序启动脚本)
break
continue
exit(指定程序执行的返回值)
read(input())
echo(print())
变量**
6.Linux三剑客
sed流编辑器
两种模式的切换
awk(报告生成器)
一个独立的编程语言
7.函数
(数字型,字符型)
一段固定的代码块
数组
列表,元组,字典
字符串(字符串处理)
重复:必须连续且相同的数据(先排序再去重)
三.Bash的基本特性
1.命令历史
作用:查看之前使用的命令
关于命令历史的文件:
每个用户家目录下面的.bash_history
在关机的时候,会自动写入一次
(history -r 将内存中的命令手动写入磁盘)
关于命令历史的变量(环境变量)
env //查看环境变量
set //查看更详细的环境变量参数
HISTSIZE=1000 数量
HISTCONTROL=ignoredups
l history的常见操作
查看命令历史
!# 执行#行的命令
!string 匹配最近一次的字符串
!! 上一条命令
******!$ 上一条命令的最后一个参数
ls /etc
ls !$
ESC+.
常见的选项:
-a 追加历史行到历史文件中
-d
-c
history # 显示最近#行的命令
2.命令补全
Tab键,制表符\t代表四个空格键
1、 提示
2、 自动补全
3.目录补全
Tab键
1、提示
2、自动补全
4.命令展开-date命令
{}
Linux的目录需要遵循什么规则?--FHS目录规则
属性1 属性2
A 1
B 2
mkdir -pv /var/{a,b}-{1,2}
date 基于date命令来创建目录
date +%F 改变date的输出格式
%F %H 时 %M 分 %S秒 %T 时间hh:mm:ss
%D mm/dd/yy
练习:通过for语句循环创建一个月的日志文件;.log
例子:2019-08-6.http.log
touch `Date +%F`
for i in {1..31};do
touch `date +%Y-%m-$i`.http.log;
done
tar(归档工具)
特性:压缩这个操作只能对文件进行操作,不能对目录进行。
压缩工具:gzip、bzip2、xz、zcat(查看压缩文件中的内容【不解压】)
tar的常见参数:
归档工具:可以对目录进行操作
-j bzip2
-J xz
-z gzip
-c create 压缩
-x extract解压 //可以不用指定的解压工具
-f 指定文件名
-v 【verbose】显示详细信息
tar cjvf 2018-08.http.log.bz2 2018-08-*.http.log
tar xvz 2018-08.http.log.bz2 -C abc
练习:编写脚本,每天02:20备份/etc/目录中所有文件,名称为当天日期;且保存文件为压缩文件;
例:crontab – 20 2 * * * /root/xxx.sh
vim xxx.sh
#!/bin/bash
tar cJvf /var/`date +%F`.xz /etc/
chmod +x xxx.sh
补充:
clock/hwclock 查看硬件时钟(如何同步系统时钟与硬件时钟)
cal:日历
5.命令的执行状态
在linux中,每一条命令执行后都会有两个结果:
命令本身返回的内容
其次,命令执行的结果状态
$? 变量,就是用来存放命令执行状态的变量
0 表示成功状态(和python正好相反)
1-255 表示失败状态
[$? -eq 0]&& exit 0|| exit1
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/”
//这种方式定义的alias只能在当前shell中生效;
/etc/profile:定义环境变量(所有用户,大写)--EXPORT HISTCONTTROL=XXX
/etc/bashrc :定义本地变量(alias,小写)
~/.bash_profile:定义环境变量(指定用户,写在谁的家目录下就是谁)
~/.bashrc:定义本地变量(alias,指定用户)
sources /etc/profile 或者 ./etc/profile #使生效
8.文件通配符—globbing
【文件通配符不是正则表达式】
? 任意单个字符
* 任意长度的任意字符
[] 指定范围内的任意一个字符
^ 写在[^]指定范围以外的任意一个字符
[^0-9A-Za-z]、[0-9]、[A-Z]、[a-z]、[A-Za-z]
指定字符类 (调用时还得加[])
[:alnum:] 匹配任意一个字母或数字
[:alpha:] 匹配任意一个字母
[:cntrl:]
[:digit:] 匹配任意一个数字
[:graph:]
[:lower:] 匹配任意一个小写字母
[:print:]
[:punct:]
[:space:]
[:upper:] 匹配任意一个大写字母
[:xdigit:]