linux常用高级命令

本文最后更新于:1 年前

find

  功能:用于查找文件
  基本格式:

1
find 查找路径 查找条件

  查找条件:

  • -name
      e.g.:
1
2
find ./ -name "a.txt"
查找当前目录下(含子目录)名称为“a.txt”的文件
  • -type
      e.g.:
1
2
find ./ -type f 
查找当前目录下(含子目录)的普通文件

  linux下文件类型主要有以下几种:

字母 文件类型
f(file) 普通文件
d(directory) 目录
b(block) 块设备
s(socket) 套接字
c(char) 字符设备
l(link含硬链接和软链接) 链接
p(pipe) 管道
  • -user
      e.g.:
1
2
find ./ -user "ayyHA"
查找当前目录下(含子目录)user为ayyHA的文件
  • -group
      e.g.:
1
2
find ./ -group "test"
查找当前目录下(含子目录)group为test的文件
  • -not
      e.g.:
1
2
find ./ -not -type f
查找当前目录下(含子目录)文件类型为非普通文件的文件

  -not也可以用!来替换,二者等价

  • -a -o
      e.g.:
1
2
find ./ -type f -a -name "*md"
查找当前目录下(含子目录)文件类型为普通文件且以md结尾的文件
1
2
find ./ -type f -o -name "*md"
查找当前目录下(含子目录)文件类型为普通文件或以md结尾的文件

  注:默认情况是-a,即查找条件是合取的关系。

  • -maxdepth -mindepth
      e.g.:
1
2
find ./ -maxdepth 2 -name "*md"
查找当前目录下(含子目录)最大深度为2且以md结尾的文件
1
2
find ./ -mindepth 1 -name "*md"
查找当前目录下(含子目录)最小深度为1且以md结尾的文件

  注:当前目录下即为深度为1,往下的每一个子目录深度便加1。

  • -size
      e.g.:
1
2
find ./ -size 10k
查找当前目录下(含子目录)大小为10K的文件

  注:+10K表示比10K大的文件;-10K表示比10K小的文件。

  • -perm
      e.g.:
1
2
find ./ -perm 644
查找当前目录下(含子目录)文件权限为644的文件(此为精确匹配)

  注:权限值若是写成-404则表明只要user权限为r且other权限为r即可,只要满足了这两个条件的文件就都会被筛选出来;权限值若是写成了/404则表明只要user权限为r或other权限为r即可,只要满足了两个条件的其中一个就会被筛选出来。

  • -atime -ctime -mtime
      e.g.:
1
2
find ./ -mtime -7 
查找当前目录下(含子目录)的文件在7天内有进行过修改的

  注:其余两个类似,不赘述。(对数字前添加‘+’/‘-’表示‘大于’/‘小于’)

  • -exec 命令 {} ;
      此查找条件意思为:对查找到的文件执行(execute)命令,其中**{}代表的是查找到的文件**。
      e.g.:
1
2
find ./ -name "*md" -exec cat {} \;
对查找到的以md结尾的文件执行cat命令。

  注:有个-ok 命令 {} \;与该命令相似,但它会询问查找到的文件是否执行该命令(y/n)。

wc

  功能:用于统计行数(line)、单词数(word)、字节数(char,内存占1byte)
  基本格式:

1
wc 统计条件 文件名

  统计条件:

  • -l
      e.g.:
1
2
wc -l ./text.txt
用于统计text.txt文件的行数
  • -w
      e.g.:
1
2
wc -w ./text.txt
用于统计text.txt文件的单词数
  • -c
      e.g.:
1
2
wc -c ./text.txt
用于统计text.txt文件的字节数
  • -m
      e.g.:
1
2
wc -m ./text.txt
用于统计text.txt文件的字符数(一个汉字在utf8编码里是3个字节,利用-c不方便统计字符数)
  • -L
      e.g.:
1
2
wc -L ./text.txt
用于统计text.txt文件最长行的长度

grep

  功能:依据条件进行过滤,找到满足条件的行
  基本格式;

1
grep [option] pattern file

  option:
以下示例所用文本均为下图所示:

grep option test file.png

  • -E
      作用:pattern匹配转为扩展正则表达式,等价于egrep命令。
  • -i
      作用:忽略大小写,ignore。
      演示如下:

grep -i.png

  • -v
      作用:反向查询,类似取反,invert。
      演示如下:

grep -v.png

  • -n
      作用:输出行号,number。
      演示如下:

grep -n.png

  • -w
      作用:匹配整个单词,字符串内出现的不匹配,word。
      在原来的文本上补加了一些内容用以演示,演示文本如下图所示:

grep option test file2.png

  演示如下:

grep -w.png

  • -c
      作用:统计匹配到的行数,count。
      演示如下:

grep -c.png

  • -o
      作用:只显示匹配到的字符串,不显示其所在行的内容。
      演示如下:

grep -o.png

  • -Ax
      作用:输出匹配到内容所在行的后x行的内容,after x。
      演示如下:

grep -Ax.png

  • -Bx
      作用:输出匹配到内容所在行的前x行的内容,before x。
      演示如下:

grep -Bx.png

  • -Cx
      作用:输出匹配到内容所在行的前后x行的内容,context x。
      演示如下:

grep -Cx.png

  • -e
      作用:实现多个匹配,相当于or。
      演示如下:

grep -e.png

  • -q
      作用:安静模式,只关心结果,即有没有匹配到。匹配到为0,匹配不到为1,文件有误为2,quiet。
      演示如下:

grep -q.png

  注:如果在使用grep匹配关键字时,匹配到的关键字没高亮,可以通过在命令grep --color=auto "word" file中添加--color=auto来开启;也可以通过alias命令重申一下grep命令alias "grep=grep --color=auto"来达到效果。

pattern(均为扩展正则表达式):

以下示例所用文本均为下图所示:

re test file.png

单个字符匹配相关

  • .
      作用:匹配任意的单个字符
      演示如下:

re ..jpg

  • [ ]
      作用:匹配指定范围内的任意单个字符
      演示如下:

re   .jpg

  • [^ ]
      作用:匹配指定范围外的任意单个字符
      演示如下:

re ^ .jpg

  • [0-9] / [[:digit:]]
      作用:[0-9]和[[:digit:]]功能一样,匹配[0,9]间任意的单个数字
      演示如下:

re 0-9.jpg

  • [a-zA-z] / [[:alpha:]]
      作用:[a-zA-z]和[[:alpha:]]功能一样,匹配单个任意的大小写字母
      演示如下:

re a-z.jpg

  • [^0-9] / [^[:digit:]]
      作用:[^0-9]和[^[:digit:]]功能一样,匹配单个非数字字符
      演示如下:

re  ^0-9.png

次数匹配相关

  • ?
      作用:匹配其前面的字符0次或1次
      演示如下:

re ?.jpg

  作用:匹配其前面的字符至少1次
  演示如下:

re +.png

  • *
      作用:匹配其前面的字符至少0次
      演示如下:

re .jpg

  • {n}
      作用:匹配其前面的字符n次
      演示如下:

re {n}.png

  • {n,}
      作用:匹配其前面的字符至少n次
      演示如下:

re {n,}.png

  • {,m}
    在原来的文本上新增一行内容以体现演示效果,文本内容如下:

re test file2.png

  作用:匹配其前面的字符至多m次,最少可以是0次
  演示如下:

re {,m}.png

  • {n,m}
      作用:匹配其前面的字符至少n次,至多m次
      演示如下:

re {n,m}.png

位置匹配相关

  • ^
      作用:其后跟着的内容需位于行首
      演示如下:

re ^.png

  • $
      作用:其前跟着的内容需位于行尾
      演示如下:

re $.png

  • \< / \b
      作用:其后跟着的内容需位于词首
      演示如下:

re .png

  • \> / \b
      作用:其前跟着的内容需位于词尾
      演示如下:

re .png

  若是将\<\>同时作用于一单词上,表明它既是词首又是词尾,那其实它就是个独立的单词,示例如下;

re   .png

  • \B
      作用:匹配非词首或非词尾的内容(具体看它放在单词前还是后)
      演示如下:

re .png

分组和后向引用

  修改了演示文件以便于展示效果,新的演示文件如下:

re test file3.png

  • ()
      作用:分组内部的内容为一个整体可嵌套使用
      演示如下:

re ().png

  • \x
      作用:后向引用分组,匹配分组x相同的内容
      演示如下:

re .png

其它

  • \
      作用:转义符
      演示如下:

re png

  注:对需要转义的字符进行转义时,加上\即可,但若是对\本身进行转义,则需要使用''单引号而非双引号。

  • |
      作用:表示
      演示如下:

re |.png

  • .*
      作用:类似通配符,可匹配任意字符的任意内容
      演示如下:

re ..png

  • ^$
      作用:表示空行
      演示如下:

re ^$.png

du

  功能:查询磁盘目录下文件的大小 disk usage
  常用方式:

1
2
3
du -h
查询当前目录下(递归查询)文件的大小,最后输出目录总大小,会以K,M,G的格式写明文件大小。
human readable
1
2
du -s
查询当前目录下文件的总计大小,只输出总文件大小。 summarize

df

  功能:查询文件系统的使用情况 disk file system
  常用方式:

1
2
df -h
查询当前盘符的使用情况,以人类可读的方式输出。human readable

sort

  功能:排序(一行一行排,默认按字典序排)
  基本格式:

1
2
sort [option] file
默认升序

  option:
以下示例所用文本均为下图所示:

sort test file.png

  • -r
      作用:逆序输出 reverse
      演示如下:

sort -r.png

  • -t组合-k
      作用:-t后跟着分隔符,用以将内容划分成列;-k后跟着数字,用以指明第几列
      演示如下:

sort -t -k.png

  我们用空格作为分隔符,将其划分成三列,且取第二列作为排序的依据,当结果看起来好像排错了,其实没错,因为sort默认按照字典序排序,10<4是因为利用ASCII码比较完首个字符后,就认为4>10。可以通过后面的-n选项来用数值比较。
-t(field separator) -k(key)

  • -n
      作用:按数值大小排序,默认是字典序,会出现10<2的情况 numeric sort
      演示如下:

sort -n.png

  我们可以看到,此可第二列是按照正常的升序进行的排序。

  • -u
      作用:去除重复的行(不要求重复行相邻) unique
      演示如下:

sort -u.png

uniq

  功能:去重(去掉连续重复行),重复行需要相邻。
  基本格式:

1
uniq [option]

  此处的演示文本依旧使用sort的文本。

  option:

  • 不带option时
      作用:去除重复的行(需要借助sort来将重复文本弄成相邻的行)
      演示如下:

uniq default.png

  • -c
      作用:统计行数,置于行首 count
      演示如下:

uniq -c.png

  • -u
      作用:不打印重复的行 unique(only print unique lines)
      演示如下:

uniq -u.png

cut

  功能:打印列
  基本格式:

1
cut option file

  此处的演示文本依旧使用sort的文本。

  option:

  • -d -f
      作用:-d(delimiter)后跟着分隔符,-f后跟着数字用以选择是哪个域(field)
      演示如下:

cut -d -f.png

perl

lsmod

查看已加载在内核中的LKM(loadable kernel module)

lshw

lspci


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!