系统特殊符号
- 基础符号系列
美元符号:$ //取变量内容、配合awk去列、普通用户提示符、
叹号符号: ! //取反、强制
竖线符号: | //前一个命令执行结果交给后面命令处理
xargs: 将信息进行分组显示
-
引号符号
' '
输出的信息,写什么显示什么
" "
和单引号功能类似 但对特殊信息会做解析
` ` |$($())
将反引号中的命令先执行,将执行结果交给引号外面的命令进行处理没有引号 和双引号功能类似 但是可以直接识别通配符信息,如:# echo {01…09}
-
重定向输出符号:
\> 1> 标准输出重定向符号
2> 错误输出重定向符号
\>> 1>> 标准输出追加重定向符号
2>> 错误输出追加重定向符号
&> 正确错误重定向输出
< 标准输入重定向符号
\# passwd --stdin zhangsan < pass.txt
<< 标准输入追加重定向符号
cat >>/abc123.txt<<\EOF
XXX
XXX
EOF
- 路径信息系列
../ 上一级目录
./ 当前路径
~ 返回到家目录
\- 两个目录之间进行快速切换
- 逻辑符号系列
&& 与逻辑符号 前一个命令执行成功, 再执行后面的命令
|| 或逻辑符号 前一个命令执行失败, 再执行后面的命令
系统通配符
\* 模糊匹配所有内容
find / -name "a\*b" //0个或多个字符
{} 生成序列信息 (生成一行序列)
生成连续序列
echo {1..10}
生成不连续序列
echo {1..10..2} 奇数序列
生成组合序列
\# echo {A,B}{01,02}
A01 A02 B01 B02
常用的文件备份操作:
# cp /etc/passwd /etc/passwd.back
# cp /etc/passwd{,.back}
操作系统正则符号
正则符号
1. 利用正则符号匹配文件内容信息
2. 正则符号经常出现在各种开发语言中, python java php shell
3. 正则符号经常被三剑客命令使用
基础正则符号: basic
-
尖角符号:
^
以什么开头的信息
# ll /etc | grep "^d"
-
美元符号:
$
以什么结尾的信息
# ll -F /etc/ | grep "/$"
-
将全部内容显示,但不要显示空行
^$ -- 空行
# grep -v "^$" 文件中过滤
- 点符号
.
匹配任意一个字符,且只有一个字符
# grep "." ~/test.txt
显示匹配过程:# grep "." ~/test.txt -o
- 星符号
*
匹配前一个字符连续出现了0次或者多次
# grep "0*" ~/test.txt
- 点和星结合:
.*
匹配任意所有信息 .* == *
# grep "^o.\*m$" ~/test.txt
//必须加.表示以.为参照匹配所有内容
贪婪匹配问题:指定具体信息阻止贪婪匹配
- 转义符号:
\
\作用:
01. 将有特殊意义符号,转义成普通信息进行识别
将文件中的以 . 结尾的信息进行过滤:
# grep ".$" ~/test.txt //该命令无法真正过滤出以.结尾的行
# grep "\.$" ~/test.txt //使用转义符号
02. 将没有意义的信息转义为有特殊意义的信息
\n 换行符号
\t 制表符号
# echo -e "\\e\[1;31m This is red text \\e\[0m"
//e为字体上色,\\e\[0m,为将颜色重置为默认颜色.否则之后所输出的所有信息都将是31号颜色:格式化
8) 括号符号:[ ]
有包含a、b、c的行
# grep "\[abc]" test.txt
- 括号和尖号组合
[^]
排除符号,除了a、b、c外,匹配包含其他字符的行:
# grep -v "\[abc]" test.txt
# grep "\[^abc]" test.txt
扩展正则符号
默认 grep sed不能直接识别
grep 提升自己 -- egrep/grep -E
sed 提升自己 -- sed -r
-
+
号符号:
匹配前一个字符连续出现了1次或者多次 . * +
# grep "0*" test.txt
# egrep "0+" test.txt -o
-
竖线符号:
|
或者符号|,用于匹配多个信息
# grep -E "my|0" test.txt
只查找当前系统中张三和root的用户信息:
# grep -E "^zhangsan|^root" /etc/passwd
-
括号符号:
()
作用:- 指定信息进行整体匹配
# grep -E "(my)" test.txt
- 进行后项引用前项使用: sed命令替换功能
- 指定信息进行整体匹配
实例:
批量创建用户 test01..test10
第一种方式:
# echo test{11..12} | xargs -n1 useradd
第二种方式:
# echo test{01..10}|xargs -n1|sed -r 's#(.\*)#useradd \\1#g' | bash
并设置密码:
# echo test{01..10}|xargs -n1|sed -r 's#(.\*)#useradd \\1#g && passwd \\1 test.txt' | bash
()符号扩展:
转换为 <12><34><56>进行显示
# cat test03.txt | sed -r "s#(..)(..)(..)#<\1><\2><\3>#g"
-
括号符号:
{}
可以指定字符连续匹配的次数
第一种情况:x{n,m} 表示前一个字符至少连续出现n次,最多出现m次
# grep -E "0{2,3}" test.txt
第二种情况: x{n} 表示前一个字符正好连续出现了n次
# grep -E "0{2}" test.txt
第三种情况: x{n,} 表示前一个字符至少连续出现n次,最多出现多少次不限
# grep -E "0{2,}" test.txt
第四种情况: x{,m} 表示前一个字符至少连续出现0次,最多出现m次
# grep -E "0{,2}" test.txt
-
问号符号
?
定义匹配前一个字符出现0或者1次 . * + ?