[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

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

相关推荐
m0_694845579 分钟前
服务器怎么跑Python项目?
linux·运维·服务器·python·云计算
Linux运维技术栈1 小时前
CentOS 7 升级系统内核级库 glibc 2.40 完整教程
linux·运维·centos·glibc·系统内核
刘延林.1 小时前
树莓派5-ollama-linux-arm64.tgz 下载
linux·运维·服务器
麟城Lincoln3 小时前
【Linux-云原生-笔记】Apache相关
linux·笔记·云原生·apache·webserver
ZZZKKKRTSAE3 小时前
玩转rhel9 Apache
linux·运维·服务器·apache·web
Z_zz_Z___3 小时前
DNS协议解析过程
linux·服务器·网络
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ3 小时前
Linux 下使用 vim 文本编辑器时的操作指令
linux·运维·vim
百锦再3 小时前
Rider 全面解析:跨平台 .NET IDE 的核心技术与高效实践指南
linux·ide·.net·sdk·core·rider
程序员JerrySUN4 小时前
一文理解缓存的本质:分层架构、原理对比与实战精粹
java·linux·开发语言·数据库·redis·缓存·架构
hryyx4 小时前
Linux磁盘限速(Ubuntu24实测)
linux·运维·服务器