系统输入输出的管理,管道的应用以及vim的常用功能

系统中输入输出的管理
1.理解系统的输入输出
文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket。
最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应。
Shell会自动为我们打开和关闭0、1、2这三个文件描述符,我们不需要显式地打开或关闭它们。标准输入是命令的输入,默认指向键盘;标准输出是命令的输出,默认指向屏幕;标准错误是命令错误信息的输出,默认指向屏幕。
简单来说0表示我们输入的信息,1表示输出的正确结果,2表示输出的错误结果。

2.管理输入输出的符号
##输出重定向

用>定向正确输出
2> ##重定向错误输出
&> ##重定向所有输出
注意:
重定向会覆盖原文件内容

示例:
注意:以下实验必须在student用户下完成

find /etc/ -name passwd > file ##定向正确输出到file
find /etc/ -name passwd 2> file.err ##定向错误输出到file
find /etc/ -name passwd &> file.all ##定向所有输出到file
file ##清空file

find /etc/ -name passwd 

查找/etc下名为passwd的文件并显示出来
该目录下有许多名为passwd的文件,但正确的只有两个(以find开头的文件全部为错误文件)
在这里插入图片描述

find /etc/ -name passwd  > file

定向正确输出到文件file中

可以看到两条正确的命令不见了(实际是这两条命令被定向到文件file中)在这里插入图片描述

find /etc/ -name passwd  2> file1

定向错误输出到文件file1中
可以看到,运行该命令后只有正确的文件被显示,错误的文件都被定向到(保存到)文件file1中
在这里插入图片描述

find /etc/ -name passwd  &> file2

定向所有输出到file2,在运行该命令后,并没有文件显示,使用cat命令查看file2,发现所有的文件都被保存在file2中。在这里插入图片描述
重定向覆盖原文件
重定向会覆盖原文件,从图中可以看到,原本file中只有两条正确的文件,而在使用定向含有passwd的文件全部到file时,再次查看文件file,可以发现文件file的内容被替换为所有含有passwd的文件。在这里插入图片描述
##输出追加

    >> 				##追加正确输出到文件最后

2>> ##追加错误输出到文件最后
&>> ##追加所有输出到文件最后

示例:

find /etc/ -name passwd >> file ##追加正确输出到file
find /etc/ -name passwd 2>> file.err ##追加错误输出到file
find /etc/ -name passwd &>> file.all ##追加所有输出到file

find /etc/ -name passwd  >> file

追加正确输出到文件file中
第一张图可以看到文件file中只存在两个正确的文件,在运行该命令后,从图二再次查看file的结果来看,file中多出了两个正确的passwd文件,之前的正确文件也没有被覆盖。
在这里插入图片描述在这里插入图片描述

find /etc/ -name passwd  2>>file

追加错误文件到文件file中
通过该命令可以看到,正确的结果显示在屏幕,二错误结果则会被追加到文件file中。
在这里插入图片描述

find /etc/ -name passwd  &>>file

追加所有含有passwd的文件到文件file中,file文件本来只有正确的两个文件,在运行该命令后又把所有含有passwd的文件加到文件file中,再次查看文件file,发现它会多出很多的命令。
在这里插入图片描述
在这里插入图片描述
管道的应用
1.管道的作用
“|” 管道的作用是把前一条命令的输出变成后一条命令的输入

注意:
管道只允许正确输出通过
通过管道的输入将会变成输入,而变成输入的这些输出是会被第二条命令处理的
如果需要保存输出内容,那么需要复制一份输出,用到的命令是“tee”

此实验在普通用户下操作:
find /etc/ -name passwd | wc -l ##会看到的结果为2,因为错误输出不能通过管道
find /etc -name passwd 2>&1|wc -l ##会看到19,因为编号为2的输出被“2>&1”转换为编号1
find /etc -name passwd 2>&1|tee file |wc -l ##保存一份输出到file再统计行数

find /etc/ -name passwd | wc -l

因为管道符只允许正确的结果输出,所以通过管道的文件只有两行,所以结果为2,错误的结果则被输出到屏幕.
在这里插入图片描述

find /etc -name	passwd 2>&1|wc -l

因为所有的错误文件都被定向为正确,所以没有错误输出,全部都为正确输出,所以统计的行数为19,屏幕无输出。
在这里插入图片描述

find /etc -name	passwd 2>&1|tee file |wc -l	

管道符输出的结果可以用”tee“来保存到文件中,所有错误输出被定向为正确,所以统计的行数为19,无错误输出。
在这里插入图片描述

find /etc -name	passwd 2>&1|wc -l |wc -l	

为什么最后的输出是1呢?因为第一个统计行数的命令统计完毕后的结果为”19“,而”19“会被当作输入再次进入管道,第二次统计的行数实则是"19"的行数,所以输出结果为1.
在这里插入图片描述
vim的常用功能
1.vim的模式
命令模式
浏览文件,临时更改vim的工作方式,对字符批量处理

插入模式
	对文件内容进行编辑

退出模式
	退出vim程序

###命令模式###
1)
调整vim的工作方式
在vim程序中
:set 调整参数
示例:
:set nu ##在每一行前显示行号
:set nonu ##取消行号显示
:set mouse=a ##显示鼠标
:set cursorline ##显示行线
注意:
在vim程序中设定的vim工作方式是临时的,在vim关闭后会还源
如果要永久保存vim的工作方式需要编辑vim的配置文件:/etc/vimrc

vim /etc/vimrc

:set nu显示行号
在这里插入图片描述
:set nonu取消行号显示
在这里插入图片描述

  1. 字符的搜索
    /关键字
    n向下匹配
    N向上匹配

见上一篇linux文件管理命令中查看文件模块。

  1. 字符的管理
    y
    yl ##复制一个字母
    y3l ##复制3个字母
    yw ##复制一个单词
    y3w ##复制3个单词
    yy ##复制1行
    y3y ##复制3行
    复制“llllllllllello”在这里插入图片描述
    复制字母“o”在这里插入图片描述
    复制一行在这里插入图片描述
    d
    dl ##删除一个字母
    d3l ##删除3个字母
    dw ##删除1个单词
    d3w ##删除3个单词
    dd ##删除1行
    d3d ##删除3行
    按字母删除在这里插入图片描述
    按行删除在这里插入图片描述
    c
    cl ##剪切1个字母
    c3l ##剪切3个字母
    cw ##剪切1个单词
    c3w ##剪切3个单词
    cc ##剪切1行
    c3c ##剪切3行
    “注意:在剪切之后vim会进入插入模式,如果要粘贴需要按【esc】退出插入模式然后按p粘贴”

    p ##粘贴
    u ##撤销
    ctrl+r ##恢复撤销
    在剪切后,文件会进入insert模式,先按“esc”退出insert模式,然后按p粘贴。在这里插入图片描述
    在这里插入图片描述

  2. vim可视化模式
    ctrl + v ##在这个模式下可以选择区域操作
    批量添加字符
    ctrl + v 选中要加入字符所在的列
    按大写的I
    加入字符
    按【esc】在这里插入图片描述

  3. 字符的替换
    :%s/要替换的字符/替换成的字符/g
    :%s/: /@/g ##替换全文的:为@
    :1,5s/: /@/g ##替换1-5行的:为@
    注意:
    %s标示所有的行
    g标示所有的列

    :%s/ll/mm/g ##替换全文的ll为mm在这里插入图片描述在这里插入图片描述
    :1,5s/mm/ll/g 替换1-5行的ll为mm
    替换前的图
    在这里插入图片描述
    替换后的图在这里插入图片描述

6)
vim 的分屏功能
ctrl+w s ##上下分屏
ctrl+w v ##左右分屏
ctrl+w c ##关闭光标所在屏幕
ctrl+w 上下左右 ##光标移动到指定屏幕
:sp file2 ##同时编辑当前文件和file2

	使用ctrl+w s与ctrl+w v之后的界面如下所示

在这里插入图片描述
用ctrl+w移动光标,然后用ctrl+w c来关闭光标所在的屏幕。在这里插入图片描述
7)
在命令模式下光标的移动
gg 光标移动到文件的第一行
G 光标移动到文件的最后
:数字 ##光标移动到到指定的行

#####插入模式######
1)
插入模式下光标的移动
i ##光标所在位置插入
I ##光标所在行行首插入
o ##光标所在行下一行插入
O ##光标所在行的上一行插入
a ##光标所在字符的下一个字符插入
A ##光标所在行的行尾插入
s ##光标所在字符删除并插入
S ##光标所在行删除并插入

####vim的退出模式#####
:q ##退出,在文件内容没有被改变时使用
:wq ##退出保存
:q! ##强制退出不保存,在改变文件后不想保存时使用
:wq! ##强制退出保存 在对只读文件编写时使用,注意,所编辑的只读文件必须时当前用户的文件
##或者当前操作的用户时root
修改文件后按:q退出系统会报错,因为文件内容发生改变。在这里插入图片描述
修改文件后按:wq退出保存。在这里插入图片描述
修改文件后若不想保存退出,按:q!即可。在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值