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 003. 操作系统通配符号介绍: * 匹配任意字符信息 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
