Linux常用命令
一、元字符、固化命令方式、grep命令、正则表达式、sed命令、awk命令其他常用命令、轻型分隔符
bash中的特殊字符,键盘上能敲出来的特殊字符都有其特殊意义,强调一点:元字符是被shell解释的
- “ 命令替换 取命令的执行结果
[root@MiWiFi-R3-srv ~]# ls
4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3 nginx-1.10.3.tar.gz
[root@MiWiFi-R3-srv ~]# res=ls
#取命令的运行结果,赋值给变量res
[root@MiWiFi-R3-srv ~]# echo $res #查看变量res的值
4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3 nginx-1.10.3.tar.gz
- $()同上,但它弥补了“的嵌套缺陷
- ~ 家目录
[root@MiWiFi-R3-srv tmp]# cd ~
[root@MiWiFi-R3-srv ~]# pwd
/root
- ! 取非
[root@MiWiFi-R3-srv ~]# ls /dev/sda
sda sda1 sda2
[root@MiWiFi-R3-srv ~]# ls /dev/sda[0123]
/dev/sda1 /dev/sda2
[root@MiWiFi-R3-srv ~]# ls /dev/sda[!01]
/dev/sda2
- ! 历史命令调用
- ! 匹配最近一次历史命令
[root@MiWiFi-R3-srv ~]# !ls
ls /dev/sda[!01]
/dev/sda2
- ! ls 带空格 将命令的返回值取反
- @ 无特殊含义
- # 注释
- % 杀后台进程 jobs号; 取模
- ^ 取非 和 ! 雷同
- ^ 替换
[root@MiWiFi-R3-srv ~]# systemctl restart network
[root@MiWiFi-R3-srv ~]# ^network^sshd^
systemctl restart sshd
- & 后台执行;&& 逻辑与
- *匹配任意长度字符串;计算乘法
- () 在子进程中执行
- -减号;区间;cd -;
- _ 无特殊含义
- +加号 ;
- = 赋值
- | 管道; || 逻辑或
- \ 转义;
- {} 命令列表 #括号内的开头和结尾必须是空格
- #{ ls; cd /; }
- [] 字符通配,匹配括号内之一;
- : 空命令 真值
- ; 可以接多个命令:ls;pwd;echo 123;无论对错,会一直执行到最后一条命令
- “” 软引 ”硬引
- < 输入重定向
- > 输出重定向
- >> 追加
- << here document
- >& 合并2和1输出
- , 枚举分隔符
- . source ; 当前目录
- / 目录分隔符
- ? 单个字符
- 回车 命令执行
- *通配符:任意字符
- ?通配符:任一字符
- [abc] 列表项之一
- [ ^abc ]对列表取非 也可以使用范围 [a-z] 代表aAbBcC…,[0-9]代表012345。。。
- {}循环列表
[root@MiWiFi-R3-srv test]# touch {1..3}{a..d}.txt
[root@MiWiFi-R3-srv test]# ls
1a.txt 1b.txt 1c.txt 1d.txt 2a.txt 2b.txt 2c.txt 2d.txt 3a.txt 3b.txt 3c.txt 3d.txt
- 控制变量名的范围 echo ${AB}C
- 硬引用与软引用
- \转意
固化命令
其他命令补充
在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,下面我们就为大家介绍三种文本处理工具/命令:grep、sed、awk,它们三者均可以解释正则。
grep参数
-n :显示行号
-o :只显示匹配的内容
-q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容
-l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl ‘root’ /etc
-A :如果匹配成功,则将匹配行及其后n行一起打印出来
-B :如果匹配成功,则将匹配行及其前n行一起打印出来
-C :如果匹配成功,则将匹配行及其前后n行一起打印出来
–color
-c :如果匹配成功,则将匹配到的行数打印出来
-E :等于egrep,扩展
-i :忽略大小写
-v :取反,不匹配
-w:匹配单词
sed语法
sed [options] ‘command’ in_file[s]
options 部分
-n
-e
-i
-f
command 部分
‘[ 地址1,地址2 ] [ 函数 ] [参数(标记)]’
定址的方法 1.数字 2.正则
数字
十进制数
1 单行
1,3 范围 从第一行到第三行
2,+4 匹配行后若干行
4,~3 从第四行到下一个3的倍数行
2~3 第二行起每间隔三行的行
$ 尾行
1! 除了第一行以外的行
正则
正则必须用//包裹起来
扩展正则需要用 -r 参数或转义
数字定址:sed -n ‘1p’ /etc/passwd
正则定址:sed -n ‘/^root/p’ /etc/passwd
扩展正则 加 -r 参数 或转义
sed -n ‘/roo\?/p’ /etc/passwd
sed -rn ‘/roo?/p’ /etc/passwd
? 前导字符零个或一个
+前导字符一个或多个
abc|def abc或def
a(bc|de)f abcf 或 adef
x{m} x出现m次
x{m,} x出现m次至多次(至少m次)
x{m,n} x出现m次至n次
awk用法: