操作系统基础符号介绍
基础符号系列
:
作用:
- 注释说明
- 命令提示符中, 表示用户身份-- root管理
$:
作用:
- 调取变量
- 命令提示符中, 表示用户身份-- 普通用户
- 读取文件中指定列信息
| : 管道符号
作用:
- 将管道符号前面命令输出的结果交给管道后面的命令进行处理
! :
作用:
- 取反操作
- 快速调取历史命令 !命令信息
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 ./.* --- 删除根目录下面所有数据信息
{} 匹配序列信息
- 生成数字或者字母序列信息
- 生成组合序列信息
[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] 将匹配多个字符进行取反
\ 转义符号
- 将有意义信息变得没有意义 让点变的没有意义
grep ".$" test.txt
I teach linux.
my qq num is 49000448.
not 4900000448. - 将没有意义字符变得有意义
\n \r --- 换行符
\t 制表符 - 让扩展正则可以变为基础正则
等差序列 :[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: 用于匹配问号前一个字符可能出现, 可能没有出现
{} : 匹配花括号前面一个字符 连续出现指定次数
{n,m} : 匹配最少出现n次, 最多出现m次的
{n} : 匹配正好出现n次连续字符串信息
{n,} : 匹配最少出现n次, 最多出现次数没有限制
{,m} : 匹配最少出现0次, 最多出现m次数
() : 作用:
- 将多个字符信息汇总成一个整体字符串 vs []
- 利用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*