简单的常用符号 通配符 基础正则 扩展正则

操作系统基础符号介绍

基础符号系列

:

作用:

  1. 注释说明
  2. 命令提示符中, 表示用户身份-- root管理

$:
作用:

  1. 调取变量
  2. 命令提示符中, 表示用户身份-- 普通用户
  3. 读取文件中指定列信息

| : 管道符号
作用:

  1. 将管道符号前面命令输出的结果交给管道后面的命令进行处理

! :
作用:

  1. 取反操作
  2. 快速调取历史命令 !命令信息
    history -- 历史
    history -c 清除历史命令记录
    history -w 将内存中保存历史记录永久保存到~/.bash_history文件中

引号符号系别

"" : 将指定信息进行输出显示 可以将特殊字符信息进行解析输出
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

没有引号 : 和双引号功能是类似, 但是没有引号情况可以输出序列信息
echo {01..10} 数字序列
echo {a..z} 字母序列
echo {01..10..2} 奇数序列
mkdir oldboy{01..10}

:反引号,shift+曲线,将引号中命令信息先执行, 将执行后结果交给引号外面的命令进行处理
cp /etc/hosts /etc/hosts_date +%F

路径符号系列

~ : 当前系统用户家目录
. : 表示当前目录
表示隐藏文件 .oldboy.txt.swp
中断编辑 -- 恢复文件信息 --- 删除隐藏文件
同时编辑 -- 其他用户编辑完, 在进行编辑
.. : 表示上级目录

  • : 上一次所在目录
    [图片上传中...(image.png-8db914-1593926982366-0)]

定向符号系列

: 标准输出重定向符号

: 标准输出追加重定向符号
2> : 错误输出重定向符号
2>> : 错误输出追加重定向符号
< : 标准输入重定向符号
tr 'A-Z' 'a-z' < 文件信息
xargs -n1 < 文件信息
<< : 标准输入追加重定向符号
cat >> /oldboy.txt < XXX
XXX
EOF

逻辑符号系列

事件的先后关系
&& : 前一个事情成功完成了, 再做下一件事情
mkdir /oldboy && touch /oldboy/oldboy.txt 符合是逻辑的例子
[root@linux67 /]# mkdi /oldboy && touch /oldboy/oldboy.txt
-bash: mkdi: command not found 不符合逻辑

|| : 前一个事情出现失败了, 再做一件事情
[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 /]# mkdi /oldboy ; touch /oldboy/oldboy.txt
-bash: mkdi: command not found
touch: cannot touch ‘/oldboy/oldboy.txt’: No such file or directory 分号是都做不论对错

操作系统通配符号介绍:

* 匹配任意字符信息

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

通配符号 和 正则符号 区别:

通配符号: 匹配文件名称信息 * 基础命令可以识别通配符号 find rm cp ll

正则符号: 匹配文件内容信息 高级命令可以识别正则符号 grep sed awk

基础正则符号: BRE basic regular expression

^ --- 匹配以什么开头信息 ^xxx

grep "^I" test.txt
练习: 找出文件中以大写字母I开头的信息

$ --- 匹配以什么结尾信息

grep "m$" test.txt

^$ 表示空行信息

练习: 找出空行信息
grep "^" test.txt
练习: 找出以m开头 和 以m结尾行 .*
grep "^m.*m$" test.txt

. 匹配任意一个且只有一个字符

grep sed awk 处理文件时, 会按照每一行进行处理文件
grep "." test.txt -o 会一个一个且一行一行的匹配 符合要求

* 匹配星号前面一个字符连续出现0次或者多次情况

.* 匹配所有内容

[] 匹配多个字符信息

[^xx] 将匹配多个字符进行取反

\ 转义符号

  1. 将有意义信息变得没有意义 让点变的没有意义
    grep ".$" test.txt
    I teach linux.
    my qq num is 49000448.
    not 4900000448.
  2. 将没有意义字符变得有意义
    \n \r --- 换行符
    \t 制表符
  3. 让扩展正则可以变为基础正则

等差序列 :[root@linux67 ~]# seq -w 1 2 10

01
03
05
07
09

扩展正则符号: ERE extended regular expression

说明: 扩展正则符号属于高级符号, 只能三剑客命令中 awk grep--->egrep grep -E sed ---> sed -r

+ : 匹配加号前面一个字符 连续出现1次或者多次的

练习题: 验证以下信息, 身份证合法性
张三:   110109199905060876
李四:   oldboy 
王五:   210109198807086789

[root@linux67 oldboy]# grep -E [0-9]+ test02.txt  -o 
110109199905060876
210109198807086789

[数字]+  :  将连续数字字符串信息进行匹配
[字母]+  :  将连续字母字符串信息进行匹配

? : 匹配问号前面一个字符 连续出现0次或者1次的

PS: 用于匹配问号前一个字符可能出现, 可能没有出现

image.png

{} : 匹配花括号前面一个字符 连续出现指定次数

{n,m} : 匹配最少出现n次, 最多出现m次的
{n} : 匹配正好出现n次连续字符串信息
{n,} : 匹配最少出现n次, 最多出现次数没有限制
{,m} : 匹配最少出现0次, 最多出现m次数

() : 作用:

  1. 将多个字符信息汇总成一个整体字符串 vs []
  2. 利用sed命令进行替换时, 实现后项引用前项

| 匹配多个字符串信息

[root@linux67 oldboy]# grep -E "oldboy|oldgirl" test.txt
oldboy linux python
oldgirl linux python go
grep -Ev "#|$" test.txt
oldgirl linux python go

如何取出IP地址信息    grep   centos7  centos6   
思路1):  如何显示出IP地址
         ip a s eth0
思路2):  显示出有IP地址行信息 
         ip a s eth0|grep "inet "
思路3):  什么信息是IP地址
         四组数字以点分割就是IP地址, 每组数字 可以是一位数/可以是两位数/可以是三位数
ip a s eth0|grep "inet "|grep -E "[0-9]{1,3}\.[0-9]{1,3}"
                                      1-3数字  .  1-3数字
inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0

 ip a s eth0|grep "inet "|grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" -o|head -1
10.0.0.200
ip a s eth0|grep "inet "|grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" -o|head -1
10.0.0.200
ip a s eth0|grep "inet "|grep -E "([0-9]{1,3}\.?){4}" -o|head -1
10.0.0.200

练习: 取出网络MAC地址 由两位组成(0-9 a-f)
ip a s eth0|grep "link/"|grep -E "([0-9a-f]{2}:?){6}" -o|head -1
00:0c:29:6e:a9:8a

作用说明: 分析日志 access.log 有哪些主机访问你的服务器

如何实现批量创建用户 oldboy01..oldboy10, 并设置随机密码(不能使用for循环批量创建用户)
()
思路1) 掌握如何创建用户 给用户设置密码  单个用户设置密码
useradd xx  ;echo 密码 |passwd --stdin 用户信息
思路2) 批量创建用户并设置密码, 按照序列方式
seq -w 10|sed -r 's#(.*)#useradd oldboy\1;echo 123456|passwd --sdtin oldboy\1#g'
echo {oldboy,oldgirl,olddog}|xargs -n1|sed -r 's#(.*)#useradd \1;echo 123456|passwd --stdin \1#g'
思路3) 创建用户密码信息是随机密码
date "+%N"|md5sum |head -c 6
useradd oldboy10; Password=`date "+%N"|md5sum |head -c 6`; echo $Password|passwd --stdin oldboy10; echo oldboy10 $Password >>/tmp/passwd.txt
# seq -w 10|sed -r 's#(.*)#useradd oldboy\1; Password=`date "+%N"|md5sum |head -c 6`; echo $Password|passwd --stdin oldboy\1; echo oldboy\1 $Password >>/tmp/passwd.txt#g'|bash

如何批量修改文件扩展名
思路1) 单个文件修改名称
mv /oldboy/oldboy.txt  /oldboy/oldboy.jpg
sed  "s#(oldboy01.)txt#mv /oldboy/\1txt /oldboy/\1jpg#g"
思路2) 多个文件批量修改扩展名
ls ./*|xargs -n1|sed -r 's#(.*)txt#mv \1txt \1jpg#g'|bash

rename "替换的信息" "替换成什么信息" 哪些文件要做名称修改
rename ".jpg" ".txt" oldboy*


你可能感兴趣的:(简单的常用符号 通配符 基础正则 扩展正则)