Linux常用命令(二)

6 篇文章 0 订阅

vim文本编辑

1.less
  • less test.txt,分屏打开内容,空格往后打开,b向上返回。
2.head
  • head test.txt,默认显示文本开头10行;
  • head -3 test.txt,显示文本开头3行;
3.tail
  • tail test.txt,默认打开文本最后10行;
  • tail -f test.txt,流式显示;
  • tail -3 test.txt,显示txt最后3行;
4. 管道 |

head -3 test.txt | tail -1 ,只显示文本的第三行;

  • 其中 | 符号在linux中称作为管道,是将 | 前边命令输出结果作为后边输入;
  • echo “/” | ls -l 预期结果是显示根目录下的内容列表,但结果是显示了当前目录的内容列表,如下所示:
[root@node01 ~]# echo "/" | ls -l
total 28
-rw-r--r--. 1 root root    0 Sep  6 06:27 a
-rw-------. 1 root root  900 Aug 20 02:08 anaconda-ks.cfg
lrwxrwxrwx. 1 root root    1 Sep  6 06:14 c -> a
-rw-r--r--. 1 root root 8815 Aug 20 02:08 install.log
-rw-r--r--. 1 root root 3384 Aug 20 02:07 install.log.syslog
-rw-r--r--. 1 root root 1796 Sep  6 06:27 profile
drwxr-xr-x. 5 root root 4096 Sep  6 05:52 x
5. xargs
  • 如果要显示根目录内容,需要加上 xargs,这个参数的作用是将管道前边的输出结果,放到它后边命令的最后执行,也就是ls -l
    /,如下所示:
[root@node01 ~]# echo "/" | xargs ls -l
total 90
dr-xr-xr-x.  2 root root  4096 Aug 20 02:06 bin
dr-xr-xr-x.  5 root root  1024 Aug 20 02:08 boot
drwxr-xr-x. 18 root root  3680 Sep  8 20:00 dev
drwxr-xr-x. 61 root root  4096 Sep  8 20:00 etc
drwxr-xr-x.  3 root root  4096 Sep  6 05:46 home
dr-xr-xr-x.  8 root root  4096 Aug 20 02:06 lib
dr-xr-xr-x.  9 root root 12288 Aug 20 02:07 lib64
drwx------.  2 root root 16384 Aug 20 02:02 lost+found
drwxr-xr-x.  2 root root  4096 Sep 23  2011 media
drwxr-xr-x.  2 root root  4096 Sep 23  2011 mnt
drwxr-xr-x.  2 root root  4096 Sep 23  2011 opt
dr-xr-xr-x. 85 root root     0 Sep  8 20:00 proc
dr-xr-x---.  3 root root  4096 Sep  6 06:27 root
dr-xr-xr-x.  2 root root 12288 Aug 20 02:07 sbin
drwxr-xr-x.  7 root root     0 Sep  8 20:00 selinux
drwxr-xr-x.  2 root root  4096 Sep 23  2011 srv
drwxr-xr-x. 13 root root     0 Sep  8 20:00 sys
drwxrwxrwt.  3 root root  4096 Sep  8 20:00 tmp
drwxr-xr-x. 13 root root  4096 Aug 20 02:04 usr
drwxr-xr-x. 17 root root  4096 Aug 20 02:04 var
6. tee
  • 可以将输入流变成两个支线去输出,一个是在标准输出里打印,另一个是可以输出到文本中,这样既能在控制台显示,又能输出到文本中,例如:
[root@node01 ~]# ls -l / | tee abc.txt
total 90
dr-xr-xr-x.  2 root root  4096 Aug 20 02:06 bin
dr-xr-xr-x.  5 root root  1024 Aug 20 02:08 boot
drwxr-xr-x. 18 root root  3680 Sep  8 20:00 dev
drwxr-xr-x. 61 root root  4096 Sep  8 20:00 etc
drwxr-xr-x.  3 root root  4096 Sep  6 05:46 home
dr-xr-xr-x.  8 root root  4096 Aug 20 02:06 lib
dr-xr-xr-x.  9 root root 12288 Aug 20 02:07 lib64
drwx------.  2 root root 16384 Aug 20 02:02 lost+found
drwxr-xr-x.  2 root root  4096 Sep 23  2011 media
drwxr-xr-x.  2 root root  4096 Sep 23  2011 mnt
drwxr-xr-x.  2 root root  4096 Sep 23  2011 opt
dr-xr-xr-x. 85 root root     0 Sep  8 20:00 proc
dr-xr-x---.  3 root root  4096 Sep  6 06:27 root
dr-xr-xr-x.  2 root root 12288 Aug 20 02:07 sbin
drwxr-xr-x.  7 root root     0 Sep  8 20:00 selinux
drwxr-xr-x.  2 root root  4096 Sep 23  2011 srv
drwxr-xr-x. 13 root root     0 Sep  8 20:00 sys
drwxrwxrwt.  3 root root  4096 Sep  8 20:11 tmp
drwxr-xr-x. 13 root root  4096 Aug 20 02:04 usr
drwxr-xr-x. 17 root root  4096 Aug 20 02:04 var
  • 查看一下文本内容:
[root@node01 ~]# cat abc.txt 
total 90
dr-xr-xr-x.  2 root root  4096 Aug 20 02:06 bin
dr-xr-xr-x.  5 root root  1024 Aug 20 02:08 boot
drwxr-xr-x. 18 root root  3680 Sep  8 20:00 dev
drwxr-xr-x. 61 root root  4096 Sep  8 20:00 etc
drwxr-xr-x.  3 root root  4096 Sep  6 05:46 home
dr-xr-xr-x.  8 root root  4096 Aug 20 02:06 lib
dr-xr-xr-x.  9 root root 12288 Aug 20 02:07 lib64
drwx------.  2 root root 16384 Aug 20 02:02 lost+found
drwxr-xr-x.  2 root root  4096 Sep 23  2011 media
drwxr-xr-x.  2 root root  4096 Sep 23  2011 mnt
drwxr-xr-x.  2 root root  4096 Sep 23  2011 opt
dr-xr-xr-x. 85 root root     0 Sep  8 20:00 proc
dr-xr-x---.  3 root root  4096 Sep  6 06:27 root
dr-xr-xr-x.  2 root root 12288 Aug 20 02:07 sbin
drwxr-xr-x.  7 root root     0 Sep  8 20:00 selinux
drwxr-xr-x.  2 root root  4096 Sep 23  2011 srv
drwxr-xr-x. 13 root root     0 Sep  8 20:00 sys
drwxrwxrwt.  3 root root  4096 Sep  8 20:11 tmp
drwxr-xr-x. 13 root root  4096 Aug 20 02:04 usr
drwxr-xr-x. 17 root root  4096 Aug 20 02:04 var
7. vi(vim)
  • vim是vi的升级版,vim +n profile 打开文件并定位到n行,输入:set nu显示行号;
  • vim +: 打开文件并定位到最后一行,或者vim直接打开文件,输入G自动到最后一行;
  • vim +/关键字,打开文件并定位到关键字位置;
  • 编辑模式保存退出,除了按ESC-输入:wq操作之外,还可以直接ESC,按ZZ进行保存退出;
8. vi(vim)光标移动
  • vim profile打开文件,输入i进入编辑模式,i在当前光标前边输入字母,a在当前光标后边输入字母;
  • vim profile打开文件,输入o(小写)在当前光标下方新建一行,并转为输入模式;
  • vim profile打开文件,输入O(大写)在当前光标所在行的上方,新建一行,并转为输入模式;
  • vim profile打开文件,输入I定位在当前光标所在行的行首,并转为输入模式;
  • vim profile打开文件,输入A定位在当前光标所在行的行尾,并转为输入模式;
  • 编辑模式下,h(左)j(下)k(上)l(右),使用这几个字母等同于上下左右键;
  • 编辑模式下,w 移至下一个单词的词首,可以单词为单位一直下一个;
  • 编辑模式下,e 跳至当前或前一个单词的词尾;
  • 编辑模式下,b 跳至当前或前一个单词的词首;
  • 行内:编辑模式下,0 绝对行首;^ 行首的第一个非空白字符;$ 绝对行尾;
  • 行间:编辑模式下,G 文章末尾;3G 第3行;gg 文章开头;
9. vi(vim)翻屏
  • 编辑模式下,ctrl+f 往下翻屏,ctr+b 往上翻屏;
10. vi(vim)删除&替换
  • x 删除光标位置的字符;
  • 3x 删除光标开始3个字符;
  • r 替换光标位置字符;
  • dd 删除光标所在行,3dd即删除光标以下的3行内容;
  • dw 删除光标所在的整个单词,3dw即删除光标所在之后的3个单词;
  • dG 删除光标所在行以下,到最后一行,G表示最后一行;
  • p 粘贴光标所在行的下一行(粘贴dd的内容即为剪切),P(大写)粘贴到光标所在行的上一行;
  • 还可以使用末行模式删除,例如:
:6,$d

其中6表示开始行号,$表示最后一行,d表示删除,整个命令表示从第6行开始到最后一行全部删除;
再例如:

:.,$d

其中 . 表示当前光标所在位置;
如果想从第6行删除到最后,保留最后两行,可以这样操作:

:6,$-2d

同样,可以使用末行模式进行具体行的拷贝,例如:

:.,+5y

从光标所在行开始,向下拷贝5行,然后可以在编辑模式下使用p命令进行拷贝;

11. vi(vim)撤销&重做
  • u 撤销;
  • ctrl+r 重做撤销的操作;
  • . 重复上一步的操作;
12. vi(vim)set设置
  • set nu 显示行号;
  • set nonu 隐藏行号;
  • set readonly 设置当前文本为只读,即使修改了也不能保存;
13. vi(vim)查找
  • /aaa 查找关键字aaa,n向下查找下一个,N向上查找下一个;
  • :?aaa 末行模式查找关键字aaa,和直接/不同的是,它默认是向上查找;
14. vi(vim)查找并替换s
  • 从第1行到最后一行,将aaa替换为bbb,如下所示:
:1,$s/aaa/bbb/

注意:以上只是将每一行第一个出现的aaa给替换成了bbb,如果同一行有多个aaa将不被替换。如果整行都要替换,需加g,i为忽略大小写,如下所示:

:1,$s/aaa/bbb/gi
  • 如果将全文中的某个关键字替换,可以使用%,如下所示:
:%s/aaa/bbb/gi
15. vi(vim)编辑模式中执行命令!
  • 如果在文本编辑模式下,执行命令,可以使用!+指令,如下所示:
:!ls -l /

一般在配置文件中,可能会遇到某个文件名忘记了,那么就可使用执行命令模式,去查看文件名然后再回车,继续文件编辑模式,非常方便。

正则表达式

1. 首先看下grep的用法
  • 查看包含”after”的行,如下所示:
[root@node01 ~]# grep "after" profile 
            if [ "$2" = "after" ] ; then
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
    pathmunge /sbin after
  • 查看不包含所定义关键字的行,加上-v:
[root@node01 ~]# grep -v "after" profile
2. 匹配操作符
  • \ 转义字符;
  • . 匹配任意单个字符;
  • [12389],[^12],[a-k] 字符序列单字符占位,匹配[]中任意字符;
  • ^ 匹配行首;
  • $ 匹配行尾;
  • \<,> 单词首尾边界;
  • | 连接操作符;
  • (,) 选择操作符;
  • \n 反向引用;
  • [^0-9] 匹配任意不在0-9范围内的字符串;
3. 重复操作符

注意:其中斜体的为扩展正则表达式,使用时需要转义 \?,+,{,|,(
- ? 匹配前边子表达式0到1次;
- * 匹配0到多次;
- + 匹配1到多次
- {n} 匹配n次
- {n,} 匹配n到多次
- {n,m} 匹配n到m次
- .* 匹配任意单个或多个字符;
- 搜索含有某个单词的行记录,如下所示:

grep "\<aaa\>" profile
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值