系统基础符号说明
基础符号系列
#的作用
注释的意思
命令提示符中,表示用户身份 --root管理员
$的作用
调取变量
命令提示符中,表示用户身份 --普通用户
读取文件中指定列的信息
|的作用
将管道符号前边命令输出的结果交给管道后面的命令进行处理
!的作用
取反操作
快速调取历史命令 !命令
练习: 用!从oldboy/oldboy01目录中, 将 01.txt 02.txt 文件找出来
history 查看历史命令记录
history -c 清除历史命令记录
history -w 将内存中保存历史记录永久保存到~/.bash_history文件中
引号符合系列
" "
将指定信息输出显示 可以将特殊的字符信息进行解析输出
’ ’
将指定信息输出显示 所见即所得
sed ‘s#$oldboy#olddog#g’ 文件信息
没有引号
和双引号功能是类似的 但是没有引号情况可以输出序列信息
反引号
将反引号中命令信息先执行,将执行后结果交给反引号外面的命令进行处理
cp /etc/hosts /etc/hosts_date +%F
路径符号系列
~代表当前系统用户家目录
.表示当前目录 或者 隐藏文件
…表示上级目录
-表示上一次所在目录
定向符号系列
1)> 标准输出重定向符合
2)>>标准输出追加重定向符合
3)<标准输入重定向符合
4)<<标准输入追加重定向符合
5)2>错误输出重定向符合
6)2>>错误输出追加重定向符合
逻辑符合系列
&&代表前一个事情成功完成了,再做下一件事情
||表示前一个事情出现失败了,在做下一件事 (shell脚本里用的多)
系统通配符号说明
匹配任意字符信息 *
{ }匹配序列信息
生产数字或者或者字母序列
生产组合序列信息
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
系统正则符号说明
基础正则符号:BRE
^ 匹配以什么开头的信息 ^XXX
$ 匹配以什么结尾的信息 XXX
^$ 匹配空行信息
练习:排错空行不显示
. 匹配任意一个且只有一个字符
练习:找出以m开头m结尾的行
grep sed awk 处理文件时,会按照每一行处理文件
*代表匹配星号前面的一个字符连续出现0次或多次的情况
.*表示任意所有内容
PS:
1)正则符号使用时,可以使用在一起结合使用
2)正则符号做匹配时,有贪婪的特性 解决贪婪就设定个节点
[ ] 匹配多个字符信息
[^]将匹 配多个字符进行取反
\ 转义符号
1)将有意义的字符变得没有意义
2)将没有意义的字符变得有意义
\n换行符 \t制表符 \r取下一个
3)让扩展正则可以变为基础正则???
扩展正则符号:ERE
通配符号和正则符号区别:
通配符号:匹配文件名称信息 基础命令时可以识别通配符号
正则符号:匹配文件内容信息 高级命令可以识别正则符号 (三剑客)
练习:
环境准备:
mkdir oldboy01 oldboy02 oldboy03
touch oldboy01.txt oldboy02.txt oldboy03.txt
01. 将普通文件名称是old开头, 文件大小小于100k找出来, 并移动到/tmp目录
cat /etc/services >>oldboy01.txt
find /oldboy -type f -name “old*” -size -100k | xargs mv -t /tmp
02. 将普通文件名称是.txt结尾, 文件权限为600权限找出来, 并复制到/tmp目录中
chmod 600 oldboy02.txt
find /oldboy -type f -name "*.txt" -perm 600 | xargs cp -t /tmp
03. 将普通文件名称是02.txt找出来, 但不包含oldboy02目录中的, 进行批量删除(至少三种方法)
touch oldboy{01..03}/{01..03}.txt
find /oldboy -type f -name "02.txt" ! -path "/oldboy/oldboy02/*" -delete
find /oldboy -type f -name "02.txt" ! -path "/oldboy/oldboy02/*" -exec rm -f {} \;
find /oldboy -type f -name "02.txt" ! -path "/oldboy/oldboy02/*" | xargs rm