linux常用命令
运行环境+笔记参考:Linux 命令基础入门 - 蓝桥云课 (lanqiao.cn)
Wc
- wc 命令是一个统计的工具,主要用来显示文件所包含的行、字和字节数。
- wc 命令是 word count 的缩写。
| 参数 | 描述 |
|---|---|
| -c | 统计字节数 |
| -l | 统计行数 |
| -m | 统计字符数,这个标志不能与 -c 标志一起使用 |
| -w | 统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串 |
| -L | 打印最长行的长度 |
-
统计文件的字节数、行数和字符数
- -c 字节数 ,一个汉字三个字节,9个汉字*3 = 27个字节,加上一个换行 = 28字节
- -l 行数
- -m字符数 一共有10个字符
echo $LANG,输出当前系统的语言设置
- 统计文件的字节数、行数和字符数,只打印数字,不打印文件名
- 统计
/bin目录下的命令个数
Grep
- 用来找到文件中的匹配文本,并且能够接受
正则表达式和通配符,同时可以用多个 grep 命令选项来生成各种格式的输出。 - grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
- grep 可用于 shell 脚本,因为 grep 通过返回一个
状态值来说明搜索的状态,如果模板搜索成功,则返回 0,如果搜索不成功,则返回 1,如果搜索的文件不存在,则返回 2。我们利用这些返回值就可进行一些自动化的文本处理工作。
| 参数 | 描述 |
|---|---|
| -c | 计算找到‘搜寻字符串’(即 pattern)的次数 |
| -i | 忽略大小写的不同,所以大小写视为相同 |
| -n | 输出行号 |
| -v | 反向选择,打印不匹配的行 |
| -r | 递归搜索 |
| --color=auto | 将找到的关键词部分加上颜色显示 |
-
将
/etc/passwd文件中出现 root 的行取出来,关键词部分加上颜色显示--color=auto选项将匹配到的部分显示为彩色
-
将
/etc/passwd文件中没有出现 root 和 nologin 的行取出来- -v:反向选择,打印不匹配的行
-
递归搜索文件中包含 main() 的文件,经常用于查找某些函数位于哪些源代码文件中:grep -r "main()".
正则表达式与 grep 命令
- 利用 Linux 系统自带的字典查找一个五个字母的单词,第三个字母为 j,最后一个字母为 r
- 验证固定电话,打印符合条件的电话,固定电话格式基本都是带有 0 的区号+连接符“-”+电话号码,另外还有可能有分机号,区号有 3 位、4 位,电话号码有 7 位和 8 位的
Cut
- 一个将文本按列进行切分的小工具,它可以指定分隔每列的定界符。
| 参数 | 描述 |
|---|---|
| -b | 以字节为单位进行分割 |
| -c | 以字符为单位进行分割 |
| -d | 自定义分隔符,默认为制表符 |
| -f | 自定义字段 |
| --complement | 抽取整个文本行,除了那些由 -c 或 -f 选项指定的文本 |
-
取出
student.txt文件中的第一列和第三列- 创建文件
- -d ' ' 分割符为空格,-f 自定义字段,第一行和第三行
- 文件中的第一列
- 前三列
- 给任意一字符串 str,取出其最后一个字符
Paste
- 它会添加一个或多个文本列到文件中,而不是从文件中抽取文本列。它通过读取多个文件,然后把每个文件中的字段
整合成单个文本流,输入到标准输出。
| 参数 | 描述 |
|---|---|
| -s | 将每个文件合并成行而不是按行粘贴 |
| -d | 自定义分隔符,默认为制表符 |
- 将
phone.txt和stu.txt文件中的内容按列拼接
- 将
stu.txt和phone.txt文件中的内容各自拼接成一行
Tr
- 常被用来更改字符,我们可以把它看作是一种基于字符的查找和替换操作。换字是一种把字符从一个字母转换为另一个字母的过程,tr 可以从标准输入中替换、缩减和删除字符,并将结果写到标准输出。
| 参数 | 描述 |
|---|---|
| -d | 删除匹配 SET1 的内容,并不作替换 |
- 将输入的字符大写转换为小写
- 将输入的字符中的数字删除
- ROT13 是一款微不足道的基于一种简易的替换暗码的加密类型。把 ROT13 称为“加密”是不严格的,“文本模糊处理”更准确些。有时候它被用来隐藏文本中潜在的攻击内容。这个方法就是简单地把每个字符在字母表中向前移动 13 位。因为移动的位数是所有 26 个字母的一半,所以对文本再次执行这个算法,就恢复到了它最初的形式。
Sort
- 对文本文件和 stdin 进行排序操作
| 参数 | 描述 |
|---|---|
| -n | 基于字符串的长度来排序,使用此选项允许根据数字值排序,而不是字母值 |
| -k | 指定排序关键字 |
| -b | 默认情况下,对整行进行排序,从每行的第一个字符开始。这个选项导致 sort 程序忽略每行开头的空格,从第一个非空白字符开始排序 |
| -m | 只合并多个输入文件 |
| -r | 按相反顺序排序,结果按照降序排列,而不是升序 |
| -t | 自定义分隔符,默认为制表符 |
-
列出
/usr/share/目录下使用空间最多的前 10 个目录文件du -s /usr/share/*命令显示/usr/share/目录下所有文件和目录的磁盘使用空间- -nr:字符串长度排序 反顺序
-
ls 命令输出信息中的空间使用大小字段进行排序
- -nr :字符串长度排序 反顺序
- -k 指定排序关键字5 第五列
- Head 10 前十行
- 自定义排序字段
sort -k 1,1 -k 2n data.txt
-
第一个 -k 选项指明只对第一个字段排序,1,1 意味着“始于并且结束于第一个字段”。
-
第二个 -k 选项 2n 表示对第二个字段按数值排序。
-
还有一种格式,如 -k 3.4n ,表示始于第三个字段的第四个字符,按数值排序。
Uniq
- uniq 命令经常和 sort 命令结合在一起使用。uniq 从标准输入或单个文件名参数接受数据有序列表,默认情况下,从数据列表中删除任何重复行。
- uniq 只能用于排过序的数据输入,因此,uniq 要么使用管道,要么将排过序的文件作为输入,并总是以这种方式与 sort 命令结合起来使用
| 参数 | 描述 |
|---|---|
| -c | 在每行前加上表示相应行目出现次数的前缀编号 |
| -d | 只输出重复的行 |
| -u | 只显示唯一的行 |
| -D | 显示所有重复的行 |
| -f | 比较时跳过前 n 列 |
| -i | 在比较的时候不区分大小写 |
| -s | 比较时跳过前 n 个字符 |
| -w | 对每行第 n 个字符以后的内容不作对照 |
-
找出
/bin目录和/usr/bin目录下所有相同的命令- Uniq -d :重复过的
Join
- join 命令类似于 paste,它会往文件中添加列,但是它使用了独特的方法来完成。一个 join 操作通常与关系型数据库有关联,在关系型数据库中来自多个享有共同关键域的表格的数据结合起来,得到一个期望的结果。这个 join 命令执行相同的操作,它把来自于多个基于共享关键域的文件的数据结合起来。
- 通俗地说,就是将两个文件中指定栏位相同的行连接起来,即按照两个文件中共同拥有的某一列,将对应的行拼接成一行。
| 参数 | 描述 | |
|---|---|---|
| -j FIELD | 等同于 -1 FIELD -2 FIELD,-j 指定一个域作为匹配字段 | |
| -1 FIELD | 以 file1 中 FIELD 字段进行匹配 | |
| -2 FIELD | 以 file2 中 FIELD 字段进行匹配 | |
| -t | 自定义分隔符,默认为制表符 |
- 将两个文件中的第一个字段作为匹配字段,连接两个文件
Comm
- comm 命令将逐行比较已经排序的两个文件。显示结果包括 3 列:第 1 列为只在第一个文件中找到的行,第 2 列为只在第二个文件中找到的行,第 3 列为两个文件的共有行。
- 注意,comm 命令和 join、uniq 命令一样,只能用于已经排过序的数据。
| 参数 | 描述 | |
|---|---|---|
| -1 | 不输出文件 1 特有的行 | |
| -2 | 不输出文件 2 特有的行 | |
| -3 | 不输出两个文件共有的行 |
- 比较两个文件的内容
- 只显示共有的内容
Diff
- 类似 comm 命令,diff 命令被用来监测文件之间的差异。然而,diff 是一款更加复杂的工具,它支持许多输出格式,并且一次能处理许多文本文件。
- 软件开发员经常使用 diff 程序来检查不同程序源码版本之间的更改,diff 能够递归地检查源码目录,通常称之为源码树。diff 程序的一个常见用例是创建 diff 文件或者补丁,它会被其它程序使用,例如 patch 程序(我们后面会讲到),来把文件从一个版本转换为另一个版本。
- diff 在命令行中打印每一行的改动,并且 diff 是 svn、cvs、git 等版本控制工具不可或缺的一部分。
| 参数 | 描述 | |
|---|---|---|
| -c | 上下文模式,显示全部内文,并标出不同之处 | |
| -u | 统一模式,以合并的方式来显示文件内容的不同 | |
| -a | 只会逐行比较文本文件 | |
| -N | 在比较目录时,若文件 A 仅出现在某个目录中,预设会显示:Only in 目录。若使用 -N 参数,则 diff 会将文件 A 与一个空白的文件比较 | |
| -r | 递归比较目录下的文件 |
-
两个文件的差异
-
得到1d0:表示两个文件之间有一行变化(1d0)。1表示第一个文件(a.txt)的行号。d表示删除(delete)这一行。0表示第二个文件(b.txt)的行号。
-
<a:表示第一个文件的这一行内容是<a。 -
4c3,4:表示从第一个文件的第4行到第二个文件的第3、4行之间存在变化。c表示变化(change)。3,4表示第二个文件的第3、4行。
-
<12:表示第一个文件的这一行内容是<12。 -
e:表示第二个文件的这一行内容是e。 -
10:表示第二个文件的这一行内容是10。
-
Patch
- patch 命令被用来把更改应用到文本文件中。它接受从 diff 程序的输出,并且通常被用来把较老的文件版本转变为较新的文件版本。
| 参数 | 描述 |
|---|---|
| -p num | 忽略几层文件夹 |
| -E | 如果发现了空文件,那么就删除它 |
| -R | 取消打过的补丁 |
- 生成
a.txt和b.txt的 diff 文件,然后应用 patch 命令更新a.txt文件,可以使用如下命令:
Df
- linux 中 df 命令的功能是用来检查 linux 服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
| 参数 | 描述 |
|---|---|
| -a | 全部文件系统列表 |
| -h | 方便阅读方式显示 |
| -i | 显示 inode 信息 |
| -T | 文件系统类型 |
| -t<文件系统类型> | 只显示选定文件系统的磁盘信息 |
| -x<文件系统类型> | 不显示选定文件系统的磁盘信息 |
- 显示磁盘使用情况
- 以 inode 模式来显示磁盘使用情况
Du
- linux 中 du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看。
| 参数 | 描述 |
|---|---|
| -a | 显示目录中所有文件的大小。 |
| -b | 显示目录或文件大小时,以 byte 为单位。 |
| -c | 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 |
| -k | 以 KB(1024bytes)为单位输出。 |
| -m | 以 MB 为单位输出。 |
| -s | 仅显示总计,只列出最后加总的值。 |
| -h | 以 K,M,G 为单位,提高信息的可读性。 |
- 显示指定文件所占空间
- 显示指定目录所占空间
- 显示几个文件或目录各自占用磁盘空间的大小
- 按照空间大小逆序排序显示
Time
- time 命令常用于测量一个命令的运行时间,包括实际使用
时间(real time)、用户态使用时间(the process spent in user mode)、内核态使用时间(the process spent in kernel mode)。 - 测量 date 命令运行的时间
- 将 time 命令的执行结果保存到文件中