linux 2.shell script

涉及部分命令

ulimit

限制用户使用系统的资源,如开启文件数量,cpu使用时间,内存等

-H 严格设置,不能超过这个值
-S 警告设置
-a 列出所有限制额度
在这里插入图片描述
-f 最大文件容量(KB)
-d 最大段内存
-t 最大cpu使用时间(s)
-u 最大进程数量

别名 alias,unalias

在这里插入图片描述
在这里插入图片描述

history

n 数字,列出几行
-c 清楚history中的内容

在这里插入图片描述

source

将配置文件读取到当前的bash环境中
source 配置文件

stty,set

终端环境设置,比如说 ctrl+c 中断程序运行,用stty可以更改默认
stty
-a 列出所有参数
intr 发送一个中断信号给程序
quit 发送一个quit
erase 向后删除字符
kill 删除目前命令行上的所有文字
eof End of file 结束输入
start 某个程序停止后,重新启动outpu
stop 停止目前屏幕输出
susp 一个terminal stop 给到程序,即结束程序的生命

在这里插入图片描述
修改,设置向后删除为 ctrl + h , 由上图知默认为 ctrl+?
stty erase ^h

last

显示登陆者信息

双向重定向 tee

tee 会将数据同时送到文件与screen上

-a 以append方式追加到文件中

原来 cat /etc/passwd > ./passwd.bak 这条命令的作用是讲cat 读取到的内容重定向到passwd.bak中,那假如我还需要用到这段内容怎么办,可以使用tee
在这里插入图片描述

vim编辑器的使用

vi有三种模式:一般命令模式,编辑模式,命令行模式
i , o , a 进入编辑模式
[ESC] 退回到一般模式
命令模式输入 [:wq] 保存,输入 [:wq!] 强制刷入 [:q!] 强制退出退出

$ 移动到该行末尾
G 移动到文件的最后一行
/word 向光标下寻找word
?word 向光标上寻找word
x 删除一个字符
dd 删除整行
ndd 删除光标所在位置向下n行
yy 复制当前这一行
nyy 复制光标所在位置向下n行
p 粘贴
u 撤销上一个动作

认识学习bash

shell:控制内核的东西
内核:控制硬件的东西

变量的设置与使用

使用
echo $variable
echo $PATH
echo ${PATH}
设置
myname=namexxx
echo ${myname}

** 单双引号区别**
在这里插入图片描述

  • 如需使用其他命令,如查看内核
    在这里插入图片描述
    变量累加
PATH="$PATH":/home/bin   或者 PATH={PATH}:/home/bin
# 取消一个变量
unset 【变量名字】
环境变量

两个命令分别是env,export
HOME 代表用户的根目录
SHELL 当前环境用的是哪个shell
PATH 执行文件查找路径
LANG 当前系统的语系

变量内容的删除,取代,替换

变量设置方式说明
${变量#关键词}从头开始删除符合【关键词】的内容,最短数据删除
${变量##关键词}从后开始删除符合【关键词】的内容,最长数据删除
${变量%关键词}从头开替换除符合【关键词】的内容,替换第一个匹配的
${变量%%关键词}从头开始替换符合【关键词】的内容,替换所有
变量键盘读取,数组与声明:read,array,declare
read
	-p 指定提示符
	-t 等待秒数
declare
	-a 变量声明为一个数组
	-i 变量声明为一个整形
	-x 声明为一个环境变量
	-r 设置为readonly ,不可修改 ,unset

数组:array
在这里插入图片描述

bash 登录与欢迎信息

主要修改 /etc/issue 文件 和 /etc/motd(centos)

管道命令(pipe)

【|】 界定符号,处理由前一个命令传来的正确信息,也就是标准输出信息

选取命令:cut 、grep

cut
-d 指定按什么分隔的字符
-f 取分隔之后的第几个位置结果
在这里插入图片描述

grep
-a 将二进制文件以文本文件的方式查找数据
-c 计算找到的次数
-i 忽略大小写
-n 输出行号
-v 反向选择

排序命令,sort,wc, uniq

sort
-f 忽略大小写
-n 以数字方式排序
-b 忽略最前面的空格
-M 以月份名字排序
-r 反响排序
-t 分隔符号
-k 以哪个field排序
wc
-l 列出行数,即文件总行数
-w 多少字 (英文字母)
-m 多少字符

uniq
当排序完成,想将重复数据仅显示一条(去重)
-i 忽略大小写字符
-c 进行计数

统计每个人登陆总次数

在这里插入图片描述

正则表达式与文件格式化处理(sed,awk)

正则表达式

特殊符号代表意义
[:alnum:]0–9,A–Z,a–Z
[:alpha:]A–Z,a–z
[:blank:]代表空格和tab建
[:lower:]a–z 小写字母
[:upper:]A–Z
[:digit:]0–9 数字
^表示开头
$表示结尾
[]匹配[] 里面的内容
*匹配任意
[^a]开头不是a的
^[a-z]开头是小写字母
{x,y}匹配x,-y 个数
匹配以点结束的内容
grep '\.$' regular_express.txt

sed 工具
-n 只有经过sed 处理的数据才会显示出来
-e 编辑模式
-f 将sed操作写到一个指定的file中
-r 正则支持
-i 直接修改文件
操作说明
a 新增
c 替换
d 删除
i 插入
p 打印
s 替换 ,搭配正则,sed ‘s/pattern or old string/replace_string/g’

nl 查看文件显示行数 sed ‘2,5’ 删除2-5 行
在这里插入图片描述
\n 换行 2a 第二行增加 drink beer
在这里插入图片描述

使用 [] 反斜杠 来换行
在这里插入图片描述

c 替换 2----5行为 2-5 line

在这里插入图片描述

在这里插入图片描述

sed s模式正则替换
sed ‘s/要替换的字符/新的字符/g’
联系,过滤出当前网卡的32位ip地址
在这里插入图片描述
ifconfig ens33 查看 ens33信息,然后grep 过滤出 【inet 空格】那一行的数据,第一次sed 【重开头一直找到inet 后面有个空格】这里内容的字符替换成空,第二次sed 查找【空格 一直到net】 这里面的内容替换成空

在这里插入图片描述
加个$ 严谨一点
在这里插入图片描述
接下来删除文件的空白行,以及注释行(以#开头的都是注释),
grep 实现
替换前
在这里插入图片描述
-v 反选(可理解为不想要匹配的东西) ^$ 表示为空行,^# 表示去掉注释行
在这里插入图片描述
sed 实现
/…/ 里面写正则
在这里插入图片描述

以上操作都是定向的显示出来

加上 -i 为操作源文件,危险操作建议之前backup
在这里插入图片描述

在这里插入图片描述

** awk使用 **
awk ‘条件类型{操作}条件类型2{操作2}’ filename

查看第1列 与 第3列
在这里插入图片描述
awk 处理流程

  1. 读入第一行,将第一行的数据写入 $0,$1, $2…
  2. 根据条件类型的显示,判断是否需要后续操作
  3. 完成所有操作与条件
  4. 重复 1 2 3

awk 变量

变量代表意义
NF每一行拥有的字段总数
NR目前awk所处理的是第几行
FS目前隔离字符,默认是空格

awk的操作都是以 ‘’ 单引号括住
在 awk中 NR和NF 可以不使用 $ 符号
在这里插入图片描述
在awk中表示字符串使用 " " 双引号
在这里插入图片描述

为什么第一行没有被:冒号分隔出来,是因为读入第一行的时候还是默认 以空格分隔,我们可以加入BEGIN

在这里插入图片描述

文件对比工具 diff

shell脚本

$? 查看上一个命令执行成功与否,

执行脚本的几种方式:
1.绝对路径,脚本需要加上可执行权限
2.相对路径,脚本需要加上可执行权限
3.bash shell脚本
第一行是执行这个脚本使用的shell
记得修改权限,chmod +x file.sh
示例
在这里插入图片描述
数值运算
$((计算式))

在这里插入图片描述
计算浮点数 通过 bc工具
在这里插入图片描述

shell中的${},##, %% , :- ,:+, ? 的使用,

利用test命令测试功能
测试参数代表意义
关于文件是否存在
-e文件名是否存在
-f文件名是否存在并且为一个文件
-d文件名是否存在且为一个目录
关于文件的权限检测
-r文件是否具有可读
-w是否有可写
-x是否有可执行
两个文件比较
-nt判断file1 是否比file2 新
-ot判断file是否比 file2旧
-ef判断是否为同一个文件,可在hard link的判断上
整数之间的判断
-eq两数值相等
-ne两数值不相等
-gtn1 大于n2
-ltn1 小于 n2
-gen1 >= n2
-len1 <= n2
字符串判断
test -z string判断是否为0 若为空,返回true
test -n string判断是否非空 ,非空true ,空false
test str1==str2判断是否相等 ,相等返回true
test str1!=str2判断不相等,不相等返回 true
多重条件判断
-a如: test -r file -a -x file, 则当 file具有 可读和可执行时才满足条件返回 true
-o满一个条件即可
!test ! -x file 当file 没有可执行时条件满足,返回true

中括号【】也是判断符号

在这里插入图片描述

shell脚本中的默认变量

$# 参数个数
$@ 如 $1 $2 $3 为文件后面接受的参数

shift 变量号码偏移

if … then

&& 表示 and
|| 表示 or

语法格式

if [条件判断1] then;
	.......
else [条件判断2] then;
	......
else
	.....
fi

判断当前机器的 3306,6379 服务是否开启
在这里插入图片描述

function 函数

定义
function fname(){

}

while 循环
语法格式

while [条件判断式]
do
done


for 循环
语法格式

for i in xxx
do 
	.......
done
shell 脚本的调试
sh	-n  不执行脚本,查询语法问题
		-v 执行脚本前,将文件的内容输出到screen
		-x 将使用到的脚本内容输出到屏幕上
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值