sudo find /etc/ -type f -name "rc*" -exec ls -l {} \;
find . -name "t*" -perm 777 -print
find . -mtime -180
find /var/log/ -mtime -3 -ok rm {} \;
vim
替换:
:s/old_string/new_string
:s/old_string/new_string/g
搜索、替换
/word 自上而下
?word 自下而上
:n1,n2/word1/word2/g 将n1行与n2行之间的word1, 替换为word2
:1,$s/word1/word2/g 将第一行与最后一行的word1, 替换为word2
cat /etc/group
groupadd
groupdel
groupmod
sudo groupmod -g 153 group2 -n grouptest
cat /ect/passwd
cat /etc/shadow
id user1 查看用户user1的信息
1."?”表示匹配前的那个字符0次或者1次
2."+"表示匹配前的那个字符至少一次
3.(a|o|e)表示匹配当中是的任意一个
4.“.”表示匹配任意一个字符,只能匹配一个
5."^"用于匹配行首, “$”用于匹配行尾
6.[]用于匹配其中的任意一个,如[0123456789] [0-9] [a-z][A-Z][b-p]
7.在[]里^,表示用于取反,如[^b-p]表示不在b~p范围内的值
8."*"用于匹配前面的字符0次或者多次重复
9.[A-Za-z][A-Za-z]* 表示匹配任意英文单词
10.“\<the\>”精确匹配, 只能匹配单词 the , 而them, another不能匹配
11."\{\}",匹配前面出现的次数。 \{n\}, \{n,\}, \{n,m\}
[a-z]\{5\}, 匹配5个小写字母
12. 列出从a到h范围开的, .awk结尾的文件 ls -l [a-h]*.awk
列出从a到h范围开的, 不以.awk结尾的文件 ls -l [a-h]*.[^awk]*
13 {}中,以逗号隔开,表示或的关系, ls -l {[a-h]*.awk, 0?.pem}, 表示满足[a-h]*.awk 或者0?.pem的所有文件
grep 命令
1. grep "hello world" filename ---》 grep certificate 00.pem
2. grep 支持多文件查询 grep Certificate 00.pem 08.pem
3. grep -c 选项,表示输出匹配字符串行的数量 grep -c Certificate *.pem
4. grep -n选项, 表示列出所有的匹配行, 并显示行号 grep -n Certificate *.pem
5. grep -v 选行, 选项列出不包含模式的所有行, grep -vc Certificate *.pem ,列出不含Certificate字符串的所有行
6. grep -i 选项 忽略大小写, grep -i certificate 00.pem
7 grep -h 选项, 在查询时,不在显示文件的名字 grep -h Certificate *.pem (输出结果不再显示.pem结尾的文件名了)
8 grep -l 选项, 只列出符合匹配的文件名 grep -l Certificate * (结果为00. pem, 08.pem , 11.pem)
9. grep -s 选项 表示不显示不存在或者无匹配文件的错误信息
10. grep -r 选项,表示递归搜索
11. grep -w 和-x, 表示 grep -w cer* 00.pem (此时*不再表示通配符) grep -w 'World' world.txt , 将包含World单词的文本行输出。 grep -x 'World' world.txt , 将只包含 'World'这一行输出
12 greo -q, 将结果返回, 如grep -q -x 'World' world.txt 的结果放到$? 里面, echo $? 即可
13. grep -b -o : grep -b -w 'World' world.txt 打印匹配行跟头部的偏移量 。 grep -b -o -w 'World' world.txt 打印匹配词距文件头部的偏移量
grep 与正则表达式结合的例子
查找以-符号开头的行: grep ^- *.pem
搜索空白行 grep -c ^$ 00.pem
搜索非空白行数 grep -c ^[^$] 00.pem
grep ^/..../ 00.pem: 表示文件中以/字符开始, 中间4个任意字符, 第6个字符仍为/的行, 显示结果如/home/满足匹配
grep ^_*B, 表示以_开头, 重复_很多次, 然后是B字符的行, 如_____B
grep 'seu.edu.cn' 00.pem 将出现问题 , 结果seuxeduxcn这种也符合情况, 应改为 grep 'seu\.edu.\cn' 00.pem
横杠“-”字符比较特别, 它虽然不属于正则表达式元字符,但是“-”字符是引出grep 命令选项的特殊字符, 所以当模式“-”开头时,需要转义符将其转义,如下:
grep -\{5\} 00.pem 错误
grep '-\{5\}' 00.pem 错误
grep \-\{5,\} 00.pem 错误
grep '\-\{5,\}' 00.pem 正确
POSIX字符类
[:upper:] [A~Z]
[:lower:] [a~z]
[:digit:] [0~9]
[:alnum:] [0~9a~zA~Z]
[:space:] 空格或者Tab
[:alpha:] [a~zA~Z]
[:cntrl:] 表示Ctrl键
[:graph:]或[:print:] 表示ASCII码, 33~126之间的字符
[:xdigit:] 表示16进制数字[0~9A~Fa~f]
grep ^[[:upper:]] 00.pem 搜索以大写字母开头的行
grep ^[[:space:]] 00.pem 搜索以空格开头的行
精确匹配有两种方式 grep -w the 00.pem ===> grep \<the\> 00.pem
或字符| 需要加上-E才可以支持, 如grep -E "OU|seu" 00.pem
egrep 等价于 grep -E 如 egrep "OU|seu" 00.pem
fgrep 等价于 grep -F , fgrep不支持正则表达式,只支持普通字符,如下:
fgrep ^-*B 00.pem 错误
fgrep certificate 00.pem 正确