Vim编辑器
Vim模式
-
command模式:该模式下键盘中的字母有特殊含义。如:G是跳转到最后一行;gg是跳转到第一行。
-
edit模式:在command模式下按i进入该模式。在该模式可以输入内容。在该模式下按esc返回command模式。
-
extended command模式:在command模式下按:,进入该模式。在该模式下,可以保存文件(:w),强制退出编辑(:q!),报错并退出(:wq)
-
visual edit模式:在command模式下按v(单个字符选中),V(整行选中)或ctrl+v(按矩形选中)进入该模式。在该模式下,用于选中文件,随后可以复制或删除选中的内容
命令行模式快捷键
定位文件内容:
-
单个字符移动,方向键↑↓←一→和键盘字母(h j k l)
-
w,向后1个word(word开头);b,向前1个word(word开头);
-
e,向后1个word(word结尾);
-
^,行首第一个字母;$,行尾最后一个字母;数字0,行首第一个字母。
-
(,上一个句子头部;),下一个句子尾部。
-
{,上一个段落头部;},下一个段落尾部。
-
gg,文章第一行;G,文章最后一行。
-
45G,跳转到45行。
插入模式:
-
i,当前位置插入。
-
1,行首插入。
-
a,当前位置追加。
-
A,行末追加。
-
o,向下新开一个空白行
-
O,向下新开一个空白行
**复制:**yy,复制1行,相当于y1y。以此类推y2y y2w y2b。
**粘贴:**p当前位置后粘贴;P当前位置前粘贴。
删除:
-
X,删除当前单个字符。5x,删除当前字符和后续4个字符。
-
dw,删除1个word,以此类推d5w d3b d2d d$
-
D,从当前删除到最后,相当于d$
回退:
-
u,回退一个操作。
-
U,回退当前行所有操作。
**前进:**ctrl+r,前进一个操作,与u相对。
修改,相当于删除后插入:
-
S,删除当前字符,并进入编辑模式。
-
S,删除当前行,并进入编辑模式。
-
c,代表替换动作,例如cw,删除1个word,并进入编辑模式。
-
C,从当前删除到最后,并进入编辑模式。
替换:
-
r,替换单个字符后回退到命令行模式。
-
R,替换模式,一直替换直到按EsC返回命令行模式。
扩展命令行模式
-
:1,10d,删除1到10行
-
:%s/10.5.5/10.1.8/g,将所有行中10.5.5替换为10.1.8
-
:5,$d,删除第5行到最后一行
-
:w /path/to/file另存为/path/to/file。
-
:! date,执行date命令。
查找
-
/string,查看string字符串
-
/STRING\c,忽略大小写查找string字符串
Linux输入输出重定向
输出重定向到文件

|通道名称|描述|默认链接|用法| |-|-|-|-| |stdin|标准输入|键盘|仅读取| |stdout|标准输出|终端|仅写入| |stderr|标准错误|终端|仅写入| |filename|其他文件|无|读取/写入|
输入/输出(I/O)重定向可更改进程获取其输入或输出的方式。进程可以执行文件读取或写入,而不从键盘获取输入,也不将输出和错误发送到终端。通过重定向,您可以将消息保存到文件,而不在终端上显示输出。
|用法|说明| |-|-| |> file|重定向stdout以覆盖文件| |>> file|重定向stdout以附加到文件| |2> file|重定向stderr以覆盖文件| |2> /dev/null|将stderr错误信息重定向到/dev/null,从而将它丢弃|
独立输出
查找/etc目录下文件名是passwd的所有文件
bash
find /etc -name 'passwd'

将找到的文件名覆盖写入passwd.list中
bash
find /etc -name 'passwd' 1>passwd.list
#1>passwd.list可以省略1写为passwd.list
#1和>之间不能有空格
cat passwd.list

将找到的文件名追加到passwd.list中
bash
find /etc -name 'passwd' >> passwd.list

将错误信息覆盖写入到passwd.err
bash
find /etc -name 'passwd' 2>passwd.err
#如果不用root用户会有权限不足的报错
将错误信息扔掉
bash
find /etc -name 'passwd' 2>dev/null
正确信息(标准输出)
-
位置 :直接显示在终端(标准输出,文件描述符
1
) -
内容 :
find
命令找到的匹配文件路径(如/etc/passwd
)
错误信息(标准错误)
-
位置 :被重定向丢弃(
2>/dev/null
表示丢弃所有错误) -
内容 :权限不足、目录不存在等错误(如
find: /etc/ssh: Permission denied
)
将错误信息和正确信息覆盖写入到相同文件
bash
find /etc -name 'passwd' > passwd.all 2>&1
将错误信息和正确信息追加写入到相同文件
bash
find /etc -name 'passwd' >> passwd.all 2>&1
输出重定向到程序
管道符(|)实现,将上一个命令的输出作为标准输入传递给下一个命令
例:获取ens33网卡ip地址
bash
ip a | grep 'ens160$' | awk '{print $2}'
#hostname -I 也可以取ip

管道符后的命令必须能够接受标准输入,才可以配合管道符使用。但是ls不接受管道传递的标准输入。
bash
echo /etc/passwd | xargs ls -l

tee命令
tee命令覆盖保存到文件
bash
find /etc -name 'passwd' 2>/dev/null | tee passwd.list
cat passwd.list

tee命令追加保存到文件
bash
find /etc -name 'passwd' 2>/dev/null | tee -a passwd.list
cat passwd.list

标准输入重定向给程序
cat命令标准输入数据
bash
cat /etc/hosts
cat < /etc/hosts
shell读取到EOF时,代表标准输入完成
bash
cat << EOF
> hello
> world
>EOF
判断一个命令是否接受标准输入:最简单的方式就是将文件内容作为标准输入重定向给程序。