Linux常用命令总结附例子(持续补充完善)

文章目录

前言

本文章旨在总结自己工作学习中一些常用且能显著提高工作效率的Linux命令。每个命令基本都会跟着例子,且以下命令将持续维持以字典序总结。

Linux命令

awk

awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk ‘{pattern + action}’ {filenames}
其中 pattern 表示 awk 在数据中查找的内容,action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。

(1) awk ‘{print $1, $3}’ log : 输出 log 文件每行的第一列和第三列(空格间隔)
(2) awk -F ‘:’ ‘{print $1}’ log : 用指定分隔符 ‘:’ 分割每行内容,并输出每行的第一列
(3) awk ‘length>10’ log : 从 log 文件中找出长度大于10的行
(4) ls -l log | awk ‘{sum+=$5} END {print sum}’ : 计算 log 文件的大小

cat

cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

(1) cat file | grep “string” : 提取文件中的指定内容

例如有一个log文件内容如下:
Info : Meshing 1D…
Info : [ 0 %] Meshing curve 1 (Line)
Info : [ 10 %] Meshing curve 2 (Line)
Info : [ 50 %] Meshing curve 7 (Line)
Info : [100 %] Meshing curve 14 (Line)
Info : Done meshing 1D (0.000867 s)
Info : Meshing 2D…
Info : Meshing surface 1 (Plane, Frontal-Delaunay)
Info : Done meshing 2D (0.003622 s)
Info : 95 nodes 206 elements
The number of nodes: 95
The number of elements: 149
Info : Writing ‘demo.msh’…
Info : Done writing ‘demo.msh’
亦可能文件内容更多,不想打开文件,只想知道如下两行信息:
The number of nodes: 95
The number of elements: 149
则可以用如下命令:

cat log | grep “number”

则Terminal显示如下内容:
The number of nodes: 95
The number of elements: 149

(2) cat file1 file2 >& file : 合并两个文件的内容

例如有如下两个文件:
log1:
Info : Meshing 1D…
Info : [ 0 %] Meshing curve 1 (Line)
log2:
Info : Meshing 2D…
Info : Meshing surface 1 (Plane, Frontal-Delaunay)
则应用命令:

cat log1 log2 >& log

后log文件内容如下:
Info : Meshing 1D…
Info : [ 0 %] Meshing curve 1 (Line)
Info : Meshing 2D…
Info : Meshing surface 1 (Plane, Frontal-Delaunay)

(3) cat /etc/issue :查看当前系统版本

ctags . -eR * : 函数跳转

chmod

Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令。

(1) chmod 777 file :表示具有读、写和执行权限的所有用户

cut

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

(1) cat file | cut -d “:” -f 1

例如有一个log文件内容如下:
Time of solve this question is : CPU : 13.4 : User : 13.1
Time of solve this question is : CPU : 12.1 : User : 12.3
Time of solve this question is : CPU : 15.3 : User : 13.4

我们想提取CPU后的时间,则可以用如下命令:

cat log | cut -d “:” -f 3

终端显示结果为:
13.4
12.1
15.3
注:""之间只能是单字符,用以剪切,-f 后的数字则是提取第几段,自己可以尝试修改练习。

df

df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。

(1) df -h : 用以显示各磁盘使用情况

diff

diff 命令用于比较文件的差异。
diff 以逐行的方式,比较文本文件的异同处。

(1) diff log1 log2 >& log : 比较 log1 和 log2 文件的差异并将结果重定向到 log 文件

du

du(英文全拼:disk usage)命令用于显示目录或文件的大小。
du 会显示指定的目录或文件所占用的磁盘空间。

(1) du -sh * : 可以查看到当前文件夹下所有文件夹大小 等价于 du --max-depth 1 -lh
(2) du -sh ./file : 可以查看到file单独文件夹大小

find

Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

(1) find . -name ".cpp" l xargs grep “main” : 查找当前目录下(包含子目录)文件名为“.cpp”且文件内容有“main”的文件。

在这里插入图片描述

(2) find . -name “*file_name_pattern*” | xargs -n1 -I “XXX” grep -l “content_pattern” “XXX” | xargs -n1 -I “zz” rm -rf “XXX”: 查找当前目录下文件名为“*file_name_pattern*”且文件内容有“content_pattern”的文件并将该文件删除。

注: 其中“XXX” 可随意替换成任意字符串,只要三处是相同的即可。

find . -name “*file_name_pattern*” | xargs -n1 -I “XXX” grep -l “content_pattern” “XXX” | xargs rm -rf “XXX”

(3) find ./ -name “*.pattern” : 查找当前目录及其子目录下所有的 *.pattern 文件

grep

用于查找文件里符合条件的字符串

(1) grep -i pattern file :不区分大小写地搜索。默认情况区分大小写。
(2) grep pattern1 file | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
(3) grep -E ‘str1|str2’ file : 找出文件(file)中包含 str1 或者包含 str2 的行。跟下面方法等价:

a). egrep ‘str1|str2’ file
b). awk ‘/str1|str2/’ file

(4) grep -rn “pattern” ./ :查找目录下文件内容包含 pattern 关键词的所有文件

如:grep -rn “set” *
说明:
-r : 递归查找
-n : 显示行号
-R : 查找所有文件包含子目录
-i : 忽略大小写
* : 表示当前目录所有文件,也可以是某个文件名。

(5) grep -f file2 file1:看file2里面有多少行在file1里面有(比如file1里面东西比较全,file2里面东西比较少,想看file2里面有多少行在file1里面有)
(6) grep -cf file2 file1:看file2里面有多少行在file1里面有,只看数量

head

head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。

(1) head -n 3 log: 查看log文件的前3行

ll

(1) ll --full-time -lrt : 查看文件具体时间和大小并排序

ln :ln [参数] [源文件或目录] [目标文件或目录]

(1) ln -s log2022.log link2022 : 为log2022.log文件创建软链接link2022,如果log2022.log丢失,link2022将失效
(2) ln -snf [新目标目录] [软链接地址] : 修改软链接的目标目录

ls

Linux ls(英文全拼:list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。

(1) ls -l | grep “^-” | wc -l : 查看某文件夹下文件的个数
(2) ls -l | grep “^d” | wc -l : 查看某文件夹下文件夹的个数
(3) ls -lR | grep “^-” | wc -l : 查看某文件夹下文件的个数,包括子文件夹
(4) ls *.txt | wc -l : 查看当前目录下 .txt 文件的个数
# ls -l 列出文件及文件夹
# "^-" 以-开头的行 文件以-开头 文件夹以d开头
# wc -l 统计行数

lsb_release

LSB是Linux Standard Base的缩写,lsb_release命令用来显示LSB和特定版本的相关信息。

可以用 lsb_release -a 查看所有信息,或者用 cat /etc/issue查看当前linux系统。

rm -rf *

如果遇到文件无法删除可以先 chmod 777 * -R 再 rm * -rf

sed

sed 是一种在线编辑器,一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作。

(1) sed ‘2d’ log : 删除log文件的第2行
(2) sed ‘2,$d’ log : 删除log文件的第2行到末尾所有行
(3) sed -n ‘/pattern/p’ log : 搜索 log 文件中有pattern关键字的行并打印输出
(4) sed ‘/pattern/d’ log : 删除 log 文件中有pattern关键字的行,其他行输出
(5) sed ‘s/pattern/result/g’ log : 搜索 log 文件每行中有pattern的关键词并将其替换为result
(6) sed -n ‘$=’ list : 获取文件 list 共有多少行(包含空白行)

sort

sort 命令用于将文本文件内容加以排序。
sort 可针对文本文件的内容,以行为单位来排序。

(1) cat log | sort -n -k 3 : 以 log 文件中每行的第3列的数值的大小由小到大排序

在这里插入图片描述

split

(1) split -l 100 caseList list : 将 caseList 文件拆分为每个100行的块,并以 list 为前缀生成多个输出文件。

tar

tar(英文全拼:tape archive )命令用于备份文件。
tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。

(1) tar -zcvf file.tar file : 将 file 文件压缩为 file.tar
(2) tar -zxvf file.tar : 将 file.tar 文件解压缩

tail

tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

(1) tail log : 默认显示 log 文件的最后 10 行

touch

touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

(1) touch * : 把当前目录的所有文件的时间属性更新

whoami : 查看服务器登陆者

xargs

xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

(1) find . -name “option*” | xargs ls -l : 寻找文件名格式为 option* 的文件并以 ls -l 格式展示

总结

以上命令会持续补充,可以说“条条大路通罗马”,为完成一个任务可能不止一种方法,有好的方法可以完成相同的任务也欢迎大家提出宝贵的意见。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值