[Linux] Vim编辑器 & Linux输入输出重定向

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

判断一个命令是否接受标准输入:最简单的方式就是将文件内容作为标准输入重定向给程序。

相关推荐
布说在见35 分钟前
Linux 服务器运维:磁盘管理与网络配置
linux·运维·服务器
my墨羽1 小时前
vscode latex 常用设置
ide·vscode·编辑器
孙克旭_3 小时前
day039-nginx配置补充
linux·运维·nginx
阙芸3 小时前
深入理解“回调地狱“(Callback Hell)
linux·运维·ubuntu
来一杯龙舌兰11 小时前
【Kubernetes】从零搭建K8s集群:虚拟机环境配置全指南(DNS/网络/防火墙/SELinux全解析一站式配置图文教程)
linux·网络·kubernetes
A.A呐12 小时前
【Linux第四章】gcc、makefile、git、GDB
linux·c语言·开发语言·c++·git
A-花开堪折13 小时前
01-驱动开发开篇
linux·嵌入式硬件
程序员JerrySUN15 小时前
Linux 内核同步管理全解:原理 + 实战 + 考点
linux·运维·服务器
大神的风范16 小时前
从0开始学linux韦东山教程Linux驱动入门实验班(1)
linux