标题2019.11.01老男孩day17
1) 系统基础符号说明
2) 系统通配符号说明
3) 系统正则符号说明
a 基础正则符号
b 扩展正则符号
操作系统基础符号介绍:
. … > >> < << ! \ ~ - …
1) 基础符号系列:
#:
作用:
1. 注释说明
2. 命令提示符中, 表示用户身份-- root管理
$:
作用:
1. 调取变量
2. 命令提示符中, 表示用户身份-- 普通用户
3. 读取文件中指定列信息
| : 管道符号
作用:
将管道符号前面命令输出的结果交给管道后面的命令进行处理
管道符号相关练习题
! :作用: 01. 取反操作 02. 快速调取历史命令 !命令信息
history – 历史
history -c 清除历史命令记录
history -w 将内存中保存历史记录永久保存到~/.bash_history文件中
2) 引号符号系别:
"" : 将指定信息进行输出显示 可以将特殊字符信息进行解析输出
echo “$PATH which cat
oldboy67”
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin /usr/bin/cat oldboy67
**''** : 将指定信息进行输出显示 所见即所得
echo '$PATH `which cat` oldboy67'
$PATH `which cat` oldboy67
没有引号 : 和双引号功能是类似, 但是没有引号情况可以输出序列信息
echo {01..10} 数字序列
echo {a..z} 字母序列
echo {01..10..2} 奇数序列
mkdir oldboy{01..10}
seq -w 10 — ? 如何生成奇数序列/生成偶数序列
反引号 : 将引号中命令信息先执行, 将执行后结果交给引号外面的命令进行处理
cp /etc/hosts /etc/hosts_date +%F
练习:
环境准备:
vim test.txt
oldboy
o
l
d
b
o
y
o
l
d
g
i
r
l
01.
利
用
s
e
d
如
何
将
oldboy oldgirl 01. 利用sed如何将
oldboyoldgirl01.利用sed如何将oldboy信息修改替换为olddog
sed ‘s#$oldboy#olddog#g’ 文件信息
3) 路径符号系列:
~ : 当前系统用户家目录
. : 表示当前目录
表示隐藏文件 .oldboy.txt.swp
中断编辑 – 恢复文件信息R — 删除隐藏文件D
同时编辑 – 其他用户编辑完, 在进行编辑
… : 表示上级目录
4) 定向符号系列:
: 标准输出重定向符号
: 标准输出追加重定向符号 定时任务
2> : 错误输出重定向符号
2>> : 错误输出追加重定向符号
< : 标准输入重定向符号
tr ‘A-Z’ ‘a-z’ < 文件信息
xargs -n1 < 文件信息
<< : 标准输入追加重定向符号
cat >> /oldboy.txt <<EOF
XXX
XXX
EOF
-
逻辑符号系列: shell脚本
第一件事: 创建目录 /oldboy
第二件事: 检查是否存在/oldboy
第三件事: 在/oldboy目录中创建oldboy.txt
&& : 前一个事情成功完成了, 再做下一件事情mkdir /oldboy && touch /oldboy/oldboy.txt [root@linux67 /]# mkdi /oldboy && touch /oldboy/oldboy.txt -bash: mkdi: command not found [root@linux67 /]# mkdi /oldboy ; touch /oldboy/oldboy.txt -bash: mkdi: command not found touch: cannot touch ‘/oldboy/oldboy.txt’: No such file or directory || : 前一个事情出现失败了, 再做一件事情 [root@linux67 /]# mkdi /oldboy || mkdir /oldboy -bash: mkdi: command not found [root@linux67 /]# ll -d /oldboy drwxr-xr-x 2 root root 6 Nov 1 18:44 /oldboy [root@linux67 /]# mkdir /oldboy && touch /oldboy/oldboy.txt || mkdir /oldboy [root@linux67 /]# ll -d /oldboy drwxr-xr-x 2 root root 24 Nov 1 18:45 /oldboy [root@linux67 /]# ll /oldboy total 0 -rw-r--r-- 1 root root 0 Nov 1 18:45 oldboy.txt [root@linux67 /]# rm /oldboy -rf [root@linux67 /]# mkdi /oldboy && touch /oldboy/oldboy.txt || mkdir /oldboy -bash: mkdi: command not found [root@linux67 /]# ll -d /oldboy drwxr-xr-x 2 root root 6 Nov 1 18:46 /oldboy [root@linux67 /]# ll /oldboy total 0
03. 操作系统通配符号介绍:
* 匹配任意字符信息
find /oldboy -name “old*”/".txt"/"old.txt"
rm /oldboy/.txt /oldboy/oldboy
rm -rf ./* — 清空目录中文件数据(清空可见文件)
rm -rf ./.o* — 删除以O打头的信息
rm -rf ./.* — 删除根目录下面所有数据信息
{} 匹配序列信息
1) 生成数字或者字母序列信息
2) 生成组合序列信息
[root@linux67 oldboy]# echo A{1…3}
A1 A2 A3
[root@linux67 oldboy]# echo {1…3}B
1B 2B 3B
echo A{,3}
A A3
echo /oldboy/oldboy.txt{,.bak}
快速备份:
cp /oldboy/oldboy.txt /oldboy/oldboy.txt.bak --简化-- cp /oldboy/oldboy.txt{,.bak}
快速恢复:
cp /oldboy/oldboy.txt.bak /oldboy/oldboy.txt --简化-- cp /oldboy/oldboy.txt{.bak,}
cp /oldboy/oldboy.txt.bak /oldboy/oldboy.txt
04. 操作系统正则符号:
准备操作环境:
cat >> test.txt <<EOF
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
EOF
基础正则符号: BRE basic regular expression
^ — 匹配以什么开头信息 ^xxx
grep “^I” test.txt
练习: 找出文件中以大写字母I开头的信息
$ — 匹配以什么结尾信息
grep “mKaTeX parse error: Expected group after '^' at position 42: …行信息 grep "^̲” 文件
练习: 排除空行不显示
[root@linux67 oldboy]# grep -v “^$” test.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
练习: 找出以m开头 和 以m结尾行
[root@linux67 oldboy]# grep “^m.*m$” test.txt
mm
my blog is http://oldboy.blog.51cto.com
^$ 表示空行信息
匹配任意一个且只有一个字符
grep sed awk 处理文件时, 会按照每一行进行处理文件
[root@linux67 oldboy]# grep “.” test.txt -o
I
a
m
o
l
d
[root@linux67 oldboy]# grep “.$” test.txt
I am oldboy teacher!
I teach linux.
mm
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY
-
匹配星号前面一个字符连续出现0次或者多次情况
[root@linux67 oldboy]# grep “o*” test01.txt
gd
god
good
goood
gooood
[root@linux67 oldboy]# grep “0*” test.txt
I am oldboy teacher!
I teach linux.
mm
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.not 4900000448. my god ,i am not oldbey,but OLDBOY!
.* 匹配所有内容
[] 匹配多个字符信息
grep “[0-9]” test.txt
等价于:
grep “0” test.txt
grep “1”[root@linux67 oldboy]# grep "[0-9a-zA-Z]" test.txt I am oldboy teacher! I teach linux. mm I like badminton ball ,billiard ball and chinese chess! my blog is http://oldboy.blog.51cto.com our site is http://www.etiantian.org my qq num is 49000448. not 4900000448. my god ,i am not oldbey,but OLDBOY!
[^xx] 将匹配多个字符进行取反
[root@linux67 oldboy]# grep “[^0-9a-zA-Z]” test.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!\ 转义符号
1) 将有意义信息变得没有意义
[root@linux67 oldboy]# grep “.$” test.txt
I teach linux.
my qq num is 49000448.
not 4900000448.
2) 将没有意义字符变得有意义
\n \r — 换行符
\t
3) 让扩展正则可以变为基础正则???PS:
- 正则符号使用时, 可以结合使用
- 正则符号做匹配时,有贪婪匹配特性
解决贪婪:
[root@linux67 oldboy]# grep “^I.*e ba” test.txt
I like badminton ball ,billiard ball and chinese chess!
扩展正则符号: ERE extended regular expression
通配符号 和 正则符号 区别:
通配符号: 匹配文件名称信息 * 基础命令可以识别通配符号 find rm cp ll
正则符号: 匹配文件内容信息 高级命令可以识别正则符号 grep sed awk