2021-07-10

bash shell执行命令的窗口:

(bash 命令 -->内核–>驱动硬件)

bash语法结构 :

bash

	执行方式:

​ 1,单条命令

​ 2,shell脚本

bash 特性:

​ 快捷键; ctrl +c ,ctrl + <> ctrl +u 删除光标已以前的内容 ctrl+k 删除光标以后的内容

​ 命令补全: TAB

​ 选项补全 yum install -y bash-completion

​ 路径补全;判断路径是否输入错误

​ 历史记录 history history -w将已有的history中的命令保存到磁盘中

​ 别名;alias

​ 希望执行 rm 时 提示rm 指令找不

​ 拒绝使用某个命令 alias rm='echo"rm command not found

​ 缩短命令

文件管理:

​ 路径:

​ 目录结构:

window :

​ 多根 多个顶点

linux:

​ 单根 所有的东西都在 /

/root /bin /sbin /etc/ /mnt /medin /user

/boot /proc /dev /srv /tmp /var

路径:有目录结构

​ 文件名称 + 目录 =的=路径

访问方式:

相对路径 :相对于当前路径

.当前目录

… 当前目录的上一级目录

绝对路径 :一切以根开始

cd /usr/local

cd /user;cd local/

include /etc/nginx/test.conf -->dopt

​ 创建:

​ 文件创建

​ 目录创建 -p, 递归创建 -v显示过程

​ 删除:

rm 删除文件

-f强制删除

-r 递归删除目录,先删除目录中的文件,然后再干掉目录

​ 移动:

​ MV 源文件 目标

​ 复制

​ cp 原文件 目标位置 +文件名称

​ -r 递创建

​ -p包含文件属性

​ cp /etc/{hosts,host_back} 将hosts 复制到host_back 查看

​ 编辑

​ 过滤(筛选): 文件 数据 不规则

​ 1排序

​ 2去重

​ 2过滤 grep “过滤的关键字”

​ grep "root " /etc/passwd

​ grep -v “root” /etc/passwd 取反过滤

​ -E 支持扩展表达式 支持 多条件匹配

​ grep -E “xiaohong|xiaolv” /test/grep.log

[root@localhost ~]# grep -E “xiaohong|xiaolv” /test/grep.log
xiaohong
xiaolv

​ -i 忽略大小写

​ grep -v “^#” /etc/vsftpd/vsftpd.conf

​ grep -Ev “^#” /etc/vsftpd/vsftpd.conf

​ sort -k 2 -n -r grep.log | head -3

-k 指定列 默认是空格为分隔符

-n 以number方式排序

-r 反转(从大到小)

去重

-c :count 统计出现的次数

sort -k 2 -n -r grep.log | uniq -c
2 xiaohong 100
1 xiaohei 100
1 xiaolan 90
1 xiaolv 80
1 xiaohong 78

有个日志文件,统计 个=每个IP出现的次数 显示出前三
2021-07-10
统计:
统计文件有多少行
2021-07-10
2021-07-10
匹配目标关键字的行
2021-07-102021-07-10
替换
常用格式 sed ‘s#old#new#g’
2021-07-10
sed ‘s#(以什么开始)(中间)(以上么结束)#\n#gp’
ifconfig ens32 | grep 'inet ’ | sed -r ‘s#(^.et)(.)(net.*$)#\2#g’
2021-07-10

ifconfig ens32 | awk ‘/inet /’ | sed -r ‘s#(^.et)(.)(net.*$)#\2#’
2021-07-10sed -n ‘2,5p’ filename 显示指定行的内容
2021-07-10

扩展:打印IP
ifconfig ens32 | grep 'inet ’ | sed -r ‘s#(^.et)(.)(net.*$)#\2#g’

ifconfig ens32 | awk ‘/inet /’ | sed -r ‘s#(^.et)(.)(net.*$)#\2#’

ifconfig ens32 | grep 'inet ’ | awk ‘{print $2}’

ifconfig ens32 | grep 'inet ’ | sed -r ‘s/(^.inet)(.)(netmask.*$)/\2/’

ifconfig ens32|awk ‘NR==2 {print $2}’

grep ‘IPADDR’ /etc/sysconfig/network-scripts/ifcfg-ens32|awk -F ‘=’ ‘{print $2}’

grep ‘IPADDR’ /etc/sysconfig/network-scripts/ifcfg-ens32|awk -F ‘=’ ‘{print $NF}’

文件传输与下载
yum install -y lrzsz-0.12.20-36.el7.x86_64
sz linux–>windows

sz /PATH 将文件下载到其他的平台

rz windows–>linux

rz 不支持断点续传 ,只支持上传文件不能传文件夹 (传文件夹需要打包成文件)

不支持上传超过4GB的文件

查找命令:
which command
whereis command
type -a command
都是查找命令的绝对位置

LINUX 命令的执行流程
1系统会判断你输入的命令是否绝对路径,是直接执行

  1. 如果是相对路径,系统会判断命令是否存在别名,如果存在,执行别名

  2. 如果命令不存在别名,系统会判断输入的命令是否内置命令,如果是,直接执行

  3. 如果不是内置命令,系统会查询内存的hash缓存表,如果命令存在缓存,则按照缓存执行

  4. 如果hash缓存表中没有命令的缓存,系统会从环境变量PATH中的命令路径查询命令的路径进行执行

  5. 如果PATH变量没有命令的路径,就会报错 command not found
    2021-07-10

hostnamectl 查看系统信息:
查看系统名称
hostnamectl | grep ‘CPE’ | awk -F ‘:’ ‘{print ( N F − 1 ) " : " (NF-1)":" (NF−1)":"NF}’

2021-07-10
查看kernel:
2021-07-10

sed awk grep 强化练习
创建一个文件test
ert
fff
[abcfd]
123
324
444
[rty]
fgfgf
需求:怎么能截取 [abcfd] ~ [rty] 这几行的内容出来
2021-07-10
上面代码确实能够解决问题,如果我们设想一下test文件的行为1000行或者更多10000行我们又该怎么去解决呢?
2021-07-10

上一篇:Docker容器进入的方式


下一篇:Docker容器网络-基础篇