前目录文件 test.sh test1.sh test1.sh实际不存在,将错误输出2 绑定给 正确输出 1,然后将 正确输出 发送给 /dev/null设备
ls test.sh test1.sh 2&>1 > /del/null 其中/del/null 为黑洞
vi编辑器:
:/word 从上而下在文件中查找字符串“word”
:?word 从下而上在文件中查找字符串“word”
n 定位下一个匹配的被查找字符串
N 定位上一个匹配的被查找字符串
:w 保存 :q 退出 :q! 强制退出 :wq 保存文件退出vi
:%s/old/new/g 在整个文件范围内替换所有的字符串“old”为“new”
:%s/old/new/gc 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
例:将 50 到 100 行之间的 man 改为 MAN ,并且一个一个挑选是否需要修改
0(而非O)移动到行首 $ 移动到该行之末 nG 移动到文件的第n行 G 移动到文件的最后行
dd 删除光标所在的行 ndd 删除包括光标所在行的n行文本 u 恢复刚才被修改的文本
例1:删除 11 到 30 行之间的 20 行
例2:选中所有空行,然后删除它们
:g/^\s*$/d
:g 代表在全文档范围内 :g/ 固定格式 \s*代表空白字符
Y 复制到当前行的编辑缓冲区 nY 复制当前行开始的n行至编辑缓冲区
p 将编辑缓冲区的内容粘贴到光标后的一行 P 将编辑缓冲区的内容粘贴到光标前的一行
例:复制 51 到 60 行这十行的内容,粘贴到最后一行之后;
: set nu 显示行号 :set nonu 不显示行号
通配符:
* 匹配任意多个字符 ? 匹配任意一个字符 [...] 匹配括号内出现的任意一个字符
[!...] 不匹配括号内出现的任意一个字符
正则表达式:(grep,awk,sed)
字符匹配 . 匹配任意单个字符 [] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[[:digit:]] 数字 [[:lower:]] [[:upper:]] [[:alpha:]] 字符 [[:alnum:]]字符或数字 [[:space:]] 空格
匹配次数 * 匹配前面的字符任意次
.* 任意长度任意字符
\? 匹配前面字符串0次或者1次,即可有可无(扩展)
\+ 匹配前面的字符至少1次(扩展)
\{m\} 匹配前面字符m次(扩展) \{m,n\}:匹配前面字符至少m,至多n次(扩展)
锚定 ^行首锚定 $行尾锚定 ^PATTERN$ 用于匹配整行 ^$ 空行
\< 词首锚定,用于单词模式的左侧 \> 词尾锚定,用于单词模式的右侧 \<PATTERN\>匹配整个单词
注:grep 后搜索内容加“”或'' 要求结果为行加 -n
\<PATTERN\>匹配整个单词 正则出现行首或行尾时大都需要锚定