Linux实用篇-实用命令

grep 命令

grep 筛选器在文件中搜索特定的字符模式,并显示包含该模式的所有行。

假设文件1.txt的文本如下:

1. hello world
2. wold hello
3. nothing is important
4. i like movie movie
hello world
wold hello
nothing is important
i like movie movie
  • 查找文件1.txt中含有"hello"字符串的行:

grep hello 1.txt
  • 使用正则表达式查找文件1.txt中含有数字的行:

grep -E "\d." 1.txt 
  • 查找文件1.txt中不包含"hello"字符串的行:

grep -v hello 1.txt
  • 查找文件1.txt中含有"movie"字符串的行以及它前面的3行:

grep movie -B 3 1.txt
  • 查找文件1.txt中含有"movie"字符串的行以及它后面的3行:

grep movie -A 3 1.txt
  • 查找文件1.txt中含有"4."字符串的行以及它前后3行:

grep 4. -C 3 1.txt

awk 命令

awk 命令可以用来过滤文本,简单理解就是对文本的每行执行命令awk指定的脚本,它的基本命令格式如下:

awk 'BEGIN{ commands } pattern{ commands } END{ commands }' file
  • BEGIN{ commands } 指定最开始执行的脚本

  • pattern{ commands } 对文件的每一行遍历,判断是否满足pattern的模式,如果满足则执行脚本

  • END{ commands } 指定最后执行的脚本

常用操作:

  • 打印“开始”,打印每行,打印“结束”:

awk 'BEGIN{ print "开始" } { print } END{ print "结束" }' 1.txt
  • 打印每行的行号:

awk '{print NR}' 1.txt
  • 打印每行的文本:

awk '{print $0}' 1.txt
  • 打印每行的第1列(默认用空格分离):

awk '{print $1}' 1.txt
  • 打印每行的最后1列(默认用空格分离):

awk '{print $NF}' 1.txt
  • 打印每行的倒数第2列(默认用空格分离):

awk '{print $(NF-1)}' 1.txt
  • 打印每行,并为每行带上行号:

awk '{print NR":",$0}' 1.txt
  • 打印含有序号的行:

awk '/\d./ {print}' 1.txt

sed 命令

sed 命令可以用来替换文本行、删除文本行。

1. hello hello world
2. wold hello hello
3. nothing is important
4. i like movie movie

hello hello world
wold hello hello

nothing is important
i like movie movie
  • 查找并替换每行第一个"hello"为"你好":

sed 's/hello/你好/' 1.txt
  • 查找替换每行中所有的"hello"为"你好":

sed 's/hello/你好/g' 1.txt
  • 删除含有"hello"的行:

sed '/hello/d' 1.txt
  • 删除第2行:

sed '2d' 1.txt
  • 删除第最后一行:

sed 'd' 1.txt
  • 删除第2行到最后一行:

sed '2,d' 1.txt

lsof 命令

lsof 经常被用来诊断服务端端口占用情况,进程打开文件等。

-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-d<文件号>:列出占用该文件号的进程;
-p<进程号>:列出指定进程号所打开的文件;
-i<条件>:列出符合条件的进程(协议、:端口、 @ip )
  • 某一个HTTP服务无法启动,例如提示端口8888已被占用,此时可以用:

lsof -i :8888 #查看哪个进程占用了8888端口
  • 列出进程620所打开的文件:

lsof -p 620
  • 监听tcp链接进程信息:

lsof -i tcp

df、du命令

配合用来查看空间占用情况。

  1. df 命令用来查看磁盘的空间占用情况,其中选项-h表示以K,M,G为单位,提高信息的可读性。

  1. du 命令用来查看目录的空间占用情况,默认会统计到所有子目录,其中选项-h表示以K,M,G为单位,提高信息的可读性,其中选项-s表示只显示统计汇总信息。

常用的例子是:

查看系统磁盘的空间占用情况:

df -h

查看指定目录的空间占用情况:

du /var/ -h

查看指定目录的空间占用情况,只显示汇总信息:

du /var/ -sh

查询指定目录下的直接子目录空间占用情况,只显示汇总信息:

du /var/*/ -sh

netstat 命令

命令netstat用来查看网络状态,选项很多,但是拆开成两个维度后就可以方便组合。

  1. 查看的范围选项:

  • -a选项表示查看所有连线中的socket

  • -l选项表示查看监听中的socket

  1. 查看的协议类型:

  • -t选项表示tcp

  • -u选项表示udp

上述两个维度组合后有多种可能:

查看所有 socket 状态:netstat -a
查看所有 tcp socket 状态:netstat -at
查看所有 udp socket 状态:netstat -au
查看所有监听中的 socket 状态:netstat -l
查看所有监听中的 tcp socket 状态:netstat -lt
查看所有监听中的 udp socket 状态:netstat -lu

curl、wget 命令

url 和 wget 命令都可以用来下载文件和在命令行下发起 http 请求

  1. wget 常用来下载文件,下载命令用例:

- 下载文件:`wget https://img-home.csdnimg.cn/images/20211024040633.png`
- 在文本文件`1.txt`里配置url列表,每行一个url地址,然后下载:`wget -i 1.txt`
- 文件比较大时,下载中断后要重新下载很麻烦,wget**支持断点续传**:`wget -c https://img-home.csdnimg.cn/images/20211024040633.png`
  1. curl 常用来测试HTTP请求,用例:

- 执行HTTP Get请求:`curl "https://cn.bing.com"`
- 假设有一个网络API是一个HTTP POST接口,请求的参数和返回的参数都指定为JSON格式,请求的JSON必须指定'user'和'password'字段,那么执行HTTP POST请求登陆,命令格式为:`curl -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{"user":"xxx","password":"..."}' https://example.net/login`,两个`-H`参数指定HTTP请求头。 `-X POST` 指定了请求方法为POST,`-d`指定了POST请求的参数,这里是一个JSON字符串。

猜你喜欢

转载自blog.csdn.net/2301_76354366/article/details/128861666