学习运维——输入输出重定向、vim

来源:互联网 发布:怎么去兼职做美工外包 编辑:程序博客网 时间:2024/05/29 09:41

第四单元

 

1.linux当中有三种标准输入输出stdin,stdout,stderr对应的编号为0,1,2;0就是从键盘上读取信息,1就是标准输出,默认到终端(显示屏);2就是标准错误信息输出,默认也是到终端(显示屏)。


举例:(普通用户)find /etc/ -name passwd

有访问成功的,也有没有访问成功的,默认他们都输出到了屏幕上。

 

那么如何让他们输出到另一个地方,这也就是下面要说的输出重定向。

1)find /etc/ -name passwd >file

[kiosk@foundation90 Desktop]$ find /etc/ -name passwd >file

find: ‘/etc/pki/CA/private’: Permission denied

find: ‘/etc/pki/rsyslog’: Permission denied

find: ‘/etc/dhcp’: Permission denied

find: ‘/etc/lvm/archive’: Permission denied

find: ‘/etc/lvm/backup’: Permission denied

find: ‘/etc/lvm/cache’: Permission denied

find: ‘/etc/selinux/targeted/modules/active’: Permission denied

find: ‘/etc/polkit-1/rules.d’: Permission denied

find: ‘/etc/polkit-1/localauthority’: Permission denied

find: ‘/etc/audit’: Permission denied

find: ‘/etc/firewalld’: Permission denied

find: ‘/etc/grub.d’: Permission denied

find: ‘/etc/ipsec.d’: Permission denied

find: ‘/etc/libvirt’: Permission denied

find: ‘/etc/audisp’: Permission denied

find: ‘/etc/virt-who.d’: Permission denied

find: ‘/etc/sudoers.d’: Permission denied

把正确的输出到了file里,把错误的输出到了屏幕上(输出到屏幕上是默认的)

2)find /etc/ -name passwd 2>file

[kiosk@foundation90 Desktop]$ find /etc/ -name passwd 2>file

/etc/passwd

/etc/pam.d/passwd

把错误的输出到了file里,把正确的输出到了屏幕上(输出到屏幕上是默认的)

3)find /etc/ -name passwd &>file

[kiosk@foundation90 Desktop]$ find /etc/ -name passwd &>file

把所有的信息都输出到了file里,屏幕上没有任何显示

 

如何清空file里的内容: >file

[kiosk@foundation90 Desktop]$ >file

把出错的信息丢掉: >/dev/null

[kiosk@foundation90 Desktop]$ find /etc/ -name passwd 2>/dev/null

/etc/passwd

/etc/pam.d/passwd

 

现在有一个问题:>,2>,&>每次重定向都会覆盖掉先前的输出,我们如果现在需要先前的输出,让新的输出追加到后面:

1)>>

[kiosk@foundation90 Desktop]$ find /etc/ -name passwd >>file

find: ‘/etc/pki/CA/private’: Permission denied

find: ‘/etc/pki/rsyslog’: Permission denied

find: ‘/etc/dhcp’: Permission denied

find: ‘/etc/lvm/archive’: Permission denied

find: ‘/etc/lvm/backup’: Permission denied

find: ‘/etc/lvm/cache’: Permission denied

find: ‘/etc/selinux/targeted/modules/active’: Permission denied

find: ‘/etc/polkit-1/rules.d’: Permission denied

find: ‘/etc/polkit-1/localauthority’: Permission denied

find: ‘/etc/audit’: Permission denied

find: ‘/etc/firewalld’: Permission denied

find: ‘/etc/grub.d’: Permission denied

find: ‘/etc/ipsec.d’: Permission denied

find: ‘/etc/libvirt’: Permission denied

find: ‘/etc/audisp’: Permission denied

find: ‘/etc/virt-who.d’: Permission denied

find: ‘/etc/sudoers.d’: Permission denied

[kiosk@foundation90 Desktop]$ cat file

/etc/passwd

/etc/pam.d/passwd

2)2>>

[kiosk@foundation90 Desktop]$ find /etc/ -name passwd 2>>file

/etc/passwd

/etc/pam.d/passwd

[kiosk@foundation90 Desktop]$ cat file

/etc/passwd

/etc/pam.d/passwd

find: ‘/etc/pki/CA/private’: Permission denied

find: ‘/etc/pki/rsyslog’: Permission denied

find: ‘/etc/dhcp’: Permission denied

find: ‘/etc/lvm/archive’: Permission denied

find: ‘/etc/lvm/backup’: Permission denied

find: ‘/etc/lvm/cache’: Permission denied

find: ‘/etc/selinux/targeted/modules/active’: Permission denied

find: ‘/etc/polkit-1/rules.d’: Permission denied

find: ‘/etc/polkit-1/localauthority’: Permission denied

find: ‘/etc/audit’: Permission denied

find: ‘/etc/firewalld’: Permission denied

find: ‘/etc/grub.d’: Permission denied

find: ‘/etc/ipsec.d’: Permission denied

find: ‘/etc/libvirt’: Permission denied

find: ‘/etc/audisp’: Permission denied

find: ‘/etc/virt-who.d’: Permission denied

find: ‘/etc/sudoers.d’: Permission denied

3)&>>

[kiosk@foundation90 Desktop]$ find /etc/ -name passwd &>>file

[kiosk@foundation90 Desktop]$ cat file

/etc/passwd

/etc/pam.d/passwd

find: ‘/etc/pki/CA/private’: Permission denied

find: ‘/etc/pki/rsyslog’: Permission denied

find: ‘/etc/dhcp’: Permission denied

find: ‘/etc/lvm/archive’: Permission denied

find: ‘/etc/lvm/backup’: Permission denied

find: ‘/etc/lvm/cache’: Permission denied

find: ‘/etc/selinux/targeted/modules/active’: Permission denied

find: ‘/etc/polkit-1/rules.d’: Permission denied

find: ‘/etc/polkit-1/localauthority’: Permission denied

find: ‘/etc/audit’: Permission denied

find: ‘/etc/firewalld’: Permission denied

find: ‘/etc/grub.d’: Permission denied

find: ‘/etc/ipsec.d’: Permission denied

find: ‘/etc/libvirt’: Permission denied

find: ‘/etc/audisp’: Permission denied

find: ‘/etc/virt-who.d’: Permission denied

find: ‘/etc/sudoers.d’: Permission denied

find: ‘/etc/pki/CA/private’: Permission denied

find: ‘/etc/pki/rsyslog’: Permission denied

find: ‘/etc/dhcp’: Permission denied

find: ‘/etc/lvm/archive’: Permission denied

find: ‘/etc/lvm/backup’: Permission denied

find: ‘/etc/lvm/cache’: Permission denied

find: ‘/etc/selinux/targeted/modules/active’: Permission denied

/etc/passwd

find: ‘/etc/polkit-1/rules.d’: Permission denied

find: ‘/etc/polkit-1/localauthority’: Permission denied

find: ‘/etc/audit’: Permission denied

/etc/pam.d/passwd

find: ‘/etc/firewalld’: Permission denied

find: ‘/etc/grub.d’: Permission denied

find: ‘/etc/ipsec.d’: Permission denied

find: ‘/etc/libvirt’: Permission denied

find: ‘/etc/audisp’: Permission denied

find: ‘/etc/virt-who.d’: Permission denied

find: ‘/etc/sudoers.d’: Permission denied

 

 

3.管道符 |

前面命令的输出作为后面命令的输入

[kiosk@foundation90 Desktop]$ ls -a /bin/ | wc -l

1905

前面的输出是所有的文件名,wc来统计/bin/里总共有多少文件,前面输出的所有文件名是他的输入

 

/bin/下的所有文件名复制到文件file里,并统计文件总数

[kiosk@foundation90 Desktop]$ ls -a /bin/ | tee file | wc -l

1905

 

tee:复制前面的输出

 

找出/etc/下名字为passwd的文件,并统计正确输出的个数

[kiosk@foundation90 Desktop]$ find /etc/ -name passwd | wc -l

find: ‘/etc/pki/CA/private’: Permission denied

find: ‘/etc/pki/rsyslog’: Permission denied

find: ‘/etc/dhcp’: Permission denied

find: ‘/etc/lvm/archive’: Permission denied

find: ‘/etc/lvm/backup’: Permission denied

find: ‘/etc/lvm/cache’: Permission denied

find: ‘/etc/selinux/targeted/modules/active’: Permission denied

find: ‘/etc/polkit-1/rules.d’: Permission denied

find: ‘/etc/polkit-1/localauthority’: Permission denied

find: ‘/etc/audit’: Permission denied

find: ‘/etc/firewalld’: Permission denied

find: ‘/etc/grub.d’: Permission denied

find: ‘/etc/ipsec.d’: Permission denied

find: ‘/etc/libvirt’: Permission denied

find: ‘/etc/audisp’: Permission denied

find: ‘/etc/virt-who.d’: Permission denied

find: ‘/etc/sudoers.d’: Permission denied

2

为什么前面还有错误信息的输出?本来就是默认输出到屏幕上的,这也说明了管道只能给编号为1(正确的)的输出 放行,后面的2就是统计出名字为passwd的文件有2个

 

2>&1:把错误输出(2)伪装成正确输出(1),就可以通过管道

[kiosk@foundation90 Desktop]$ find /etc/ -name passwd 2>&1| wc -l

19

 

4. vim

vim的三种模式:

1)命令模式

2)插入模式

3)可视化模式

 

1)命令模式:在此模式下,可以设置编辑器的状态,例如显示或取消行号,显示或取消鼠标所在行的下划线,添加或取消鼠标选择,分屏显示等等。

显示行号: :set nu


取消行号: :set nonu

显示下划线: :set cursorline


取消下划线: :set nocursorline

上面第二幅图的样子,就没有下划线

以上的设置都是在本次用vim打开的有效,下次再用vim就恢复原样,若想以后用vim都是刚设置的就要用另一种办法:修改vim的配置文件,在文件的末尾加上想要的设置:例如“:set nu”

 

另外在命令模式下还可以进行关键字的搜索:

命令模式下,输入“/”,后面加上要搜索的,例如:/f


如图搜索出来的关键字会以高亮显示,如何上下匹配:

n:向下匹配

N:向上匹配

 

除此之外,命令模式下还可以对文件内容进行修改:

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 ##剪切过后会进入到插入模式,在执行粘贴动作时一定要退出插入模式

 

在命令模式下

:数字 ##移动到指定的行

G ##文件最后一行

gg ##文件第一行

 

命令模式下Ctrl+r redo恢复操作

 

Crtl + w 放开按下

 v 上下分屏

 s 左右分屏

 c 取消分屏

上下左右 ###光标移动到指定屏幕

 

 

 

 

2)插入模式:进行文件内容的修改

 

3)可视化模式:批量修改文件内容

 

:%s/原有字符/替换后字符 ##只替换每一行中出现的第一个原有字符

:%s/原有字符/替换后字符/g ##替换所有

:%s/\t//g ##把全文的tab键替去掉,\t 表示tab键

:%s/^\ *//g ##把全文行首的空格去掉,"^\ *"表示行首的空格

:%s/^\#\ */#/g ##把全文#后的空格去掉

 

练习:把文件中的f换成空格  %s/f/\ /g

换之前


换之后

 

批量添加文件内容:

*>> ctrl+v 选中要加入字符所在列

*>> 按“I”进入插入模式,写入要加入的字符

*>> 按esc


 

5.三种模式如何切换:

插入模式、可视化模式->命令模式:按Esc

命令模式到插入模式:

在命令模式下按下以下的键,会进入到插入模式

i ##光标所在位置插入

I ##光标所在行行首

a ##光标所在字符的下一个位置

A ##光标所在行行尾

o ##光标所在行下一行

O ##光标所在行上一行

s ##删除光标所在字符插入

S ##删除光标所在行插入

命令模式到可视化模式:Ctrl + v

可视化模式到插入模式:在进行批量修改文件时按下I会进入插入模式

 

6.如何退出vim:

:q ##当用vim打开文件但没有对字符作任何操作时可直接退出

:q! ##当用vim打开文件并对字符作操作,放弃所有操作退出

:wq ##保存退出

:wq! ##强行保存退出,对超级用户及文件所有人生效

 

7.vim手册

vimtutor ##vim的手册

:q ##退出vimtutor

 

8.gedit

ctrl+n ##在gedit中打开一个新的tab

ctrl+s ##保存文件

ctrl+o ##打开文件

ctrl+x ##剪切字符

ctrl+v ##粘贴字符

ctrl+c ##复制字符

yelp help:gedit ##gedit的图形手册

 

0 0