学习运维——输入输出重定向、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的图形手册
- 学习运维——输入输出重定向、vim
- shell脚本学习11——输入输出重定向
- Python学习:输入输出重定向
- vim编辑器,管道,输入输出重定向
- Shell学习之:输入输出重定向
- Shell 学习23 - Shell 输入输出重定向
- Linux学习之输入输出重定向
- 【学习Linux】输入输出的重定向,管道
- Linux学习笔记之输入输出重定向
- freopen()——重定向标准输入输出流
- Linux笔记(14)——输入输出重定向
- 输入输出重定向
- Linux输入输出重定向
- 输入输出重定向
- 输入输出重定向
- Linux输入输出重定向
- createprocess 输入输出重定向
- linux输入输出重定向
- TQ2440开发板学习纪实(10)--- 实现多任务处理,最简单OS模型
- 171. Excel Sheet Column Number
- Spark DataSet介绍
- IntelliJ IDEA中开启断言的方法
- java 浮点类型精度不准的问题(待测试)
- 学习运维——输入输出重定向、vim
- 基础11
- LeetCode 156. Binary Tree Upside Down
- 学习运维——用户、用户组、用户权利下放
- 【JZOJ 4939】平均值
- 涉及JSP页面请求、响应、切换和数据传递的5个内置对象
- 放下 2017
- 莫队(三)核心代码实现
- Leetcode Decode String