多命令协作:管道及重定向

在Linux中,大多数命令都很简单,每个命令往往只实现一个或几个很简单功能.

我们可以通过将不同功能的命令组合起来一起使用,达到完成某个复杂功能的目的

CLI下几乎所有的命令返回的都是纯文本,纯文本形式的数据又是绝大多数命令的输入格式

命令行shell的数据流有以下定义 :

名称

说明

编号

默认

STDIN

标准输入

0

键盘

STDOUT

标准输出

1

终端

STDERR

标准错误

2

终端

命令通过STDIN接收参数,通过STDOUT输出结果或STDERR输出错误

通过管道和重定向我们可以控制CLI的数据流

分类

关键字

定义

例子

重定向

>

将输出重定向到文件(覆盖)

echo 'aaa' > fileName

重定向

>>

将输出重定向到文件(追加)

echo 'aaa' >> fileName

重定向

2>

将错误重定向到文件(覆盖)

ls nothere 2> fileName

重定向

2>&1

将错误和输出结合重定向到文件

ls nothere 2>&1 fileName

重定向

<

重定向输入

grep admin < /etc/passwd

管道

|

将一个命令的输出作为另一个命令的输入

ls -l | grep aaa

文本处理

文件浏览

cat 查看文件内容

more 以翻页形式查看文件内容(只能向下翻页)

less 以翻页形式查看文件内容(能上下翻页)

head 查看文件的开始10行(或指定行数)

tail 查看文件的结束10行(或指定行数)

基于关键字搜索

命令grep用以基于关键字搜索文本

例如

#在/etc/passwd 中搜索'aaaa'项

grep 'aaaa' /etc/passwd

#管道传值搜索

find / -user admin | grep Video 等于 grep Video (find的输出结果)

-i 在搜索时忽略大小写

-n 显示结果所在行数

-v 输出不带关键字的行,排除选项

-Ax 在输出的时候包含结果所在行之后的指定行数

-Bx 在输出的时候包含输出结果前几行

基于列处理文本

命令cut用以基于列处理文本内容

例如

#修剪指定列,显示passwd到位第1列,指定分隔符是‘:’

cut -d: -f1 /etc/passwd

#输出admin的信息,指定分隔符是:,并显示第3列

grep admin /etc/passwd | cut -d: -f3

#只显示第2到第6个字符

cut -c2-6 /etc/passwd

-d 指定分隔符

-f 指定输出列

-c 基于字符进行切割

文本统计

命令wc用以统计文本信息

-l 只统计行数

-w 只统计单词

-c 只统计字节数

-m 只统计字符数

文本排序

命令sort对文本内容进行排序

-r 进行倒序排序

-n 基于数字进行排序

-f 忽略大小写

-u 删除重复行

-t c 使用c作为分隔符分割为列进行排序

-k x 当进行基于指定字符分隔为列的排序时,指定基于那个列排序

删除重复行

命令sort -u 可以用来删除重复行

命令uniq用来删除重复的相邻行

文本比较

命令diff用以比较两个文件的区别

例如

#比较两个文件的区别

diff linux linux-new

#比较差异并生成文件

diff -u linux linux-new > final.patch

-i 忽略大小写

-b 忽略空格数量的改变

-u 统一显示比较信息[一般用以生成patch补丁文件]

拼写检查

命令aspell用以显示检查英文拼写

处理文本内容

命令tr用以处理文本内容

删除关键字

tr -d '敏感词' < linux

转换大小写

tr 'a-z' 'A-Z' < linux

搜索替换

命令sed用以搜索并替换文本

sed '正则表达式' 文件

例如

#将名为passwd文本里的cat替换成ac, g代表替换所有

sed 's/cat/ac/g' passwd

Linux入门基础&lpar;一&rpar;&colon;Linux基本操作

命令行BASH基本操作 Shell 用户不能直接操作内核,所以用户操作通过shell传递给内核 shell分为两种 : GUI 图形界面 (linux一般是GNOME) CLI 命令行界面 (linu ...

Linux入门基础 &num;9:管道及重定向

本文出自   http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...

Linux入门基础&lpar;三&rpar;&colon;Linux用户及权限基础

用户基础 用户和组 每个用户都拥有一个userid 每个用户都属于一个主组,属于一个或多个附属组 每个组拥有一个groupid 每个进程以一个用户身份运行,受该用户可访问资源限制 每个可登陆用户拥有一 ...

Linux入门基础&lpar;七&rpar;&colon;Linux软件管理基础

源代码形式 绝大多数开源软件都是直接以源代码形式发布 源代码一般会被打包成tar.gz的归档压缩文件 程序源代码需要编译成为二进制形式之后才能够运行 源代码基本编译流程 : ./configure 检 ...

Linux入门基础&lpar;四&rpar;&colon;Linux网络基本配置

网络基础 ip编址 ip编址是一个双层编址方案(网络部分和主机部分),一个ip地址标识一个主机(或一个网卡接口) 现在应用最广泛的是IPv4编址,已经开始逐渐向IPv6编址切换 IPv4地址32位长, ...

linux入门教程&lpar;五&rpar; Linux系统的远程登录

首先要说一下,该部分内容对于linux初学者来讲并不是特别重要的,可以先跳过该章节,先学下一章,等学完后再回来看这一章. Linux大多应用于服务器,而服务器不可能像PC一样放在办公室,它们是放在ID ...

Linux入门基础&lpar;六&rpar;&colon;Linux系统启动

系统启动流程 BIOS MBR : Boot Code 执行引导程序-GRUB 加载内核 执行init runlevel BIOS BIOS(basic input output system),我们 ...

Linux入门基础&lpar;二&rpar;&colon;Linux磁盘及文件管理系统

磁盘管理 fdisk分区工具 只支持MBR分区 fdisk命令只有root用户能用 fdisk -l 列出所有安装磁盘及分区信息 fdisk /dev/sda (操作磁盘,按m可列出帮助界面,常用的操 ...

Linux入门基础篇

Linux入门基础篇 Linux诞生 Linux发行版本说明 Linux官方网站 Linux内核官方网站 比较有名的Linux发行版 虚拟机(Virtual Machine),一个虚拟的系统,安装在系 ...

随机推荐

MVC开发基础

新建--项目--ASP.NET MVC 4 WEB 应用程序 MVC: M--Model  模型层     放置数据访问类,linq V--View  视图层       界面层   aspx文件.只 ...

React Ntive 学习手记

React使今年来比较热门的前端库,之所以说是库呢,因为React.js是应用于MVC中的V层, 它并不是一个完整的MVC框架,所以,我也不知称之为框架了. 不过这并不影响React的火热. 混合应用 ...

zabbix监控系列(4)之zabbix报警邮件无法发送

情况介绍 首先确保邮箱规则没有把报警邮件作为垃圾邮件拉黑了. 服务器断电重启后,发现zabbix报警邮件无法发送,断电之前是好好的,但是重启后不行了,于是查看maillog日志,发现这个错误: Hos ...

flex弹性布局

linux 管道来删除,Linux入门基础(五):Linux管道,重定向,文本处理相关推荐

  1. linux目录结构来源6,Linux入门基础 #6 Linux系统目录架构

    Linux入门基础 #6 Linux系统目录架构 /bin 即binary,用于保存各种(二进制)可执行文件. 在CLI中输入执行的命令都保存在这里. 此目录下的所有命令都是普通权限用户也可执行的. ...

  2. linux+系统优化基础,Linux入门基础(三):Linux用户及权限基础

    用户基础 用户和组 每个用户都拥有一个userid 每个用户都属于一个主组,属于一个或多个附属组 每个组拥有一个groupid 每个进程以一个用户身份运行,受该用户可访问资源限制 每个可登陆用户拥有一 ...

  3. linux ctrl+r撤销_Linux入门基础,掌握这些命令,不再做小白

    目录 基本操作 命令行操作 用户及文件权限管理 Linux目录结构及文件基本操作 2 目录路径 新建文件 复制文件 删除文件 移动文件与文件重命名 查看文件 查看文件类型 编辑文件 基本操作 命令行操 ...

  4. linux shell指令 amp,shell入门基础amp;常见命令及用法

    shell shell是一个命令解释器,实际是一个程序,/bin/bash,linux中所有的命令都由它来解释,有自己的语法 shell脚本 以.sh结尾 shell语法+linux命令 注释: 单行 ...

  5. PostgreSQL在Linux和Windows安装和入门基础教程

    StackOverflow 2022 开发者报告:总体而言,MySQL 依然是最受欢迎的的数据库.但在专业开发者群体中,PostgreSQL(46.48%)已经超越 MySQL(45.68%)夺得了第 ...

  6. linux cadence教程 pdf,cadence入门基础篇

    班主任的cadence软件 Username:eda Password:123456z l 用Virtuoso Schematic Editor工具设计原理图 启动Cadence 设计软件 在linu ...

  7. Linux 内核抓包功能实现基础(五) 常见问题解析

    之前在部门产品上开发了内核抓包模块,基于openwrt平台,通过netfilter框架实现相关功能.核心功能就是在netfilter 的PRE_ROUTING 和 POST_ROUTING链上增加两个 ...

  8. linux基础(五)----linux命令系统学习----系统管理命令

    系统管理命令:df.top.free.quota.at.lp.adduser.groupadd.kill.crontab:

  9. linux 软raid原理,RAID原理基础及Linux下软件RAID配置

    一.RAID的原理基础 在讲解RAID的原理基础之前,我们首先来了解一下传统磁盘的劣势.我们知道一台PC机种都会包含CPU.内存.主板.硬盘.网卡等硬件,影响计算机性能的组建包括:CPU.主板总线IO ...

最新文章

  1. 公钥私钥 多久过期_上传到公钥服务器的gpg公钥过期了会被删除吗?
  2. java如何做到判断一个字符串是否是数字
  3. 组合模式java怎么获取钥匙_java中组合模式详解和使用方法
  4. 【坐在马桶上看算法】算法10:二叉树
  5. 龙格库塔法和欧拉法求解微分方程的比较
  6. 2022美国大学生数学建模竞赛D题思路
  7. mysql 查看tomcat日志_查看tomcat日志
  8. 自建dnspod解析服务器,利用DNSPOD配置智能解析双线服务器
  9. python 微信发送图片失败什么原因_微信发不出去图片的4种解决方法
  10. Excel 里筛选手机号码所属运营商
  11. SPSS回归分析结果解读【来自百度知道】
  12. 微信封号推送卡包发消息方法揭秘
  13. surreal number应对不平等博弈
  14. solr mysql 增量索引_基于Solr DIH实现MySQL表数据全量索引和增量索引
  15. 华为面试题目:一头牛重800kg,一座桥承重700kg,牛如何过河?最秀回答秒过!...
  16. Hyper-V的启动(安装)(Win10系统)
  17. 优优聚电商:电商运营的日常工作
  18. MATLAB算法实战应用案例精讲-【自动驾驶】精准定位RTK(最终篇)
  19. 网络服务与配置管理——————6、Windows下V*N设置
  20. 常用软件-安装过程中的小常识

热门文章

  1. 鸿蒙安卓8,安卓VS鸿蒙第三方件切换宝典 V2.0(第一部分)
  2. linux系统鼠标左键失灵,苹果Mac笔记本触控板左键失灵原因分析与解决
  3. python之数据库的简单交互
  4. Python实现: 常用排序算法 二叉树的遍历算法
  5. Ubuntu 配置OpenCV 环境并在Qt下运行
  6. paho架构_MQTT系列最终章-Paho源码分析(三)-心跳与重连机制
  7. Git 创建远程分支并提交代码到远程分支
  8. java url 传值乱码问题_解决URL传递中文时出现乱码问题(三种解决方法)
  9. 使用Preact,Unistore和Preact路由器构建SSR应用
  10. Turtlebot 3 rplidar bringup