24 shell 管道命令与过滤器
- 1.管道命令的用法
- 2.使用管道命令的好处:
- 3.重定向和管道的区别
- 4.Linux管道实例
- 5.管道与重定向
- 1)管道与输入重定向
- 2)管道与输出重定向
- 6.过滤器
- 7.过滤器举栗
1.管道命令的用法
将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就形成了管道(pipe)。管道使用竖线|连接多个命令,这被称为管道符。
Linux 管道的具体语法格式如下:
command1 | command2
command1 | command2 [ | commandN... ]
当在两个命令之间设置管道时,管道符|左边命令的输出就变成了右边命令的输入。只要第一个命令向标准输出写入,而第二个命令是从标准输入读取,那么这两个命令就可以形成一个管道。
这里需要注意,command1 必须有正确输出,而 command2 必须可以处理 command1 的输出结果;而且 command2 只能处理 command1 的正确输出结果,不能处理 command1 的错误信息。
2.使用管道命令的好处:
|
命令
|
作用
|
|---|---|
|
3条命令来备份数据库 mysqldump -u root -p '123456' wiki > /tmp/wikidb.backup gzip -9 /tmp/wikidb.backup scp /tmp/wikidb.backup username@remote_ip:/backup/mysql/ |
|
|
使用管道命令 mysqldump -u root -p '123456' wiki | gzip -9 | ssh username@remote_ip "cat > /backup/wikidb.gz" |
|
3.重定向和管道的区别
乍看起来,管道也有重定向的作用,它也改变了数据输入输出的方向,那么,管道和重定向之间到底有什么不同呢?
简单地说,重定向操作符>将命令与文件连接起来,用文件来接收命令的输出;而管道符|将命令与命令连接起来,用第二个命令来接收第一个命令的输出。如下所示:
command > file
command1 | command1
4.Linux管道实例
|
|
|
输出
|
|---|---|---|
| 将 ls 命令的输出发送到 grep 命令,查看文件 log.txt 是否存在于当前目录下 |
ls | grep log.txt |
log.txt |
| 重定向管道的输出到一个文件 |
ls -al | grep log.txt >output.txt cat output.txt |
-rw-rw-r--. 1 mozhiyan mozhiyan 0 4月 15 17:26 log.txt |
| 显示按用户名排序后的当前登录系统的用户的信息 |
who | sort |
mozhiyan :0 2019-04-16 12:55 (:0) mozhiyan pts/0 2019-04-16 13:16 (:0) who 命令的输出将作为 sort 命令的输入, 所以这两个命令通过管道连接后会显示按照用户名排序的已登录用户的信息。 |
5.管道与重定向
1)管道与输入重定向
输入重定向操作符<可以在管道中使用,以用来从文件中获取输入,其语法类似下面这样:
command1 < input.txt | command2
command1 < input.txt | command2 -option | command3
|
功能
|
命令
|
输出
|
|---|---|---|
| 使用 tr 命令从 os.txt 文件中获取输入,然后通过管道将输出发送给 sort 或 uniq 等命令 |
cat os.txt
tr a-z A-Z <os.txt | sort |
|
2)管道与输出重定向
你也可以使用重定向操作符>或>>将管道中的最后一个命令的标准输出进行重定向,其语法如下所示:
command1 | command2 | ... | commandN > output.txt
command1 < input.txt | command2 | ... | commandN > output.txt
|
功能
|
命令
|
输出
|
|---|---|---|
|
使用 tr 命令将 os.txt 文件中的内容转化为大写,并使用 sort 命令将内容排序, 使用 uniq 命令去除重复的行,最后将输出重定向到文件 ox.txt.new。 |
cat os.txt
tr a-z A-Z <os.txt | sort|uniq>os.txt.new cat os.txt.new |
|
6.过滤器
过滤器可以概括为两点:
- 如果一个 Linux 命令是从标准输入接收它的输入数据,并在标准输出上产生它的输出数据(结果),那么这个命令就被称为过滤器。
- 过滤器通常与 Linux 管道一起使用。
常用的被作为过滤器使用的命令如下所示:
|
命令
|
说明
|
|---|---|
| awk | 用于文本处理的解释性程序设计语言,通常被作为数据提取和报告的工具。 |
| cut | 用于将每个输入文件(如果没有指定文件则为标准输入)的每行的指定部分输出到标准输出。 |
| grep | 用于搜索一个或多个文件中匹配指定模式的行。 |
| tar | 用于归档文件的应用程序。 |
| head | 用于读取文件的开头部分(默认是 10 行)。如果没有指定文件,则从标准输入读取。 |
| paste | 用于合并文件的行。 |
| sed | 用于过滤和转换文本的流编辑器。 |
| sort | 用于对文本文件的行进行排序。 |
| split | 用于将文件分割成块。 |
| strings | 用于打印文件中可打印的字符串。 |
| tac | 与 cat 命令的功能相反,用于倒序地显示文件或连接文件。 |
| tail | 用于显示文件的结尾部分。 |
| tee | 用于从标准输入读取内容并写入到标准输出和文件。 |
| tr | 用于转换或删除字符。 |
| uniq | 用于报告或忽略重复的行。 |
| wc | 用于打印文件中的总行数、单词数或字节数。 |
7.过滤器举栗
|
|
功能
|
命令
|
输出
|
知识点
|
|---|---|---|---|---|
|
|
功能
|
命令
|
输出
|
知识点
|
| awk与管道结合 | 查看系统中的所有的账号名称,并按名称的字母顺序排序 |
awk -F: '{print $1}' /etc/passwd | sort|head -5 |
|
-F: 以:作为分隔符,默认分隔符是空格 '{print $1}'打印第一列信息 |
| 列出当前账号最常使用的 5个命令 |
history | awk '{print $2}' | sort | uniq -c | sort -rn | head -5 |
|
uniq -c 在每列旁边显示该行重复出现的次数。 sort -rn 按照数值的大小反向排序 |
|
| 显示当前系统的总内存大小,单位为 KB |
free | grep Mem | awk '{print $2}' |
2029860 |
free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer | |
| cut 与管道命令结合 | 查看系统中登录 Shell 是/bin/bash的用户名和对应的用户主目录的信息 |
grep "bin/bash" /etc/passwd|cut -d : -f1,6 |
root:/root roaddb:/home/roaddb asample:/home/asample |
/ctc/passwd 文件用来存放用户账号的信息,文件中的每一行会记录一个账号的信息,每个字段之间用冒号分隔,第一个字段即是账号的账户名,第六个字段就是账号的主目录的路径。 |
| 查看当前机器的CPU类型 |
cat /proc/cpuinfo |grep name|cut -d : -f 2|uniq |
Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz | ||
| 查看当前目录下的子目录数 |
ls -l|cut -c 1|grep d|wc -l |
4 | 命令cut -c 1是截取每行的第一个字符 |
|
| grep命令 | 查看系统日志文件中的错误信息 |
grep -i "error:" /var/log/messages | less |
grep -iv [指定字条串] [文件] 在文件中搜索字符串匹配的行并输出 |
|
| 查看系统中 HTTP 服务的进程信息 |
ps aux | grep httpd |
|||
| 查找我们的程序列表中所有命令名中包含关键字 zip 的命令 |
ls /bin /usr/bin | sort | uniq | grep zip |
|
||
| 查找 /etc 目录下所有包含 IP 地址的文件 |
find /etc -type f -exec grep '[0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*' {} \; |
|||
| tar命令 | 复制一个目录的整体结构 |
tar cf - /home/mozhiyan | ( cd /backup/; tar xf - ) |
||
| 跨网络地复制一个目录的整体结构 |
tar cf - /home/mozhiyan | ssh remote_host "( cd /backup/; tar xf - )" |
|||
| 跨网络地压缩复制一个目录的整体结构 |
tar czf - /home/mozhiyan | ssh remote_host "( cd /backup/; tar xzf - )" |
|||
| 检査 tar 归档文件的大小,单位为字节 |
cd /; tar cf - etc | wc -c |
|||
| 检查 tar 归档文件压缩为 tar.gz 归裆文件后所占的大小 |
tar czf - etc.tar | wc -c |
|||
| 检查 tar 归档文件压缩为 tar.bz2 归裆文件后所占的大小 |
tar cjf - etc.tar | wc -c |
|||
| head 命令 | 显示 ls 命令的前 10 行输出 |
ls /usr/bin | head |
|
默认的输出行数为 10 行 |
| 显示 ls 命令的前 5 行内容。 |
ls /usr/bin | head -n 5 |
|
||
| uniq命令 | 去掉输出中重复的行 |
sort testfile | uniq |
||
| 显示输出中各重复的行出现的次数,并按次数多少倒序显示 |
sort testfile | uniq -c | sort -nr |
|||
| wc命令 | 统计当前登录到系统的用户数 |
who | wc -l |
2 | wc 命令用于统计包含在文本流中的字符数、单同数和行数 |
| 统计当前的 Linux 系统中的进程数 |
ps -ef | wc -l |
70 |
24 shell 管道命令与过滤器的更多相关文章
- linux shell 管道命令(pipe)使用及与shell重定向区别
管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandarderror 信息没有直接处理能力.然后,传递给下一个命令 ...
- 常见linux命令释义(第九天)—— Bash Shell 的操作环境Shell 中的管道命令一些管道命令
最近好懒好懒.连写文章都写不好了.于是只能写读一点书,记一点读书笔记了.太懒了,没办法.慢慢恢复自己的状态吧. 管道命令仅会处理strandard output 的内容,对于strandard err ...
- 数据流重定向和管道命令, grep, tr,sort, wc, cut,split,tee,sleep(shell 02)
主要内容 1.标准输入输出和错误 2.管道命令和 grep, tr,sort, wc, cut,split,tee,sleep 标准输入输出和错误 标准输入(stdin) 是指令数据的输入,代码为0, ...
- dirname和shell常用命令
$ cd `dirname $0` 和PWD%} 显示当前目录名称${#var} 替换为变量字符个数特殊变量$ 当前SHELL的PID? 前一个命令的退出状态! 后台执行的上 ...
- linux管道命令grep命令参数及用法详解---附使用案例|grep
功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...
- grep 和 wc命令 --- !管道命令!
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expr ession Print,表示全局正则表 ...
- (转)Hbase shell 常用命令(1)
Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ...
- Linux系统管道命令符
管道命令符“|”的作用是将前一个命令的标准输出作为后一个命令的标准输入,格式为“命令A | 命令B” 以下实例中,通过grep命令搜索关键字“/sbin/nologin”在/etc/passwd中查找 ...
- shell管道和重定向
看了前面一节:linux shell数据重定向(输入重定向与输出重定向)详细分析 估计还有一些朋友是头晕晕的,好复杂的重定向了.这次我们看下管道命令了.shell管道,可以说用法就简单多了. 管道命令 ...
随机推荐
- 【转】Jquery 使用Ajax获取后台返回的Json数据后,页面处理
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [论文阅读笔记] LouvainNE Hierarchical Louvain Method for High Quality and Scalable Network Embedding
[论文阅读笔记] LouvainNE: Hierarchical Louvain Method for High Quality and Scalable Network Embedding 本文结构 ...
- 揭秘有状态服务上 Kubernetes 的核心技术
背景 随着 Kubernetes 成为云原生的最热门的解决方案,越来越多的传统服务从虚拟机.物理机迁移到 Kubernetes,各云厂商如腾讯自研上云也主推业务通过Kubernetes来部署服务,享受 ...
- kafka之二:手把手教你安装kafka2.8.0(绝对实用)
前面分享了kafka的基本知识,下面就要对kafka进行实操,先看如何安装. kafka需要zookepper的支持,所以要安装kafka需要有zookeeper的环境,zookeeper安装请参见& ...
- Go基础结构与类型02---使用iota定义常量组
package main import "fmt" /*const ( USA = 0 China = 1 Russia = 2 Britain = 3 France = 4 )* ...
- Python+Selenium - 定位策略
一个元素定位可能会在多个地方用到,用loc变量接收元素的定位方式和相对路径.使用时再拆包(*loc) loc = (定位方式,'定位方式对应的元素路径') =>元素定位方式及路径 driv ...
- 八、数据拟合分析seaborn
本文的主要目的是记住最主要的函数,具体的用法还得查API文档. 首先导入包: 1 %matplotlib inline 2 import numpy as np 3 import pandas as ...
- PyTorch全连接ReLU网络
PyTorch全连接ReLU网络 1.PyTorch的核心是两个主要特征: 一个n维张量,类似于numpy,但可以在GPU上运行 搭建和训练神经网络时的自动微分/求导机制 本文将使用全连接的ReLU网 ...
- python_selenium_PO模式下显示等待、隐式等待封装,结合Excel读取元素可取默认等待时间配置
basepage中等待的封装 def implicitly_wait(self): self.driver.implicitly_wait(5)def wait(self): time.sleep(5 ...
- zookeeper分布式锁,解决了羊群效应, 真正的zookeeper 分布式锁
zookeeper 实现分布式锁,监听前一个节点来避免羊群效应, 思路:很简单,但是实现起来要麻烦一些, 而且我也是看了很多帖子,发现很多帖子的代码,下载下来逐步调试之后发现,看起来是对的,但在并发情 ...