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出现的次数 显示出前三
统计:
统计文件有多少行
匹配目标关键字的行
替换
常用格式 sed ‘s#old#new#g’
sed ‘s#(以什么开始)(中间)(以上么结束)#\n#gp’
ifconfig ens32 | grep 'inet ’ | sed -r ‘s#(^.et)(.)(net.*$)#\2#g’
ifconfig ens32 | awk ‘/inet /’ | sed -r ‘s#(^.et)(.)(net.*$)#\2#’
sed -n ‘2,5p’ filename 显示指定行的内容
扩展:打印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系统会判断你输入的命令是否绝对路径,是直接执行
-
如果是相对路径,系统会判断命令是否存在别名,如果存在,执行别名
-
如果命令不存在别名,系统会判断输入的命令是否内置命令,如果是,直接执行
-
如果不是内置命令,系统会查询内存的hash缓存表,如果命令存在缓存,则按照缓存执行
-
如果hash缓存表中没有命令的缓存,系统会从环境变量PATH中的命令路径查询命令的路径进行执行
-
如果PATH变量没有命令的路径,就会报错 command not found
hostnamectl 查看系统信息:
查看系统名称
hostnamectl | grep ‘CPE’ | awk -F ‘:’ ‘{print
(
N
F
−
1
)
"
:
"
(NF-1)":"
(NF−1)":"NF}’
查看kernel:
sed awk grep 强化练习
创建一个文件test
ert
fff
[abcfd]
123
324
444
[rty]
fgfgf
需求:怎么能截取 [abcfd] ~ [rty] 这几行的内容出来
上面代码确实能够解决问题,如果我们设想一下test文件的行为1000行或者更多10000行我们又该怎么去解决呢?