[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

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

相关推荐
博语小屋11 分钟前
进程初识之进程状态
linux
吉凶以情迁1 小时前
window服务相关问题探索 go语言服务开发探索调试
linux·服务器·开发语言·网络·golang
柏木乃一2 小时前
Linux初步认识与指令与权限
linux·运维·服务器·shell·权限
Joemt2 小时前
ubuntu源码编译安装cmake高版本、pybind11安装、crow使用
linux·运维·ubuntu
huohuopro3 小时前
在linux(ubuntu)服务器上安装NTQQ并使用
linux·ubuntu
Jooolin3 小时前
Ubuntu?Centos?还是 redhat?Linux 系统选哪个?
linux·ubuntu·ai编程
Sadsvit3 小时前
Linux 进程管理与计划任务
linux·服务器·网络
bigcarp4 小时前
linux + 宝塔面板 部署 django网站 启动方式:uwsgi 和gunicorn如何选择 ?
linux·运维·django
爱凤的小光4 小时前
图漾相机-ROS1_SDK_ubuntu 4.X.X版本编译
linux·数码相机·ubuntu