Shell编程1
目录
文本处理工具
grep工具
grep是行过滤工具,用于根据关键字进行过滤。
语法:
# grep [选项] '关键字' 文件名
常用选项:
常用:
grep –color=auto ['要搜索的关键字'] [文件名] //让搜索出来的关键字用颜色标识
alias grep='grep –color=auto' //临时设置以后输入grep 代表输入grep –color=auto 这样输入grep就有颜色标识,要想永久生效需要把设置的内容放在etc目录下文件配置中,然后输入
source [配置的文件目录名] ,进行更新以下才能生效。但是现在ubutun默认是已经配置好了的,所有无需此操作。
grep '^root' passwd //过滤出passwd文件中以root开头的行
grep 'bash$' passwd //过滤出passwd文件中以bash结尾的行
grep '^root' 'bash$' passwd //过滤出passwd文件中以root开头bash结尾的行
grep -nB 3 '^ftp' passwd //过滤出passwd文件中以ftp开头前三行 //A则是后三行,C前后三行
cut工具
cut是列截取工具,用于列的截取。
语法:
cut [选项] 文件名
常用选项
-c: 以字符为单位进行分割,截取
-d: 自定义分割符,默认制表符\t
-f:与-d一起使用,指定截取那个区域
举例说明:
head passwd //显示passwd文件的前十行
sort工具
sort工具用于排序,他将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
uniq工具
uniq用于去除连续的重复行 //只去除连续重复的行,sort 是去除所有的重复行
tee工具
tee工具是从标准输入读取并写入到标准输出和文件,即:双向覆盖重定向(屏幕输出|文本输入)
无-a每次覆盖,又-a双向追加不覆盖重定向。
diff工具
diff工具用于逐行比较文件的不同
注意:diff描述两个文件不同的方式是告诉我们怎样改变第一个文件之后与第二个文件匹配。
语法和选项
语法:
diff [选项] 文件1 文件2
此处省略……
paste工具
paste工具用于合并文件行
常用选项:
-d:自定义间隔符,默认是tab
-s:串行处理 ,非并行
tr工具
tr用于字符转换,替换和删除,主要用于删除文件中控制字符或进行字符转换
Ubutun拼音配置:https://blog.csdn.net/fx_yzjy101/article/details/80243710
相关进程查看:ps (查静态进程号) top (动态) pgrep(直接查进程号)
bash的特效
文件自动补全
Tab键自动补全命令和文件
常见的快捷键
常用的通配符
bash中的引号
shell编程
编程分类
shell简介
shell介于内核与用户之间,负责命令的解释
总结:
shell种类
shell脚本
shiell脚本标准执行方式又两种,一种是在相对路径下执行-> /home/dc/1.sh ,一种是相对路径,直接在当前目录执行-> 。/1.sh
编写shell脚本时,魔法字符一定不要写死->#!/bin/bash ,可以写成#!/bin/env bash ,这种会自己去找系统目录下的解释器路径,但是一般在其他目录里非home里的账户目录下用env执行时会报错,只能用bin/bash,只有在一创建的用户目录下创建的shell脚本才可以用env。
编写shiell脚本以.sh为后缀名,然后给+x权限后再执行即可。
变量定义
变量的定义
概述:用来临时保存数据,该数据是可以变化的数据。
定义变量
下图两种方式一样。
注意:定义变量时"="左右不能又空格,否则报错,如:a = 123或 a =123 都时错误的,正确的定义因该是a=123
unset [变量名] 可取消临时变量
定义变量注释事项
- 变量名区分大小写
- 变量名不能又特殊符号
- 变量名不能以数字开头
- 变量名等号两边不能又空格
- 变量名尽量做到见名知意,定义一个变量然人一眼知道意思。
变量定义的方式
- 基本的定义方式
上图中${A:2:4}-> A=1234567 第一为数字1 对应的是0,第二位是1,所以A:2:4 中的2对应的是1234567中的3
- 命令执行结果赋值给变量
注意:` ` 表示执行里面的结果
- 交互式定义变量(read)
目的:用户自己给变量赋值
语法:read [选项] 变量名
常用选项
选项 | 释义 | 用法 |
-p | 定义提示用户的信息(用双引号引起来) | read -p "input name" name |
-n | 定义字符数(限制变量值的长度) | read -n 5 -p "input name" name |
-s | 不显示(隐藏输入的内容,输入内容不可见) | read -s -p "input name" name |
-t | 定义超时时间,默认单位秒(限制用户输入变量值的超时时间,超过输入的时间无效) | read -t 3 -p "input name" name |
用户自己定义变量,变量值由用户自己输入:
用户定义变量,变量值从文件冲获取
- 定义有类型的变量
目的:给变量做一些限制,固定变量的类型
用法:declare 选项 变量名=变量值
举例说明
变量的分类
- 本地变量
简单的四则运算
算数运算:默认情况,shell只能支持简单的整数运算
运算内容:加(+),减(-),乘(*),除(/),求余数(%)
条件判断语法结构
- 条件判断相关参数
- 判断文件权限
- 判断文件新旧
- 判断整数
- 判断字符串
- 多重条件判断
字符串比较
流程控制语句
If结构
F表示false,为假 T表示true,为真。
If..else结构
注意:上图中括号判断变量的两边有空格,否则报错->
还可以直接调用一个变量,在执行script的时候进行传参。
If...elif...else结构
层层嵌套结构
应用案例
判断那两台主机是否ping通
判断一个进程是否存在
补充:pgrep命令
判断一个服务器是否正常
查看一个网站能否访问,在lamp环境下下载该页面
wget ->wget www.itcast.cn
crul ->crul www.itcast.cn
elinks ->elinks www.itcast.cn elinks -dump www.itcast.cn 把结果打印出来,不进行web页面的交互
判断用户是否存在
for循环语句
for列表循环
列表for循环:用于将一组命令执行已知的次数
seq 列表的一个程序->seq 5 其含义是:打印1到5的列表
for不带列表循环
不带列表的for循环执行时由用户指定参数和参数的个数