Linux 实用命令

2023-11-07

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
* 管道符连接的前后两个命令,前面的命令的输出需要是标准输出,后面的命令要需要能接受标准输入
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 实用命令 的相关文章

  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • 在 C 中使用单个消息队列是否可以实现双向通信

    我希望服务器向客户端发送一些消息 并让客户端确认它 我被分配了这个任务 我可以在 C linux 中使用单个消息队列来完成它还是我需要创建两个 谢谢 是的 可以使用 sysV 消息队列来做到这一点 从您之前的问题来看 您正在使用该队列 您可
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 无需超级用户即可在 Linux 中打开 RAW 套接字

    我必须编写一个在 Linux 上运行的 ping 函数 语言是 C 所以 C 也可以 在网上搜索并查看源代码ping命令 事实证明我应该创建一个原始套接字 icmp sock socket AF INET SOCK RAW IPPROTO
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 为什么 fopen("any_path_name",'r') 不给出 NULL 作为返回值?

    在调试一些代码时 我得到如下内容 include
  • 并行运行 shell 脚本

    我有一个 shell 脚本 打乱大型文本文件 600 万行和 6 列 根据第一列对文件进行排序 输出 1000 个文件 所以伪代码看起来像这样 file1 sh bin bash for i in seq 1 1000 do Generat
  • CMake 链接 glfw3 lib 错误

    我正在使用 CLion 并且正在使用 glfw3 库编写一个程序 http www glfw org docs latest http www glfw org docs latest 我安装并正确执行了库中的所有操作 我有 a 和 h 文
  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • 配置tomat的server.xml文件并自动生成mod_jk.conf

    我在用apache 2 2 15 and tomcat6 6 0 24 on CentOS 6 4并希望使用 tomcat 服务器的功能 通过添加以下内容自动生成 mod jk conf 文件
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • 我什么时候应该编写 Linux 内核模块?

    有些人出于某种原因想要将 Linux 中的代码从用户空间移动到内核空间 很多时候 原因似乎是代码应该具有特别高的优先级 或者只是 内核空间更快 这对我来说似乎很奇怪 我什么时候应该考虑编写内核模块 有一套标准吗 我怎样才能激励将代码保存在
  • 如何让 Node.js 作为后台进程运行并且永不死掉?

    我通过 putty SSH 连接到 linux 服务器 我尝试将其作为后台进程运行 如下所示 node server js 然而 2 5 小时后 终端变得不活动 进程终止 即使终端断开连接 我是否也可以使进程保持活动状态 Edit 1 事实
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • SOCKS 5协议详解  

    SOCKS 5协议详解 笔者在实际学习中 由于在有些软件用到了socks5 如oicq icq等 对其原理不 甚了解 相信很多朋友对其也不是很了解 于是仔细研读了一下rfc1928 觉得有必要 译出来供大家参考 1 介绍 防火墙的使用 有效
  • python生成复合饼图

    可以通过matplotlib实现 from matplotlib patches import ConnectionPatch 制画布 fig plt figure figsize 9 5 0625 ax1 fig add subplot
  • android问题及解决方案,Android开发中常见问题及解决方案

    Android开发中常见问题及解决方案 1 什么是Activity activity是Android组件中最基本也是最为常见用的四大组件之一 Android四大组件有Activity活动 Service服务 Content Provider
  • IDEA如何快速引入局部变量

    alt 回车就行
  • 795. 前缀和

    文章目录 Question Ideas Code Question 输入一个长度为 n 的整数序列 接下来再输入 m 个询问 每个询问输入一对 l r 对于每个询问 输出原序列中从第 l 个数到第 r 个数的和 输入格式 第一行包含两个整数
  • [1198]ApkScan-PKID 查壳工具

    文章目录 一 关于壳的介绍 二 关于壳的技术资料 三 APKSCAN PKID的下载 四 APKSCAN PKID的使用 总结 脱壳工具 一 关于壳的介绍 1 壳的功能 壳最本质的功能就是实现加载器 壳是指在一个程序的外面再包裹上另外一段代
  • 计算机2.0培训心得,信息技术2.0心得体会

    以下为 信息技术2 0心得体会 的无排版文字预览 完整格式请下载 下载前请仔细阅读文字预览以及下方图片预览 图片预览是什么样的 下载的文档就是什么样的 信息技术培训2 0学习心得体会 今年11月有机会参加信息技术培训 对我各方面的能力有了很
  • 基于SpringBoot和微信小程序的点餐系统(毕业设计论文)

    声明 本篇博客是我本科毕设论文 虽然研究课题比较普遍且较为简单 但已达到毕设要求 考虑到以后的查重问题 顾本篇博客将采用论文局部图片的形式展示 有想研究并想作为毕设的童鞋也可以拿来参考 需要源码 调试 论文 答辩材料见文章末尾哦 论文目录
  • 如何在jupyter notebook下导入模块

    在jupyter notebook下编写的脚本文件的后缀是 ipynb 比如我写了一个名为Test ipynb的模块 如果直接按照python的导入方式直接导入的时候会出现 正确的做法是先将 ipynb导成 py的格式 然后再调用就OK了
  • cmd复制文件

    cmd复制文件 复制文件夹 自动覆盖 xcopy E I Y D GitHub Qriket lucky SPA dist D GitHub lucky www 复制单个文件 自动覆盖 copy Y D GitHub lucky platf
  • 路由器】路由器3G类异常,即3G业务不定时中断,造成过一段时间后业务可以自动恢复,或者必须通过重启路由器等操作业务才能够恢复

    1 故障现象 3G路由器下的业务出现不定时中断的现象 过一段时间后业务可以自动恢复 或者必须通过重启路由器等操作业务才能够恢复 2 故障可能原因 1 3G客户端或LNS设备运行异常 2 3G客户端或LNS相关参数配置不合理 3 3G客户端和
  • BP神经网络算法推导(包含输出层和隐层)

    你是否也有疑问 在神经网络的训练过程中 随着多样本的训练 我们的参数是如何进行调节的呢 答案自然就是BP算法 Error Back Propagation 反向传播时 将输出误差 期望输出与实际输出之差 按原通路反传计算 通过隐层反向 直至
  • Anaconda+TensorFlow安装和Pycharm配置深度学习环境详细教程!

    配置Anaconda Pycharm学习环境 大体分为三步骤 一 Anaconda的下载与安装 二 PyCharm的下载与安装 三 Anaconda Pycharm配置环境 下载好的资源链接 链接 https pan baidu com s
  • 分布式 datax 架构设计

    1 背景 DataX 是一个异构数据源离线同步工具 致力于实现包括关系型数据库 MySQL Oracle 等 HDFS Hive ODPS HBase FTP 等各种异构数据源之间稳定高效的数据同步功能 解决异构数据源同步问题 DataX
  • ElementUI中文官方文档

    组件 Element
  • day1 牛客TOP100:BM 1-10 链表

    文章目录 链表 BM1 反转链表 BM2 链表内指定区间反转 BM3 链表中的节点每k个一组翻转 BM4 合并两个排序的链表 BM5 合并k个已排序的链表 BM6 判断链表中是否有环 BM7 链表中环的入口结点 BM8 链表中倒数最后k个结
  • 一个轻量级的java jdbc,SQL模式,支持多数据源,jdbc-0.0.5

    运行条件 JDK 1 7 特性 轻量 高效 无复杂配置 直接手写SQL 可配置多数据源 支持多数据源事务 支持返回多结果集 使用方式
  • RT-Thread 应用篇 — 在STM32L051上使用 RT-Thread (二、无线温湿度传感器 之 CubeMX配置)

    应用篇 在STM32L051上使用RT Thread 第二篇 使用STM32CubeMX 进行对应外设配置 同时做一些简单测试 目录 前言 一 使用 STM32CubeMX 配置 1 1 基础步骤 1 2 修改配置 1 3 踩坑记录 二 初
  • vue中element下拉框数据有值,但是选中后框里不显示

    问题图片 问题 下拉选择能打印到数据 但是选中后框里不显示值 原因 出现这个问题 是因为下拉框数据是v for接口请求来的数据 因为数据层次太多 render函数没有自动更新 解决方法 在chenge事件里手动强制刷新值 上代码
  • Linux 实用命令

    1 grep 命令 grep 命令用来查找文本 这里是最常用的几个操作例子 查找文件1 txt中含有 hello 字符串的行 grep hello 1 txt 使用正则表达式查找文件1 txt中含有数字的行 grep E d 1 txt 查