常用Shell命令及Vi的使用

1.Vi      全屏幕编辑器的使用

2.grep   找出满足条件的行

3.cut      摘取指定的列

4.sort     对文件按指定的关键字段排序

5.uniq    删除文件中重复的行

6.wc       对文件进行字符数、单词数、行数统计

7.diff      比较两个文件的不同之处

8.who/w 列出当前登录在线用户的详细情况

 

vi全屏幕编辑器的使用

• vi的特点、及几个基本概念

• vi的三种模式,及之间的切换

• 光标移动指令

• 删除指令

• 复制、粘贴指令

• 查找及替换指令

• 其他指令

 

vi简介

   ViVisual的意思,几乎所有的UNIX系统都提供这个程序。它是一种全屏幕编辑程序。这里的屏幕是文本对外显示的窗口,在这个窗口内,用户可以自由地移动光标,对文本中的字符、字、行、段进行插入、删除和修改等操作,并通过上下移动窗口,对文件的全部内容进行操作。

 

 

vi的特点、及几个基本概念

1.由行编辑器发展而来

2.双手不必离开键盘就可完成所有操作

3.不依赖于鼠标和功能键(home/end/pageup/pagedown/...

4.在命令模式下,所有的输入都当作命令看待

5.在文本输入模式下,所有的输入都当作文本

 

vi的三种模式,及模式间切换


• 命令模式到文本模式切换:O

      (insert)  在光标所在位置插入(当前字符前)

      (append)在光标所在位置后插入(当前字符后)

      在当前行首插入    A在当前行尾插入

      (open)    在光标所在当前行的下面插入新行

                    在光标所在当前行的上面加入新行

扩展命令模式(长命令模式)

    在命令模式下输入:,在屏幕下方出现:提示符,等待  用户输入其他指令。

vi的启动

   shell命令状态下输入

    vi filename(打开现有文件,或编辑新文件

    vi

vi的退出

    在扩展命令模式下输入

    :wq  文件存盘退出

    :q!     不存盘强制退出

    :wq  newfilename  存为新文件newfilename

 

 

光标移动指令

• 对应方向键移动

     左移一字符    上移一行    下移一行   右移一字符

• 按单词单位移动

     移到词首    移到词尾  移到下一词首

• 按行单位移动  

     移到行首          移到行尾   

     nG  移到第n     移到最后一行

• 按页单位移动 

     下卷一屏       上卷一屏

      下卷半屏       上卷半屏

删除字符指令

•   删除当前光标处的字符

•  删除当前光标前一个字符

•  删除从当前开始的n个字符

• d0   删除从当位置到行首的所有字符

• d$   删除从当位置到行尾的所有字符

• dw  删除从当位置到下一个词首的所有字符

• dG  删除从当位置到文档末的所有字符

• d1G 删除从当位置到文档开始处的所有字符

• dd    删除当前行

 

 

复制与粘贴指令

• 复制 yank

    y复制从当前位置开始的n个字符

     yw    复制从当前位置到下一词首

     y0    复制从当前位置到行首的所有字符

     y$    复制从当前位置到行尾的所有字符

     yG   复制从当前位置到文档末的所有字符

      y1G复制从当前位置到文档开始的所有字符

      yy复制整行

• 粘贴put

      将复制的内容 粘贴到光标后

      将复制的内容 粘贴到光标前

 

查找和替换指令

查找

    /string   从光标当前位置向下查询字符串string

    ?string   从光标当前位置向上查询字符串string

               重复上次向下查找

              重复上次向上查找

  

查找和替换指令

替换指令(扩展命令模式下)

1:1,$s/oldstr/newstr/g

                 在全文范围用newstr替换oldstr

2:n,ms/oldstr/newstr/g

                  在第n行到第m行内用newstr替换oldstr

  说明参数g后可跟参数c表示在替换前需用户确认。

        

         :1,20s/jason/Jason/gc

         120行内用Jason替换jason并每次替换要求用户确认。

  

其他指令

•     undo 撤消上一次操作

•    撤消对当前行的所有操作,恢复到原来状态。

• : newfilename  不退出vi编辑其他文件

• :otherfilename 在光标位置读入其他文件

• :!cmd   执行shell命令cmd

• :r!cmd  执行shell命令并把运行结果插入当前光标处

• :n,m filename  把第nm行的内容存入文件

 

字符串查找(grep

• grep

在文件中搜索含有特定字符串模式的行,并显示出来。

 

命令格式:grep [-clnvy]     

-c 只显示符合字符串模式的总行数
-l 只显示符合字符串模式的文件的文件名
-n 显示符合字符串模式的行的行号
-v 显示不含字符串模式的行
-y 不区分字母的大小写

字符串模式中的特殊符号:

. 匹配任一字符
* 匹配任意多个字符
^ 匹配行首

$ 匹配行尾
[] 匹配[]中的任意字符
[^ ] 与不在[]内的任意字符匹配

 

字符串查找(续)

grep ab myfile 
搜索myfile文件,显示所有包含字符串ab的行。

 

 

grep ^ab myfile 
搜索myfile文件,显示所有以字符串ab开头的行。

 

 

grep ^ab myfile 
搜索myfile文件,显示所有不以字符串ab开头的行。

 

grep [hH]ello 
显示当前目录下所有包含字符串hello/Hello的文件的文件名。

 

 

grep在命令输出中的过滤作用:

配合管道命令 |可过滤掉不需的信息:

ls –l grep “^d”   只显示出当前目录下的目录

who grep tty1    把当前在tty1控制台登录的用户列出

ps –A grep  xinetd  只显示当前系统运行的守护进程xinetd

 

摘取指定的列(cut

• 从文本每行中摘取指定字符或字段

• 通过列位置方式:指定列位置

     cut  -c1-20  a.txt

    从文本a.txt的每行中提取头20个字符

• 通过字段位置方式,默认分割符为TAB可通过-d参数后跟单字节符来指定分割符。

    cut  -d: -f1,3,4  /etc/passwd

    抽取passwd文件的用户名uidgid

对比

grep 抽取满足条件的行    cut   抽取指定的列

 

按关键字排序(sort

• 对文本按指定的字段排序,若没指定字段,则把整行作为关键字。默认按字典序排序,对于数字字段可指定按数字序排序。

• 字段的分割默认为tab可通过-t参数指定其他单字节符号。

• sort  -t:  +0  -1 /etc/passwd

    按字段用户名排序

• sort   -t:  +2n  -3  /etc/passwd

    对第三个字段uid按数字序排序,

• 可同时对多个字段排序

    sort  -t: +6 +0  -1 /etc/passwd

    先对shell名排序,然后按用户名排序

• 说明:

   指定对第m个字段的方法是+(m-1)  -m

• 字段后跟的n表示按数字序

• 参数-表示逆序输出

    sort  -r  -t: +6 +0  -1 /etc/passwd

 

删除文本中重复的行(uniq

• 用于比较输入流中相邻的两行,若重复则删除重复的行,通常与sort配合。

• 如列出当前系统注册用户使用的shell

    cut  -d: -f7 /etc/passwd sort uniq

 文件字数统计(wc

• 统计文本文件中字符、单词、行出现的次数

• -l统计行数

• -w统计单词数

• -c统计字符数

• wc  -l /etc/passwd统计用户个数

• wc  -w a.txt 统计文件中出现的单词数

 

综合例子

有如下国家信息文件country.txt,包含以下字段:国家名、首都、所在洲、使用语言,字段间用“,”分割。

England,Landon,Europe,English

China,Beijing,Asia,Chinese

Japan,Tokyo,Asia,Japanese

America,W.S.DC,America,English

France,Paris,Europe,Franch

......

 

1、统计国家信息文件中出现的所有语言

cut  -d, -f4 country.txt sort uniq

 

2、统计亚洲国家所使用的语言数量

grep ‘Asia’ country.txt cut  -d, -f4 sort uniq wc  -l

 

3、统计欧洲国家讲英语的国家数量

 

grep ‘Eurpoe’ country.txt grep ‘English’ wc  -l

 

比较两个文件不同(diff

比较两个文本文件的差别,通常用于修改过文件同原备份文件的比较

格式:

       diff  file1  file2

输出格式:

n1 n3,n4       file1的第n1行后插入了file2的第n3n4

n1,n2 n3,n4  file1的第n1n2行改变成了file2的第n3n4

n1,n2 n3       file2的第n3行后删除了原属于file1的第n1n2

每个输出命令后面列出了两个文件不同点的行,用“<”“>”区分

“<”表示后面的输出内容为file1

 “>”表示后面的输出内容为file2

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值