本文共 7395 字,大约阅读时间需要 24 分钟。
grep ,egrep ,fgrep
fgrep不支持正则表达式搜索 ,只支持普通字符串过滤grep -E grep -Fgrep是两个合在一起
grep root /etc/passwdgrep "$USER" /etc/passwd 可以过滤变量结果grep 'root' /etc/passwd 可以过滤字符串grepwhoami
/etc/passwd 可以过滤命令结果grep abc 寻找adc 包含abc字符串就显示 PATTEN字符串 也可以是文件grep是包含字符串就全都匹配grep -v “abc” 不包含abc字符串 只限于字符串的行grep -i 忽略大小写grep -n 加行号jsdalkabcccc[0-9]{1,3}.grep -o 只限制模式本身字符串 先取出最后不是/的字符,由于贪婪模式所以能取到/etc/sysconfig/network-scripts 之后再挑选出
/etc/sysconfig/echo "/etc/sysconfig/network-scripts/" |grep -o ".[^/]" |grep -o "^/./" 挑选出文件夹dirname
grep root /etc/passwd
grep 把标准输出按字符串处理
grep -c 有几行 只关心有几行而不是关系那些行2-o 只显示字符串本身-q 静默模式 包含不包含都不显示,会有返回结果echo$? 非零没到到 0找到了
grep "root" /etc/passwd &> /dev/null10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin13-nobody:x:99:99:Nobody:/:/sbin/nologinB是行前 C是前后行
用来搜索特定行 比如搜索一个位置之后想看这个位置附近信息安装nmap 6.4
用来网络扫描 那些地址是开机 哪个地址不能访问ip a 查看 ip地址
rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/nmap-6.40-16.el7.x86_64.rpm
用来网络扫描 那些地址是开机 哪个地址不能访问
nmap -v -sp 172.20.20.0/24 扫描网段nmap -v -sP 172.18.140.0/24 |grep up -B1 >nmap.logcat nmap.log |grep for |cut -d" " -f5扫描grep -e “root“ -e “bash“” 或者
grep -w abc 单词必须是adc 中间有空格 "x abc y" "-abc-y" ",abc,s" 不算单词下划线和数字中间有数字算单词 “f2abc2f”“jdd_abc_ds”
通配符对的是文件名而正则表达式是文本里名字
grep -E egrep
grep -F fgrepgrep -f 文件 /etc/passwd 把文件中字符串 搜索到/etc/passwdgrep -E
匹配控制字符串
BRE 基本正则ERE 扩展正则 grep -EPCRE 正则表达式引擎 算法 perl语言 支持正则表达式则安装程序也需要
PCRE安装软件模块man 7 regex元字符分类 : 字符匹配,匹配次数,位置苗顶,分组
贪婪模式 尽可能匹配所有长度
.任意单一字符
\ 转意符 转化为字符本身
[] 一个字符 如果里头没有符号就不包含符号 区中括号的字符
匹配次数 某一个字符出现次数有几次
X 表示X X出现的次数不确定0次任意多次.任意长度任意字符串space 本身包括tab 和空格键[root@centos7 ~]#cat f1 |grep -v "^[[:space:]]$"
123345grep过滤的是[a-z] a到z
[root@centos7 ~]#echo "/etc/sysconfig/network-scripts" |grep -o ".[^/]\b"|grep -o "^./" \b代表单词结尾 \>
-bash: cdd: command not found
[root@localhost ~]# echo "a;cdd" | grep "a[.]\?c"[root@localhost ~]# echo "a&cdd" | grep "a[.]\?c"[root@localhost ~]# echo "a&cdd" | grep "a.\?c"a&cdd[root@localhost ~]# echo "a&cdd" | grep "a.\?c"a&cdd[root@localhost ~]# echo "a&cdd" | grep "a[.]\?c"[root@localhost ~]# echo "a&cdd" | grep "a.\?c"a&cdd[root@localhost ~]# [root@localhost ~]# echo "a>>cdd" | grep "a.\?c"[root@localhost ~]# echo "a>cdd" | grep "a.\?c"a>cdd[root@localhost ~]# echo "a.cdd" | grep "a[.]\?c"a.cdd[root@localhost ~]# echo "a(cdd" | grep "a[.]\?c"[root@localhost ~]# echo "a(cdd" | grep "a[(.]\?c"a(cdd\? 前一个字符1次或者0次 非贪婪模式 懒惰模式一旦匹配就不往下看cat /etc/passwd | grep "^(.):./\1$"
[root@centos7 ~]#cat /etc/passwd | grep "^(\<.\>).\1$"sync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltbash:x:1009:1010::/home/bash:/bin/bash[root@centos7 ~]#grep "^(a|b)" /etc/passwd
[root@centos7 ~]#grep "^a|^b" /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinabrt:x:173:173::/etc/abrt:/sbin/nologinavahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologinapps:x:1007:1008::/home/apps:/bin/bashapache:x:48:48:Apache:/usr/share/httpd:/sbin/nologinbash:x:1009:1010::/home/bash:/bin/hahabash[root@centos7 ~]#grep "^s|^S" /proc/meminfo
[root@centos7 ~]#grep "\<[0-9]{2,3}\>" /etc/passwd ]
[root@centos7 ~]#grep "rpc" /etc/passwd |grep [^:]*$
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologinrpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin(string1+(string2d)*) 括号匹配按从左向右字符
cat /etc/centos-release |grep -o " [0-9]+." |grep -o "[0-9]+"
[root@centos7 ~]#cat /etc/centos-release |grep -o "[0-9]+" |head -n1cat /etc/centos-release[root@centos7 ~]#echo "welcome to maedu linux"|grep -o "[a-z]" |sort -n|uniq -c|sort -nr
nano编辑功能只有下边注释的功能不是很强大
ctrl 加按键
vi适合批量处理文件
vim比vi多颜色,而且显示光标位置vim针对配置文件加颜色如果文件不存在用vim 会看出new边vim +行号 /etc/passwd 快速编辑
vim +/^rpc /etc/passwd 快速切换以rpc开头行 PATTERN空行算一段落cp /etc/fstab f1
cp /etc/fstab f2vim -b f1 f2 比较多个文件有助于编辑修改文件vim -m file 只读方式打开文件normal命令模式 主要在于查看文件内容h左j下k上l右查看文件内容w 下个单词词首e 下一个单词词尾b 前一个单词词首H 是页首M页中L页尾0行首$行尾^非空字符首G文件最后一行10G10行gg文件第一行( 按句跳动 句子之前要有". " 点和" "空格算一句) 按句跳动{前段落}后段落x 删除剪切光标处1个字符p 黏贴光标后r替换光标中字母R替换 切换replace模式~转换大小写J删除当前行换行符 非常有用d 删除光标下一个位置的字符d$ y复制同dd^ c 删了并且切换插入,模式 同dd0 u撤销多个dw U撤销单行de$ ctrl加r恢复最后一次操作db .重复刚才操作nddD等于d$yyp 黏贴下行P 黏贴上行0gu$ 变小写字母
0gU$ 变大写字母10iwang esc 把wang黏贴100次
<start position>< command><end position>开始位置 命令 行尾位置gU变大写 gu变小写
****重点 命令模式看不到输入键所以谨慎一点insert 从命令模式切换
i光标前a光标后o下单行I行首A行尾O上单行extended command 扩展的命令模式
:wq:q q代表看了看没有改: wq!:q!:w another 另存为新文件:r f1 把f1文件放进vi里;!hostname 直接在vi敲命令 然后在vi下不用退出可以直接看:r!hostname 直接把命令放到vim里:#,# :2,5 行号:2,5d 删除2,5 或者2,+3d
:. 表示当前行:$ 表示最后一行:%表示全文文件:/pat1/,/pat2/ 2个正则表达式定位扩展vim:模式.表示当前行$表示最后一行%全文相当于1,$vim加颜色和文件有关 /etc 下是配置文件有颜色 ,而data则无颜色:/pat1/,/pat2/第一次被pat1模式匹配到行开始到,一直到part2结束 ,pat正则表达式模式:w file 将范围内的行另存至指定文件中: r file 在指定位置插入指定文件中所有内容查找并替换
s/要查找的内容/替换内容/修饰符:1,10s/bash/csh/ 1到10行csh替代bash 只替代行一个:1,10s/bash/csh/g 1到10行csh替代bash g全局替换也就是全部
修饰符
gc全局替换,=每次都提前询问i 忽略大小写@可以作为分隔符 #也可以做分隔符
cp /etc/fstab /root/f2vim /f2 用&代替
查找字符串
/PATTERN?PATTERMNnctrl加v [ 就是 \e 进入insert模式操作
echo -e "\e[31mred\e[0m"
^[[31mred^[[0m\e \egrep “^a”
句子之前要有". " 点空格算一句( 上一句 )下一句crontab -e 计划任务
扩展正则表达式
搜索
/pattrn 光标所处文件尾部查找?pattern 光标所处文件首部查找
n 与命令同方向
N 与命令反方向
u撤销
U撤销回到最早状态 必须在行没有离开.重复刚才操作
命令模式
vim有26个寄存器,也就是剪切板 abcd...z 26个字母 字母寄存器可以共享3”tyy 把3行放到寄存器t‘’tp 就是粘贴t寄存器内容 10个数字寄存器,用0,1 ,2...9 0存放最近复制内容1存放最近删除内容寄存器不能再不同回话共享2进制修改 vim编辑
dd if=/dev/zero of=f1 bs=1 count=3hexdump -c f1vim -b f1:%!xxd 进入2进制模式:%!xxd -r 退出v进入可视化模式 v就是按光标位置可视化 VISUAL 模式
V进入可视化模式 按行来显示ctrl 加v 按矩形方式显示vim FILE1 FILE2 FILE3 多文件模式
:next 下一个
:prev 前一个:first 第一个:last 最后一个:wall 保存所有:wqall 退出所有vim -o f1 f2 水平分割
vim -O f1 f2 ctrl加w 加下ctrl加w s 给一个文件分屏(上下)ctrl加w v 给一个文件分屏(左右):set nu 加行号:set nonu 取消行号~/.vimrc 放到用户家目录
set ic 忽略大小写
set noic 不忽略大小写set ai 启用行对其 缩进
set noai 取消缩进set si 智能缩进set nosi 取消智能缩进set hlsearch 高亮搜索
set nohlsearch 禁用syntax on 启动语法高亮 /etc/passwd 有语法高亮
syntax off 取消语法盖亮:set list 显示tab 换行符 ^I 和$ 显示
:set nolist
:set fileformat=dos 开启windows格式
unix :set ff=dos|unix 简写windows或者unix格式:set cursorline 设置光标所在行标识线set cul 简写
:set paste 保留复制的格式
:set all 看一下set 支持格式
:help 查看帮助
vimtutor 命令 这个帮助手册可以随便删除
shell脚本编程
指令+数据
过程试 以指令为中心,关注过程 ,数据服务指令
对象式 以数据为中心,关注对象 指令服务数据,
只关注每个块的负责人,每块的负责人负责每块的java, python gogo 面向对象
编译: 高级语言-->编译器-->目标代码
编译器程序员手工完成 ,由高级语言转换成二进制语言.java高级语言 --->解释器 ----> 机器代码
解释器直接转换为二进制,如shellshell脚本就是命令集合
顺序执行 预先的排序
循环 不断地执行某个代码 着个处理选择执行 根据状态做什么事情 选择条件判断shell编程:过程式, 解释执行
头脑清晰关注过程,写好shell直接运行shell缺点不安全
高级语言文本,编译二进制,之后目标代码安全shell基本结构 多个命令组合
变量、数组
表达式 a+b语句ifshell 一般加 .sh 后缀
一般运行shell脚本 只要输入绝对路径或者相对路径 前提是拥有x权限如果程序想要运行1种方法给$PATH 变量加路径如/data /data下文件可以执行2进制2把程序放到PATH变量路径中#!/bin/bash 首行shebang机制 首行标注语法写出程序路径
#!/bin/csh要在文本里首行加入
#!/bin/bash
shell脚本用途
自动化常用命令,执行系统管理和故障排除创建简单的应用程序处理文本或文件不适合负杂问题处理bash hello.sh 没有执行权限也可以运行
cat hello.sh | bash 非常有用
ss -ntl 看端口启没启动
curl | bash 在别的远程服务器执行shell脚本
把远程的文件在主机上执行脚本代码开头约定
1.第一行一般为调用使用的语言2.程序名, 一般和功能息息相关,最好不建议汉字,能用英文最好用英文3 版本号4更改后的时间5作者相关信息6改程序的作用,以及注意事项7最后各版本更新简要说明转载于:https://blog.51cto.com/14230597/2388134