linux常用命令(下)

215 阅读12分钟

linux常用命令

运行环境+笔记参考:Linux 命令基础入门 - 蓝桥云课 (lanqiao.cn)

Wc

  1. wc 命令是一个统计的工具,主要用来显示文件所包含的行、字和字节数。
  2. wc 命令是 word count 的缩写。
参数描述
-c统计字节数
-l统计行数
-m统计字符数,这个标志不能与 -c 标志一起使用
-w统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串
-L打印最长行的长度
  1. 统计文件的字节数、行数和字符数

    1. -c 字节数 ,一个汉字三个字节,9个汉字*3 = 27个字节,加上一个换行 = 28字节
    2. -l 行数
    3. -m字符数 一共有10个字符
    4. echo $LANG ,输出当前系统的语言设置

  1. 统计文件的字节数、行数和字符数,只打印数字,不打印文件名

  1. 统计/bin目录下的命令个数

Grep

  1. 用来找到文件中的匹配文本,并且能够接受正则表达式通配符,同时可以用多个 grep 命令选项来生成各种格式的输出。
  2. grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
  3. grep 可用于 shell 脚本,因为 grep 通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回 0,如果搜索不成功,则返回 1,如果搜索的文件不存在,则返回 2。我们利用这些返回值就可进行一些自动化的文本处理工作。
参数描述
-c计算找到‘搜寻字符串’(即 pattern)的次数
-i忽略大小写的不同,所以大小写视为相同
-n输出行号
-v反向选择,打印不匹配的行
-r递归搜索
--color=auto将找到的关键词部分加上颜色显示
  1. /etc/passwd文件中出现 root 的行取出来,关键词部分加上颜色显示

    1. --color=auto 选项将匹配到的部分显示为彩色

  1. /etc/passwd文件中没有出现 root 和 nologin 的行取出来

    1. -v:反向选择,打印不匹配的行

  1. 递归搜索文件中包含 main() 的文件,经常用于查找某些函数位于哪些源代码文件中:grep -r "main()".

正则表达式与 grep 命令

  1. 利用 Linux 系统自带的字典查找一个五个字母的单词,第三个字母为 j,最后一个字母为 r

  1. 验证固定电话,打印符合条件的电话,固定电话格式基本都是带有 0 的区号+连接符“-”+电话号码,另外还有可能有分机号,区号有 3 位、4 位,电话号码有 7 位和 8 位的

Cut

  1. 一个将文本按列进行切分的小工具,它可以指定分隔每列的定界符。
参数描述
-b以字节为单位进行分割
-c以字符为单位进行分割
-d自定义分隔符,默认为制表符
-f自定义字段
--complement抽取整个文本行,除了那些由 -c 或 -f 选项指定的文本
  1. 取出student.txt文件中的第一列和第三列

    1. 创建文件
    2. -d ' ' 分割符为空格,-f 自定义字段,第一行和第三行
    3. 文件中的第一列
    4. 前三列
    5. 给任意一字符串 str,取出其最后一个字符

Paste

  1. 它会添加一个或多个文本列到文件中,而不是从文件中抽取文本列。它通过读取多个文件,然后把每个文件中的字段整合成单个文本流,输入到标准输出。
参数描述
-s将每个文件合并成行而不是按行粘贴
-d自定义分隔符,默认为制表符
  1. phone.txtstu.txt文件中的内容按列拼接

  1. stu.txtphone.txt文件中的内容各自拼接成一行

Tr

  1. 常被用来更改字符,我们可以把它看作是一种基于字符的查找和替换操作。换字是一种把字符从一个字母转换为另一个字母的过程,tr 可以从标准输入中替换、缩减和删除字符,并将结果写到标准输出。
参数描述
-d删除匹配 SET1 的内容,并不作替换
  1. 将输入的字符大写转换为小写

  1. 将输入的字符中的数字删除

  1. ROT13 是一款微不足道的基于一种简易的替换暗码的加密类型。把 ROT13 称为“加密”是不严格的,“文本模糊处理”更准确些。有时候它被用来隐藏文本中潜在的攻击内容。这个方法就是简单地把每个字符在字母表中向前移动 13 位。因为移动的位数是所有 26 个字母的一半,所以对文本再次执行这个算法,就恢复到了它最初的形式。

Sort

  1. 对文本文件和 stdin 进行排序操作
参数描述
-n基于字符串的长度来排序,使用此选项允许根据数字值排序,而不是字母值
-k指定排序关键字
-b默认情况下,对整行进行排序,从每行的第一个字符开始。这个选项导致 sort 程序忽略每行开头的空格,从第一个非空白字符开始排序
-m只合并多个输入文件
-r按相反顺序排序,结果按照降序排列,而不是升序
-t自定义分隔符,默认为制表符
  1. 列出/usr/share/目录下使用空间最多的前 10 个目录文件

    1. du -s /usr/share/*命令显示/usr/share/目录下所有文件和目录的磁盘使用空间
    2. -nr:字符串长度排序 反顺序

  1. ls 命令输出信息中的空间使用大小字段进行排序

    1. -nr :字符串长度排序 反顺序
    2. -k 指定排序关键字5 第五列
    3. Head 10 前十行

  1. 自定义排序字段

sort -k 1,1 -k 2n data.txt

  1. 第一个 -k 选项指明只对第一个字段排序,1,1 意味着“始于并且结束于第一个字段”。

  2. 第二个 -k 选项 2n 表示对第二个字段按数值排序。

  3. 还有一种格式,如 -k 3.4n ,表示始于第三个字段的第四个字符,按数值排序。

Uniq

  1. uniq 命令经常和 sort 命令结合在一起使用。uniq 从标准输入或单个文件名参数接受数据有序列表,默认情况下,从数据列表中删除任何重复行。
  2. uniq 只能用于排过序的数据输入,因此,uniq 要么使用管道,要么将排过序的文件作为输入,并总是以这种方式与 sort 命令结合起来使用
参数描述
-c在每行前加上表示相应行目出现次数的前缀编号
-d只输出重复的行
-u只显示唯一的行
-D显示所有重复的行
-f比较时跳过前 n 列
-i在比较的时候不区分大小写
-s比较时跳过前 n 个字符
-w对每行第 n 个字符以后的内容不作对照
  1. 找出/bin目录和/usr/bin目录下所有相同的命令

    1. Uniq -d :重复过的

Join

  1. join 命令类似于 paste,它会往文件中添加列,但是它使用了独特的方法来完成。一个 join 操作通常与关系型数据库有关联,在关系型数据库中来自多个享有共同关键域的表格的数据结合起来,得到一个期望的结果。这个 join 命令执行相同的操作,它把来自于多个基于共享关键域的文件的数据结合起来。
  2. 通俗地说,就是将两个文件中指定栏位相同的行连接起来,即按照两个文件中共同拥有的某一列,将对应的行拼接成一行。
参数描述
-j FIELD等同于 -1 FIELD -2 FIELD,-j 指定一个域作为匹配字段
-1 FIELD以 file1 中 FIELD 字段进行匹配
-2 FIELD以 file2 中 FIELD 字段进行匹配
-t自定义分隔符,默认为制表符
  1. 将两个文件中的第一个字段作为匹配字段,连接两个文件

Comm

  1. comm 命令将逐行比较已经排序的两个文件。显示结果包括 3 列:第 1 列为只在第一个文件中找到的行,第 2 列为只在第二个文件中找到的行,第 3 列为两个文件的共有行。
  2. 注意,comm 命令和 join、uniq 命令一样,只能用于已经排过序的数据。
参数描述
-1不输出文件 1 特有的行
-2不输出文件 2 特有的行
-3不输出两个文件共有的行
  1. 比较两个文件的内容

  1. 只显示共有的内容

Diff

  1. 类似 comm 命令,diff 命令被用来监测文件之间的差异。然而,diff 是一款更加复杂的工具,它支持许多输出格式,并且一次能处理许多文本文件。
  2. 软件开发员经常使用 diff 程序来检查不同程序源码版本之间的更改,diff 能够递归地检查源码目录,通常称之为源码树。diff 程序的一个常见用例是创建 diff 文件或者补丁,它会被其它程序使用,例如 patch 程序(我们后面会讲到),来把文件从一个版本转换为另一个版本。
  3. diff 在命令行中打印每一行的改动,并且 diff 是 svn、cvs、git 等版本控制工具不可或缺的一部分。
参数描述
-c上下文模式,显示全部内文,并标出不同之处
-u统一模式,以合并的方式来显示文件内容的不同
-a只会逐行比较文本文件
-N在比较目录时,若文件 A 仅出现在某个目录中,预设会显示:Only in 目录。若使用 -N 参数,则 diff 会将文件 A 与一个空白的文件比较
-r递归比较目录下的文件
  1. 两个文件的差异

    1. 得到1d0:表示两个文件之间有一行变化(1d0)。

      1. 1 表示第一个文件(a.txt)的行号。
      2. d 表示删除(delete)这一行。
      3. 0 表示第二个文件(b.txt)的行号。
    2. <a:表示第一个文件的这一行内容是<a

    3. 4c3,4:表示从第一个文件的第4行到第二个文件的第3、4行之间存在变化。

      1. c 表示变化(change)。
      2. 3,4 表示第二个文件的第3、4行。
    4. <12:表示第一个文件的这一行内容是<12

    5. e:表示第二个文件的这一行内容是e

    6. 10:表示第二个文件的这一行内容是10

Patch

  1. patch 命令被用来把更改应用到文本文件中。它接受从 diff 程序的输出,并且通常被用来把较老的文件版本转变为较新的文件版本。
参数描述
-p num忽略几层文件夹
-E如果发现了空文件,那么就删除它
-R取消打过的补丁
  1. 生成a.txtb.txt的 diff 文件,然后应用 patch 命令更新a.txt文件,可以使用如下命令:

Df

  1. linux 中 df 命令的功能是用来检查 linux 服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
参数描述
-a全部文件系统列表
-h方便阅读方式显示
-i显示 inode 信息
-T文件系统类型
-t<文件系统类型>只显示选定文件系统的磁盘信息
-x<文件系统类型>不显示选定文件系统的磁盘信息
  1. 显示磁盘使用情况

  1. 以 inode 模式来显示磁盘使用情况

Du

  1. linux 中 du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看。
参数描述
-a显示目录中所有文件的大小。
-b显示目录或文件大小时,以 byte 为单位。
-c除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k以 KB(1024bytes)为单位输出。
-m以 MB 为单位输出。
-s仅显示总计,只列出最后加总的值。
-h以 K,M,G 为单位,提高信息的可读性。
  1. 显示指定文件所占空间

  1. 显示指定目录所占空间

  1. 显示几个文件或目录各自占用磁盘空间的大小

  1. 按照空间大小逆序排序显示

Time

  1. time 命令常用于测量一个命令的运行时间,包括实际使用时间(real time)、用户态使用时间(the process spent in user mode)、内核态使用时间(the process spent in kernel mode)。
  2. 测量 date 命令运行的时间

  1. 将 time 命令的执行结果保存到文件中