• Linux 实用命令


    1、grep 命令  

    grep 命令用来查找文本,这里是最常用的几个操作例子:

    * 查找文件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.xt

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

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

    2、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

     3、sed 命令

     sed 命令可以用来替换文本行、删除文本行,例子如下:

    * 查找并替换每行第一个"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

     4、lsof 命令  

     命令 lsof 有很多选项,

    可以用来查看“文件打开的进程”、“进程打开的文件”,“进程打开的TCP或者UDP端口”,“占用了某个TCP或者UDP端口的进程”等。

    最常用的有如下几个:

    * -a:列出打开文件存在的进程;

    * -c<进程名>:列出指定进程所打开的文件;

    * -d<文件号>:列出占用该文件号的进程;

    * -p<进程号>:列出指定进程号所打开的文件;

    * -i<条件>:列出符合条件的进程(协议、:端口、 @ip )

    lsof 经常被用来诊断服务端端口占用情况,进程打开文件等,例子如下:

    * 某一个HTTP服务无法启动,例如提示端口8888已被占用,此时可以用:lsof -i :8888查看哪个进程占用了8888端口

    * 列出进程620所打开的文件:lsof -p 620

    * 监听tcp链接进程信息:lsof -i tcp

     5、df 和 du 命令  

    命令 df 和 du 配合用来查看空间占用情况。

    * df 命令用来查看磁盘的空间占用情况

    * 其中选项-h表示以K,M,G为单位,提高信息的可读性

    * du 命令用来查看目录的空间占用情况,默认会统计到所有子目录

    * 其中选项-h表示以K,M,G为单位,提高信息的可读性

    * 其中选项-s表示只显示统计汇总信息

    这两个命令都有很多选项,常用的例子是:

    * 查看系统磁盘的空间占用情况:df -h

    * 查看指定目录的空间占用情况:du /var/ -h

    * 查看指定目录的空间占用情况,只显示汇总信息:du /var/ -sh

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

     6、netstat 命令  

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

    首先,指定查看的范围选项:

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

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

    其次,指定查看的协议类型:

    * -t 选项表示tcp

    * -u 选项表示udp

    Linux 的大多数命令行选项可以组合,上述两个维度组合后有多种可能:

    * 查看所有 socket 状态:netstat -a

    * 查看所有 tcp socket 状态:netstat -at

    * 查看所有 udp socket 状态:netstat -au

    * 查看所有监听中的 socket 状态:netstat -l

    * 查看所有监听中的 tcp socket 状态:netstat -lt

    * 查看所有监听中的 udp socket 状态:netstat -lu

    7、curl 和 wget 命令   

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

    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

    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","ppwd":"..."}' https://example.net/login,两个-H参数指定HTTP请求头。 -X POST 指定了请求方法为POST,-d指定了POST请求的参数,这里是一个JSON字符串。

    8、管道  

     管道是unix哲学的核心之一,Linux管道设计源自Unix。通过管道(pipeline)可以组合多个命令来完成一系列的操作。

    * 通过 管道符号 "|",可以组合多个管道命令。
    * 例如,使用cat命令读取全文,接着使用grep命令过滤出含有字符串"hello"的行: cat 1.txt|grep hello
    * 管道符连接的前后两个命令,前面的命令的输出需要是标准输出,后面的命令要需要能接受标准输入
  • 相关阅读:
    go 视频解码 -- 笔记
    <基础训练>旅行家的预算(贪心算法)
    VSCode里使用条件断点(基于GDB)
    本地link跳转ok 部署后nginx报错跳404页面的原因及解决办法
    计算机毕业设计Java小动物领养网站(源码+系统+mysql数据库+Lw文档)
    基于Vue+ELement搭建动态树与数据表格实现分页
    一篇文章教你如何在项目中正确使用@DateTimeFormat注解和@JsonFormat注解
    基于混沌权重和精英引导的鲸鱼优化算法-附代码
    FLUME 安装配置及使用示例
    ElasticSearch - 在 微服务项目 中基于 RabbitMQ 实现 ES 和 MySQL 数据异步同步(考点)
  • 原文地址:https://blog.csdn.net/IT_Boy_/article/details/126149366