Linux常用命令(一)

参考文档:http://c.biancheng.net/linux_tutorial/

一、查看文本文件

1、cat命令(concatenate)

  • cat 命令可以用来显示文本文件的内容(类似于 DOS 下的 type 命令)
    基本格式如下:
# 显示文件内容
[root@localhost ~]# cat [选项] 文件名

常用选项:

选项含义
-E在每行结束处显示"$"
-n对输出的所有行进行编号
-b同 -n 不同,此选项表示只对非空行进行编号
-s当遇到有连续 2 行以上的空白行时,就替换为 1 行的空白行

在这里插入图片描述

注意,cat 命令用于查看文件内容时,不论文件内容有多少,都会一次性显示。如果文件非常大,那么文件开头的内容就看不到了。 因此,cat 命令适合查看不太大的文件。

  • cat命令也可以把几个文件内容附加到另一个文件中,即连接合并文件,基本格式如下:
# 连接合并文件
[root@localhost ~]# cat 文件1 文件2 > 文件3

在这里插入图片描述

2、more命令

more 命令可以分页显示文本文件的内容,此命令的基本格式如下:

[root@localhost ~]# more [选项] 文件名

常见选项(命令比较简单,一般不用什么选项):

选项含义
-n一次显示的行数,n 代表数字
+n从第 n 行开始显示文件内容,n 代表数字

more 命令的执行会打开一个交互界面,常用的交互命令如下:

交互指令功能
h 或 ?显示 more 命令交互命令帮助
q 或 Q退出 more
v在当前行启动一个编辑器。
:f显示当前文件的文件名和行号
回车键向下移动一行。
空格键向下移动一页。
=显示当前行的行号。
/ 字符串搜索指定的字符串。
d向下移动半页。
b向上移动一页。

3、less命令

less 命令的作用和 more 十分类似,都用来浏览文本文件中的内容,不同之处在于,less功能比more更丰富,使用h可以查看操作帮助

less 命令的基本格式如下:

[root@localhost ~]# less [选项] 文件名

4、head命令

head 命令可以显示指定文件前若干行的文件内容,其基本格式如下:

[root@localhost ~]# head [选项] 文件名

常用选项:

选项含义
-n k这里的 K 表示行数,该选项用来显示文件前 K 行的内容;使用 “-K” 也可以

注意,如不设置显示的具体行数,则默认显示 10 行的文本数据。

在这里插入图片描述可以看到,使用head -n 5 /etc/passwd 命令和 head -5 /etc/passwd 的效果是一样的

5、tail命令

tail 命令和 head 命令正好相反,它用来查看文件末尾的数据,其基本格式如下:

[root@localhost ~]# tail [选项] 文件名

常用的选项:

选项含义
-n K这里的 K 指的是行数,该选项表示输出最后 K 行
-c K这里的 K 指的是字节数,该选项表示输出文件最后 K 个字节的内容
-f输出文件变化后新增加的数据。

在这里插入图片描述可以看到,使用 tail -n 3 /etc/passwd 命令和 tail -3 /etc/passwd 的效果是一样的

  • 使用-f选项来监听文件的新增内容
    在这里插入图片描述

二、vim编辑器

vim是vi的改进版,它增加了一些功能,比如语法高亮、多级撤销、多窗口、代码补全等。vim也兼容vi的大部分命令。使用 Vim编辑文件时,存在 3 种工作模式,分别是命令模式、输入模式和末行模式,这 3 种工作模式可随意切换
在这里插入图片描述

1、vim命令模式

使用 vim编辑文件时,默认处于命令模式。此模式下,可使用方向键上、下、左、右键移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。

  • 删除

    快捷键功能描述
    x删除光标处的字符。若在x之前加上一个数字n,则删除从光标所在位置开始向右的n个字符。
    X删除光标前面的字符。若在X之前加上一个数字n,则删除从光标前面那个字符开始向左的n个字符。
    dd删除光标所在的整行。前面加上数字n,则删除当前行以及其后的n-1行。
    D 或 d$删除从光标所在处开始到行尾的内容 。
    dw删除一个单词。若光标处在某个单词的中间,则从光标所在位置开始删至词尾。前面加数字n,表示删除n个指定的单词。
  • 复制

    快捷键功能描述
    yy复制光标所在的整行。在 yy 前可加一个数字 n,表示复制当前行及其后 n-1 行的内容。
    Y 或 y$两命令功能一样,都是复制从光标所在处开始到行尾的内容。
    yw复制一个单词。若光标处在某个词的中间,则从光标所在位置开始复制至词尾。同 yy 命令一样,可在 yw 之前加一个数字 n,表示复制 n 个指定的单词。
  • 粘贴

    快捷键功能描述
    p将剪贴板中的内容粘贴到光标后
    P(大写)将剪贴板中的内容粘贴到光标前
  • 撤销

    快捷键功能描述
    u该命令撤销上一次所做的操作。多次使用 u 命令会一步一步依次撤销之前做过的操作(在一次切换到文本输入模式中输入的所有文本算一次操作)。
    U该命令会一次性撤销自上次移动到当前行以来做过的所有操作,再使用一次 U 命令则撤销之前的 U 命令所做的操作,恢复被撤销的内容。
  • 查找文本

    命令模式或末行模式下,可以使用/来检索要查找的文本

    # 在文件中查找字符串"root"
    /root
    

    注意:在末行模式查找过程中,是严格区分大小写的。如果想忽略大小写,则输入命令 :set ic;调整回来输入:set noic

  • 光标移动

    快捷键功能描述
    w 或 W光标移动至下一个单词的单词首
    b 或 B光标移动至上一个单词的单词首
    e 或 E光标移动至下一个单词的单词尾
    nw 或 nWn 为数字,表示光标向右移动n 个单词
    nb 或 nBn 为数字,表示光标向左移动 n 个单词
    0 或 ^光标移动至当前行的行首
    $光标移动至当前行的行尾
    n$光标移动至当前行只有 n 行的行尾,n为数字
    gg光标移动到文件开头
    G光标移动至文件末尾
    nG光标移动到第 n 行,n 为数字
    :n编辑模式下使用的快捷键,可以将光标快速定义到指定行的行首

2、vim输入模式

使 vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令(各指令的具体功能如表 3 所示),当编辑文件完成后按Esc键即可返回命令模式。

快捷键功能描述
i插入命令,会将文本插入到光标所在位置之前
I插入命令,会将文本插入到光标所在行的行首
a追加文本命令,会将文本追加到光标当前位置之后
A追加文本命令,会将文本追加到光标所在行的末尾
o空行插入命令,将在光标所在行的下面插入一个空行,并将光标置于该行的行首
O空行插入命令,将在光标所在行的上面插入一个空行,并将光标置于该行的行首

3、vim末行模式

末行模式用于对文件中的指定内容执行保存、查找或替换等操作。

使 Vi 切换到末行模式的方法是在命令模式状态下按:键,此时 vim 窗口的左下方出现一个:符号,这是就可以输入相关指令进行操作了。

快捷键选项功能
:q不保存就退出 Vim 编辑器
:q!不保存,且强制退出 Vim 编辑器
:w保存但是不退出 Vim 编辑器
:w 新文件名另存到新的文件
:wq保存并退出 Vim 编辑器
:x若当前编辑文件曾被修改过,则vi会保存该文件,否则直接退出。
:x!保存文本,并退出 Vim 编辑器

指令执行后 Vim 会自动返回命令模式。如想直接返回命令模式,按 Esc 即可。

三、Linux文本处理三剑客

1、sed命令

vim 采用的是交互式文本编辑模式,可以用键盘命令来交互性地插入、删除或替换数据中的文本。而 sed 命令不同,它采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据。

sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在一个文本文件中,此命令执行数据的顺序如下:

  1. 每次仅读取一行内容;
  2. 根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据;
  3. 将执行结果输出。

当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。

sed 命令的基本格式如下:

[root@localhost ~]# sed [选项] [脚本命令] 文件名

常用选项及其含义:

选项含义
-e 脚本命令该选项会将其后跟的脚本命令添加到已有的命令中。
-f 脚本命令文件该选项会将其后文件中的脚本命令添加到已有的命令中。
-n默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽启动输出,需使用 print 命令来完成输出。
-i此选项会直接修改源文件,慎用。

2、awk命令

与 sed 命令类似,awk 命令也是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。

awk 命令的基本格式为:

[root@localhost ~]# awk [选项] '脚本命令' 文件名

常用的选项及其含义:

含义
-F fs指定以 fs 作为输入行的分隔符,awk 命令默认分隔符为空格或制表符。
-f file从脚本文件中读取 awk 脚本指令,以取代直接在命令行中输入指令。

awk 的强大之处在于脚本命令,它由 2 部分组成,分别为匹配规则和执行命令,如下所示:

'匹配规则{执行命令}'

这里的匹配规则,和 sed 命令中的 address 部分作用相同,用来指定脚本命令可以作用到文本内容中的具体行,可以使用字符串(比如 /demo/,表示查看含有 demo 字符串的行)或者正则表达式指定。另外需要注意的是,整个脚本命令是用单引号''括起,而其中的执行命令部分需要用大括号{}括起来。

在 awk 程序执行时,如果没有指定执行命令,则默认会把匹配的行输出;如果不指定匹配规则,则默认匹配文本中所有的行。

在这里插入图片描述

3、grep命令

很多时候,我们并不需要列出文件的全部内容,而是从文件中找到包含指定信息的那些行,要实现这个目的,可以使用 grep 命令。

grep 命令的由来可以追溯到 UNIX 诞生的早期,在 UNIX 系统中,搜索的模式(patterns)被称为正则表达式(regular expressions),为了要彻底搜索一个文件,有的用户在要搜索的字符串前加上前缀 global(全面的),一旦找到相匹配的内容,用户就像将其输出(print)到屏幕上,而将这一系列的操作整合到一起就是 global regular expressions print,而这也就是 grep 命令的全称。

grep命令是用来在每一个文件中(或特定输出上)搜索特定的字符模式,当使用 grep 时,包含指定字符模式的每一行内容,都会被打印(显示)到屏幕上。

grep 命令的基本格式如下:

[root@localhost ~]# grep [选项] 模式 文件名

模式指的是要么是字符(串),要么是正则表达式。

常用的选项以及各自的含义:

选项含义
-c仅列出文件中包含模式的行数
-i忽略模式中的字母大小写
-l列出带有匹配行的文件名
-n在每一行的最前面列出行号
-v列出没有匹配模式的行
-w把表达式当做一个完整的单字符来搜寻,忽略那些部分匹配的行

如果是搜索多个文件,grep 命令的搜索结果只显示文件中发现匹配模式的文件名;而如果搜索单个文件,grep 命令的结果将显示每一个包含匹配模式的行。

# 将当前目录下的文件列表重定向到demo1.txt文件中
[root@localhost ~]# ls -l > demo1.txt 
# 在demo1.txt文件中找出匹配Music的项
[root@localhost ~]# grep Music demo1.txt 
drw-rw-r--. 2 root root    6 16 20:36 Music
# 使用-c选项可以统计个数
[root@localhost ~]# grep -c Music demo1.txt 
1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值