💻
QMMMS的笔记
博客
  • QMMMS的笔记
  • agent
    • MCP的背景、原理和开发
    • Agent 历史与背景
    • Agentic Workflows
    • 环境检查与基础工具
    • Tool Call
    • 工具与运行时的值
    • temp
    • 处理 Tool Call error
    • trick
  • algorithm
    • 线性结构
    • 二叉树
    • 图
    • 查找
    • 排序
    • 动态规划
    • 优化方法
    • 数学
    • 迁移至Java
  • computer_composition
    • 系统总线
    • 存储器
    • 输入输出系统
    • 计算机的运算方法
    • 指令系统
    • 补充
  • computer_network
    • 引入
    • 应用层
    • 传输层
    • 网络层(数据平面)
    • 网络层(控制平面)
    • 链路层
    • 常见问答
    • 实验
  • database
    • SQL实战
    • 关系代数
    • 数据库设计
    • 规范化
    • 数据库基本概念
    • 查询原理
    • 数据库恢复技术
    • 并发控制
  • dev_tools
    • Git
    • Nginx
    • Spring
    • LangChain
    • PyTorch Cheat Sheet
    • MyBatis
    • MySQL Cheat Sheet
    • MySQL 补充
    • Redis
    • Docker
    • RocketMQ
    • Chrome
  • linux
    • Linux基础命令与使用
    • 文件与权限
    • 文件与目录操作
    • 权限属性高级
    • 命令与文件的查找
    • 文件压缩和打包
    • vim编辑器
    • shell变量
    • 命令补充
    • 数据流重定向
    • 管道命令
    • shell脚本
    • 用户管理
    • 用户间交流
    • 计划任务
    • 进程管理
    • 软件管理
    • 认识系统服务
    • 运维常用命令
    • 常用命令
  • llm
    • 大规模语言模型概述
    • 分布式训练概述
    • 有监督微调概述
    • 强化学习与LLM
    • LLM评估概述
    • 大模型应用
    • 理解大模型
    • 量化
    • 预训练
    • 上下文学习
  • machine_learning
    • 引入
    • 大致正确学习
    • 一致收敛
    • 偏差还是过拟合?
    • 可学习的充要条件
    • 非均匀可学习性
    • 计算复杂性
  • mathematics
    • 概率与统计基础
    • 线性代数基础
  • operating_system
    • 操作系统基本概念
    • 进程和线程
    • 同步,互斥与死锁
    • 内存管理
    • 文件系统
    • I/O系统
    • 保护与安全
    • 《现代操作系统》
  • statistical_learning
    • 统计学习引入
    • 线性回归
    • 分类
    • 重抽样方法
    • 线性模型选择与正则化
    • 非线性模型
    • 基于树的方法
    • 支持向量机
    • 无指导学习
    • 马尔科夫链和蒙托卡罗方法简明理解
    • R语言速查
  • deep_learning
    • basic_concepts
      • 逻辑回归与损失函数
      • 神经网络
      • 正则化、预处理、权重初始化
      • 优化算法
      • 机器学习策略
      • 复习:从计算机视觉的角度
      • 卷积神经网络
      • 深度卷积网络示例
      • 计算机视觉任务
      • 循环神经网络
      • 自然语言处理任务
      • 注意力
      • Transformers 家族
      • 显卡扫盲
      • 强化学习概述
    • semi-supervise
      • 半监督学习简介
      • Consistency Regularization
      • Proxy-label Methods
      • Holistic Methods
      • Generative Models
      • Graph-Based SSL
      • Self-Supervision for SSL
      • Other SSL methods
  • programming
    • cpp
      • STL
      • C++基础
      • 内存管理
      • 面向对象
    • java
      • 环境和介绍
      • 注释
      • String
      • 面向对象思想
      • Object
      • 包
      • 访问权限修饰符
      • 初始化块
      • 接口
      • 内部类
      • 注解
      • 枚举
      • 集合框架
      • List
      • Map
      • 泛型
      • 迭代
      • IO与流
      • 序列化
      • 异常
      • Lambda
      • Stream流
      • Socket
      • 缓冲
      • 命名规范
      • 拆箱装箱
      • 值传递
      • 深拷贝
      • 反射
      • JVM
      • 并发编程基础
    • python
      • 并发编程
      • 环境管理
  • software_engineering
    • basic_concepts
      • 系统分析与设计概述
      • 规划
      • 需求分析与原型设计
      • 项目管理
      • 建模
      • 数据库设计
      • 架构
      • 配置管理
      • 测试管理
      • 安全
      • 编码原则
      • 微服务
      • 补充内容
    • software_testing
      • CMMI基础
      • PPQA与SQA
      • 软件测试基础
      • 黑盒测试
      • 白盒测试
      • 集成测试
      • 系统测试
      • 测开面试补充
由 GitBook 提供支持
在本页
  • 过滤信息
  • 排序
  • 去重
  • 统计
  • 文件分割和拼接
在GitHub上编辑
  1. linux

管道命令

通俗来讲,就是把前一个命令的标准输出作为后一个命令的标准输入处理,注意:

  • 管道命令只会处理标准输出,忽略标准错误输出

  • 命令需要有把前一个命令的标准输出作为标准输入的能力,才能使用管道

支持相关功能的命令很多,就只给例子了

过滤信息


在last命令的输出中,找到带root的行,输出前5行

[user1@qmmms ~]$ last | grep "root" | head -n 5
root     pts/0        183.210.228.179  Thu Sep  1 23:20 - down   (00:02)    
root     pts/0        183.210.228.179  Thu Sep  1 22:27 - 22:28  (00:01)    
root     pts/0        183.210.228.179  Thu Sep  1 17:13 - 17:19  (00:06)    
root     pts/0        183.210.228.179  Wed Aug 31 23:09 - down   (00:01)    
root     pts/0        183.210.228.179  Wed Aug 31 21:34 - 21:37  (00:03)    

在last命令的输出中,找到不带root的行(-v),输出行号(-n),输出最后5行

[user1@qmmms ~]$ last | grep -nv "root" | tail -n 5
124:reboot   system boot  3.10.0-1160.53.1 Wed Aug 31 13:05 - 23:11  (10:06)    
126:reboot   system boot  3.10.0-1160.53.1 Wed Aug 31 12:57 - 13:03  (00:06)    
138:reboot   system boot  3.10.0-1160.53.1 Wed Aug 31 08:57 - 12:57  (04:00)    
139:
140:wtmp begins Thu Feb 10 15:19:42 2022

当然,grep命令也支持查找文件内容

[user1@qmmms ~]$ grep "int" simple_add.cpp 
int main(){
	int n = 0;
	int num = 0;

在last命令的输出中,以空格作为分隔符(-d)切割,保留第一个位置的信息(-f),输出前3行

[user1@qmmms ~]$ last | cut -d ' ' -f 1 | head -n 3
user1
user1
user1

排序


在/etc/passwd文件内容的输出中,排序,输出前3行

[root@qmmms ~]# cat /etc/passwd | sort | head -n 3
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin

在/etc/passwd文件内容的输出中,以:作为分隔符(-t),对第三个位置(-k)位置的数据排序,不采取默认字符串的排序方式而使用纯数字的排序方式(-n),输出前3行

[root@qmmms ~]# cat /etc/passwd | sort -t ':' -k 3 -n | head -n 3
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

去重


在last命令的输出中,以空格作为分隔符(-d)切割,保留第一个位置的信息(-f),排序,去重,统计个数(-c)

[root@qmmms ~]# last | cut -d ' ' -f1 | sort | uniq -c
      1 
      1 qms
     14 reboot
     23 root
    102 user1
      1 wtmp

统计


在/etc/man_db.conf文件内容的输出中,分别统计行,字数,字符数

[user1@qmmms ~]$ cat /etc/man_db.conf | wc
    131     723    5171

文件分割和拼接


将./services文件分割为300k的子文件(-b),子文件命名为services+其他标识符

注:按照行数划分使用-l

[user1@qmmms dir_test]$ split -b 300k ./services services
[user1@qmmms dir_test]$ ll
总用量 1312
-rw-r--r-- 1 user1 basic_users 670293 9月  18 10:11 services
-rw-r--r-- 1 user1 basic_users 307200 9月  18 10:12 servicesaa
-rw-r--r-- 1 user1 basic_users 307200 9月  18 10:12 servicesab
-rw-r--r-- 1 user1 basic_users  55893 9月  18 10:12 servicesac

再拼接回来,命名为servicesback

[user1@qmmms dir_test]$ cat servicesa* >> servicesback
[user1@qmmms dir_test]$ ll
总用量 1968
-rw-r--r-- 1 user1 basic_users 670293 9月  18 10:11 services
-rw-r--r-- 1 user1 basic_users 307200 9月  18 10:12 servicesaa
-rw-r--r-- 1 user1 basic_users 307200 9月  18 10:12 servicesab
-rw-r--r-- 1 user1 basic_users  55893 9月  18 10:12 servicesac
-rw-r--r-- 1 user1 basic_users 670293 9月  18 10:12 servicesback
上一页数据流重定向下一页shell脚本

最后更新于8个月前