数据流重定向和vim的基本使用

来源:互联网 发布:止汗露哪个牌子好 知乎 编辑:程序博客网 时间:2024/06/14 05:46

**

1.管理输入输出

**
前言:管理数据输入输出就是数据流重定向,由字面意思来看,好像就是将数据传导到其他地方去的样子?数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他的地方,例如文件或者是设备(例如打印机之类的)。这玩意在linux的文本模式下面可重要的,尤其是如果我们想要将某些数据保存下来时,就更有用了。

1.1定义
标准输出:命令执行所回传的正确的信息;
标准错误输出:命令执行失败后,所回传的错误信息。

标准输入(stdin):代码为0;<覆盖输入;<<追加输入
标准输出(stdout):代码为1;>覆盖输出;>>追加输出
标准错误输出(stderr):代码为2;2>覆盖错误输出;2>>追加错误输出
所有输出:&>覆盖所有输出;&>>追加错误输出;

1.2 实验(在系统中用普通用户执行: “student”)

—–1.2.1

find /etc -name passwd 

因为student用户权限问题会有以下输出;包括正确输出因权限不够的错误输出。
这里写图片描述

—–1.2.2 重定向正确输出

find /etc -name passwd > file       ##重定向正确输出;

这个时候屏幕上会出现所有的错误输出,而正确输出被保存在了当前目录下的file文件里,我们可以使用cat命令显示file文件中的内容。
这里写图片描述

—–1.2.3重定向错误输出

find /etc -name passwd 2> file      ##重定向错误输出

这个时候我们用的是2>,这个是覆盖错误输出,他会将错误输出保存到file文件中,并且删除file文件中原本的内容;其余正确的输出到屏幕上。

这里写图片描述

—–1.2.4 重定向所有输出

find /etc -name passwd &> file      ##重定向所有输出

这个时候将不会输出任何东西,所有的输出都被保存到file文件中,并且删除了file文件中原有的内容。

这里写图片描述

注意:
1.>, 2> ,&> 都会覆盖源文件内容
2. >file ##清空file

—–1.2.5 追加正确输出

find /etc -name passwd >> file      ##追加正确输出

先使用’>file’命令将file文件清空。然后使用’echo hello >file’命令将hello保存到file文件中,后来使用’cat file’命令显示此时file文件中的内容。再后来执行’find /etc -name passwd >>file’命令,将正确输出追加到file文件中,此时错误输出会输出到屏幕上;最后查看file文件内容,此时file文件的内容包括开始写入的hello和后来的命令的正确输出。
这里写图片描述

—–1.2.6 追加错误输出

find /etc -name passwd 2>> file     ##追加错误输出

前几步操作同上一例,后面‘find /etc -name passwd 2>> file ’命令是将错误输出追加到file文件中,正确输出会输出到屏幕上来,此时’cat file ‘查看文件file的内容,会发现错误输出追加到了原有内容’hello’的后面

这里写图片描述

—–1.2.7 追加所有输出

find /etc -name passwd &>> file     ##追加所有输出

做法同上一例,‘find /etc -name passwd &>> file ’命令是将所有输出追加到file文件的内容中,所以屏幕上部会输出任何内容,后面的‘cat file’显示出来的内容包括file文件原有内容‘hello’和上一条命令的所有输出。

这里写图片描述

注意:>> 2>> &>> 不会覆盖源文件内容,会把相应的输出字符方到文件的最后

—–1.2.8管道
| 管道,管道的作用是将前一条命令的输出变成管道后命令的输入

ls /bin | wc -l ##统计ls /bin 命令输出的行数

这里写图片描述

系统中错误的输出是无法通过管道的。
用 2>&1 可以把错误的输出编号由2变成1

第一个例子表明只有正确输出通过管道被‘wc -l’命令捕捉,错误输出未通过管道然后显示在了屏幕上。
第二个例子使用’2>&1’将错误编号由2变成1,从而都可以通过管道被’wc -l ‘命令捕捉统计,显示15
这里写图片描述

同样是上一例,我们如果想既将‘find /etc -name passwd’命令的输出保存在file文件里,又想统计全部输出行数,我们可以执行以下命令:

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

先讲错误输出转换称正确输出,保证全部内容可以通过管道,然后用tee命令将输出内容保存一份到file文件中,留一份传送到下一管道,用’wc -l ’命令统计行数。

这里写图片描述

tee 复制输出到指定位置
date |tee file |wc -l ###tee命令复制date命令的输出到file中,并统计输出行数

这里写图片描述

**

2.vim

**

2.1.vim 命令模式

在vim异常退出
在vim一场退出时,系统中会在所编辑的文件目录中生成.file.swp
vim再次编辑此文件时会出现相应提示
按 “o” open
按 “e” edit
按 “r” recover
按 “d” delete .swap file
按 “q” quit

在vim的命令模式下可以配置vim的工作方式
:set nu ##行号添加
:set nonu ##取消行号
:set mouse=a ##添加鼠标选择
:set cursorline ##行线显示

以上设定都是临时的,
永久设定方式
vim /etc/vimrc ###此文件为vim的配置文件,在此文件最后加入以上参数,加到文件中的才数不需要:

2.2vim命令模式下关键字搜索

/关键字
n向下匹配
N向上匹配

2.3.vim命令模式下字符的管理

1.字符的复制
yl ##复制一个字母
y3l ##复制3个字母
yw ##复制一个单词
y3w ##复制3个单词
yy ##复制一行
y3y ##复制3行
p ##复制完成后按“P”粘贴

2.字符的删除
dl ##删除一个字母
d3l ##删除3个字母
dw ##删除一个单词
d3w ##删除3个单词
dd ##删除一行
d3d ##删除3行

3.字符的剪切
cl ##剪切一个字母
c3l ##剪切3个字母
cw ##剪切一个单词
c3w ##剪切3个单词
cc ##剪切一行
c3c ##剪切3行
esc —> p ##剪切过后会进入到插入模式,在执行粘贴动作时一定要退出插入模式

以上命令需自己在vim下勤加练习。在此就不多加举例说明了。

2.4.vim的可视化模式

在命令模式下按“ctrl+v”进入到可视模式
在可视模式下可以区域选择字符

可视模式下批量添加字符
*>> ctrl+v 选中要加入字符所在列
*>> 按“I”进入插入模式,写入要加入的字符
*>> 按esc

2.5.批量修改字符

:%s/原有字符/替换后字符 ##只替换每一行中出现的第一个原有字符
:%s/原有字符/替换后字符/g ##替换所有
:1,5s/原有字符/替换后字符/g ##替换1-5行

2.6.vim的分屏功能

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

2.7.vim光标移动

在命令模式下
:数字 ##移动到指定的行
G ##文件最后一行
gg ##文件第一行

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

2.8.vim的退出模式

:q ##当用vim打开文件但没有对字符作任何操作时可直接退出
:q! ##当用vim打开文件并对字符作操作,放弃所有操作退出
:wq ##保存退出
:wq! ##强行保存退出,对超级用户及文件所有人生效

2.9.vim手册

vimtutor ##vim的手册
:q ##退出vimtutor

3.gedit

ctrl+n ##在gedit中打开一个新的tab
ctrl+s ##保存文件
ctrl+o ##打开文件
ctrl+x ##剪切字符
ctrl+v ##粘贴字符
ctrl+c ##复制字符
yelp help:gedit ##gedit的图形手册

end

这里写图片描述

原创粉丝点击