这一节主要学习了重定向,管道和VIM编辑器
首先看看输出重定向
1 > 或者> 都表示将正确的信息覆盖输出重定向, 1>>或者>>表示追加的重定向
2 > 表示将错误的信息覆盖输出重定向, 2>>表示追加的错误信息重定向
&> 将所有的信息,正确或者错误都定向到一个文件,也可以使用 > aa 2>&1 或者 2>aa 1>&2的格式,不过很明显后者比较复杂
如下所示 第一次可以将正确的信息定向到aa,第二次错误的信息1>无法定向过去,清空文件之后无法写入新的内容;第三次2>将错误信息定向到aa
这个例子是豆子利用rsync在苹果服务器和linux之间进行拷贝,他会把失败和成功的信息都写入同一个日志文件
除了输出重定向,输入也可以重定向,比如下面创建一个test文档,以EOF结束
接下来看看管道的作用,他可以把前一个命令的结果传给后一个命令作为输入。一个很常见的使用就是结合grep进行查询
看看下面的例子,首先创建一个新的用户BEANXYZ,注意大写
拷贝 passwd 文件到本地, 然后执行 cat -n passwd | grep beanxyz, 可以看见找到了小写的用户名
如果添加了-i (ignore),则可以忽略大小写,可以获得两个用户的信息
如果指定了A3 (下面3行),B3(上面3行),还可以获得附近几行的数据
如果使用了 -v,可以进行反向过滤,除了 ‘beanxyz’之外的行数都列出来
有的时候,如果需要保存数据到某个临时文件,可以使用tee 进行写入,如果要追加信息,可以使用-a 选项
小测试:如何获取/etc/passwd 里面第11到20行的数据?
思路:先获取前20行数据,再获取后10行数据就可以了
接下来看看重头戏 VIM的使用。
首先看看VIM编辑器里面如何显示行号,在单个文件里输入 :set number 即可
但是一旦退出,这个功能就没有了。用户可以更改 家目录下面的 .vimrc 文件,添加一条信息,则该用户下所有的文本文件用VIM打开都可以显示行号了
类似的,如果想让该功能对所有用户都生效,可以直接修改 /etc/vimrc文件
打开 /etc/passwd 看看效果
接下来看看VIM有哪些常用的命令。简单的说,VIM 有3种模式,插入模式,命令行模式和末行模式。
模式的切换:
从Normal进入Insert模式下,可以通过i,o,a 或者I,O,A进入,区别无非在于插入光标的位置有所不同,个人觉得记住i 大部分时候就够用了
从Insert 退出到Normal, 按Esc即可
从Normal进入末行模式,可以输入:wq! 强制保存退出 或者/ 进行关键字的搜索
每个模式下都有很多各自的命令组合。下面是一些最最常见的,基本上会用了之后普通的文本编辑应该没问题了
Normal模式下:
删除光标所在的字符,按X即可
复制光标所在的行 yy
复制光标所在的单词 yw
复制光标以下的3行 y3
剪切所在的行 dd
粘贴 p
替换字符 r然后输入要替换的字符
替换一堆字符串 R然后输入替换的字符串
撤销上一步 u
上面操作都是针对行或者单词,不够灵活,如果想复制粘贴一段话怎么做?可以在视觉模式里进行操作。
输入v,然后通过光标选定一大段内容,按y复制,按p即可粘贴
如果想注释掉一大堆代码怎么办?可以在insert模式下手动改,一个更简单的方法是ctrl+v, 进入视觉块模式,然后高亮所有行的第一列,输入shift+i (insert模式),然后输入#注释符号,等待1秒即可
Insert 模式下:
这个和普通的文本编辑基本没啥区别,可以更改,删除,添加数据,如果可以使用鼠标,复制粘贴更容易可以直接高亮一堆字符之后点击滚轮就行了
末行模式下:
搜索关键字,输入/ keyword,可以通过按n或者N进行下一个匹配
强制保存 :w!
强制退出 :q!
强制保存退出 :wq! 或者 x!
另存 :saveas /path
分屏 :split, 然后可以通过ctrl+w进行切换
关闭分屏 :close
跳转到某一行 :number 就可以跳到对应的行号了
最后,如果想知道更多的命令,可以通过vimtutor 进行学习