第1天

正则表达式

grep

选项 作用
-i 忽略大小写
-v 反转匹配
-n 显示行号
-R 递归目录下所有文件
-A 正则表达式匹配项之后的行数
-B 正则表达式匹配项之前的行数
-e 使用多个 -e 选项可以提供多个正则表达式
-E 使用 egrep
-F 使用 fgrep

匹配符

字符匹配

符号 匹配项
. 任意单个字符
[] [] 内任意单个字符
[^] 除了 [] 内任意单个字符
[[:alnum:]] 小写 a-z,大写 A-Z,数字 0-9 范围内任意单个字符
[[:alpha:]] 小写 a-z 和 大写 A-Z 范围内任意单个字符
[a-z][[:lower:]] 小写 a-z 范围内任意单个字符
[A-Z][[:upper:]] 大写 A-Z 范围内任意单个字符
[[:digit:]] 数字 0-9 范围内任意单个字符
[[:punct:]] 除空格和字母数字以外的任何可打印字符

次数匹配

符号 匹配内容
* 匹配前一个字符任意次,>=0 次
\? 匹配前一个字符 0 或 1 次
\+ 匹配前一个字符大于等于 1 次
\{\} \{m\} 匹配前一个字符 m 次,\{m,n\} 匹配前一个字符 m 到 n 次,
\{m,\} 匹配前一个字符 >= m 次,\{0,n\} 匹配前一个字符 <= n 次

位置锚定

符号 匹配内容
^ 行首定位符
$ 行尾定位符
^$ 空白行
\<char 起始字界符,或使用 \bchar
char\> 结束字界符,或使用 char\b

分组

符号 匹配内容
\(\) 匹配 \(\) 连续字符串,而不是单个字符
\| 或者,匹配 \| 左侧或右侧字符串

egrep

egrep 使用扩展正则表达式,相当于 grep -E,用法基本与 grep 相同,只是某些符号不需要转义。

次数匹配

符号 匹配内容
? 匹配前一个字符 0 或 1 次
+ 匹配前一个字符大于 1 次
{} {m} 匹配前一个字符 m 次,{m,n} 匹配前一个字符 m 到 n 次,
{m,} 匹配前一个字符 >= m 次,{0,n} 匹配前一个字符 <= n 次

分组

符号 匹配内容
() 匹配 () 连续字符串,而不是单个字符
| 或者,匹配 | 左侧或右侧字符串

fgrep

fgrep 将查找内容视为固定字符串,相当于 grep -F。


vim

vim 基础部分

查找替换

查找替换均在 EX 模式下执行

:%s/OLDCHAR/NEWCHAR/ig
  • : 进入 EX 模式
  • %s 处理中文档的每一行,及整个文档,% 可以改为需要替换行的行号
  • OLDCHAR 替换前的字符串
  • NEWCHAR 替换后的字符串
  • i 忽略大小写
  • g 替换每一行找到的所有字符,默认指替换第一个字符

寄存器

类型 作用
未命名寄存器 "" 默认寄存器,最后一次操作的内容,文本来源命令:d/c/s/x/y
10 个数字命名寄存器 "0 - "9 0 缓存最近一次复制的内容,1-9 缓存最近 9 次删除的内容
1 个行内删除缓存寄存器 "- 缓存行内删除的文本
26 个字母命名寄存器 "a - "z / "A - "Z 完全由用户指定内容的寄存器
4个只读寄存器 ". "% "# ": 缓存最近插入文本、当前文件名、当前交替文件名、上次执行 ex 命令
表达式寄存器 "= 使用 VIM 强大的表达式功能
选择及拖拽寄存器 "* "+ "~ 存取 GUI 选择文本,系统剪切板(clipboard)可用时与外部应用交互,"* "+ "~ 分别为鼠标选中区域,系统剪切板,被拖拽的文本
黑洞寄存器 "_ 类似Linux中的/dev/null文件,只进不出,可用来滤掉影响默认寄存器的内容
最后搜索寄存器 "/ 缓存使用过的最后的搜索内容

计划任务

at 一次性计划任务

命令 作用
atq at -l 查看任务
at -c 查看任务执行的命令
atrm at -r at -d 删除任务
at -f 从文件读取任务而不是标准输入
at -q 指定任务队列,范围 a-z,默认是
at -m 任务完成后发送邮件
at -M 不发送邮件
at now+1min
at> echo a minute passed
at> <EOT>      #ctrl+d 

时间格式:/usr/share/doc/at-3.1.13/timespec * MINUTE HOUR * NOON MIDNIGHT TEATIME * AM PM * NOW * NEXT * TODAY TOMORROW * MINUTE HOUR DAY WEEK MONTH YEAR

cron 周期性计划任务

命令 作用
crontab -l 列出当前用户计划任务
crontab -r 删除当前用户所有计划任务
crontab -e 编辑当前用户计划任务
crontab -u 为其他用户创建任务(仅 root)
crontab <filename> 删除所有任务,从 <filename> 文件读取任务,未指定文件从 stdin 读取

任务格式 分 时 日 月 周 COMMAND

  • * 表示始终/无关紧要
  • 数字指定分钟数,小时数,日期,工作日等(0 表示周日,1 表示周一... ...,7 也表示周日)
  • 可以用三个字母表示月份或工作日
  • x-y 表示范围,从 xy(含)
  • x,y 表示列表,xy 为列表中单个元素
  • */x 表示时间间隔为 x
  • 命令中未转义的 % 会被作为新行处理

systemd-tmpfile

/etc/tmpfiles.d/*.conf        #管理员可修改的配置文件
/usr/lib/tmpfiles.d/*.conf    #rpm软件安装的时候,自动更新的配置文件,不能更改
/run/tmpfiles.d/*.conf        #daemon应用程序自己管理的配置文件

配置文件格式

类型 路径 权限 用户(UID) 组(GID) 期限 参数

创建文件或目录并设置相应的 属主/属组、权限。

systemd-tmpfiles --create

清理所有过期的文件与目录。

systemd-tmpfiles --clean

删除 D, R 标记的目录中的内容,以及 r, R 标记的目录与文件自身。

systemd-tmpfiles --remove

中文参考手册: http://www.jinbuguo.com/systemd/tmpfiles.d.html