系统的输入输出管理
vim
vim的三种模式:
1.命令模式;
2.插入模式;
3.退出模式
命令模式
1.调整vim的工作方式
在vim程序中设置":set "调整参数
:set nu //在每一行前显示行号
:set nonu //取消显示每一行前的行号
:set mouse=a //显示鼠标
:set cursorline //显示行线
注意:在vim程序中设定的工作方式只是临时的,在vim关闭之后会还原。如果需要永久保存vim的工作方式,需要编辑vim的配置文件:/etc/vimrc
2.字符的搜索
/关键字 //遍历搜素关键字
n //向下匹配
N //向上匹配
:noh //取消高亮显示
3.字符的管理
复制:y
yl //复制一个字母
y3l //复制三个字母
yw //复制一个单词
y3w //复制三个单词
yy //复制一行
y3y //复制三行
删除:d
dl //删除一个字母
d3l //删除三个字母
dw //删除一个单词
d3w //删除三个单词
dd //删除一行
d3d //删除三行
剪切:c
cl //剪切一个字母
c3l //剪切三个字母
cw //剪切一个单词
c3w //剪切三个单词
cc //剪切一行
c3c //剪切三行
粘贴:p
p //剪切之后vim会进入"插入模式",需要esc退出插入模式在按p进行粘贴
cc剪切文件:
剪切后会进入插入模式:
ESC退出插入模式:
按p粘贴:
最后u撤销,恢复原样:
撤销:Ctrl + r
4.vim可视化模式
Ctrl + v,然后↑↓←→选定操作区域:
y+p复制粘贴
批量字符管理:
Ctrl + v,然后↑↓←→选定操作列区域:
按“大写”I进入插入模式
键入要插入的字符
按ESC,完成:
5.字符的替换
:%s/要替换的字符/替换成的字符/g //替换全文的指定字符
:1,5s/要替换的字符/替换成的字符/g //替换1到5行的指定字符
:/head/,/tail/要替换的字符/替换成的字符/g //替换head与tail之间的指定字符
注意:%s标识表示所有行,g标识表示所有列。
执行后:
6.vim的分屏功能
Ctrl + w(同时按) 再按s:上下分屏
Ctrl + w(同时按) 再按v:左右分屏
Ctrl + w(同时按) 再按c:关闭光标所在的分屏
Ctrl + w(同时按) 再按↑↓←→:移动光标到相应位置的分屏
:sp file2 //在当前文件再分屏打开file2,同时进行操作
在命令模式下的光标的移动
命令 | 操作 |
---|---|
gg | 光标移动到文件的第一行 |
G | 光标移动到文件的最后一行 |
:数字 | 光标移动到相应行。 |
插入模式
插入模式的光标的移动
按键 | 插入位置 |
---|---|
i | 在光标所在位置插入 |
I | 在光标所在行的行首插入 |
o | 在光标所在行的下一行插入 |
O | 在光标所在行的上一行插入 |
a | 在光标所在行的下一个字符插入 |
A | 在光标所在行的行尾插入 |
s | 在光标所在的字符删除并插入 |
S | 在光标所在的行删除并插入 |
退出模式
:q //退出,在文件内容没有改变时使用
:wq //退出保存
:q! //强制退出不保存
:wq! //强制退出保存,对只读文件编写时使用,编写的文件必须是当前用户的文件/当前的操作的用户是root
系统中的输入输出的管理
管理输入输出的符号
输出重定向
输出重定向符号 | 含义 |
---|---|
> | 重定向正确输出 |
2> | 重定向错误输出 |
&> | 重定向所有输出 |
注意:重定向会覆盖原文件内容!
find /etc/ -name pass >file //定向正确输出到file
find /etc/ -name pass 2>file.err //定向正确输出到file.err
find /etc/ -name pass &>file.all //定向正确输出到file.err
输出追加
find /etc/ -name pass >>file //定向正确输出到file
find /etc/ -name pass 2>>file.err //定向正确输出到file.err
find /etc/ -name pass &>>file.all //定向正确输出到file.err
管道的应用
管道的作用:
"|“管道的作用是把前一条的命令的输出变成后一条命令的输入
注意:
管道只允许正确的输出通过
通过管道的输入将会变成输入,而变成输入的这些是会被第二条命令处理的。
如果保存输出内容,那么需要复制一份输出,用到的命令是"tee”
find /etc/ -name passwd | wc -l //错误的输出不能通过管道,所以结果为2
find /etc/ -name passwd 2>&1| wc -l //j将错误的输出编号从2转换为正确的编号1,所以结果为19
find /etc/ -name passwd 2>&1 | tee file | wc -l //先复制输出到指定文件file,再通过过管道输出
wc -l:为输出内容的行数的命令。
tee:复制到制定其后指定的文件,如果没指定文件名则复制到默认文件。
输入重定向
tr 'a-z' 'A-Z' <hello //将指定文件中的内容从小写转换为大写
tr 'A-Z' 'a-z' <hello //将指定文件中的内容从小写转换为大写
例:利用shell脚本格式化输入修改密码
hello.sh(.sh表示shell脚本文件)的内容: