iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux管道命令怎么使用
  • 931
分享到

Linux管道命令怎么使用

2023-06-27 12:06:04 931人浏览 独家记忆
摘要

本文小编为大家详细介绍“linux管道命令怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux管道命令怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。管道是一种最基本的IPC机制,作用于有血缘

本文小编为大家详细介绍“linux管道命令怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux管道命令怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。

Linux管道命令怎么使用

管道命令

管道命令使用|作为界定符号,管道命令与上面说的连续执行命令不一样。

  • 管道命令仅能处理standard output,对于standard error output会予以忽略。 less,more,head,tail...都是可以接受standard input的命令,所以他们是管道命令 ls,cp,mv并不会接受standard input的命令,所以他们就不是管道命令了。
  • 管道命令必须要能够接受来自前一个命令的数据成为standard input继续处理才行。

第一个管道命令

$ ls -al /etc | less

通过管道将ls -al的输出作为 下一个命令less的输入,方便浏览。

Linux管道命令怎么使用
img

管道命令的处理图

选取命令:cut.grep
  • **cut:**从某一行信息中取出某部分我们想要的信息。

cut -d '分隔字符' -f field // 用于分隔字符``cut -c 字符范围``[参数说明]``-d : 后面接分隔字符,通常与 -f 一起使用``-f : 根据-d 将信息分隔成数段,-f 后接数字 表示取出第几段``-c : 以字符为单位取出固定字符区间的信息
栗子1:打印/etc/passwd文件中以:为分隔符的第1个字段和第6个字段分别表示用户名和家目录[root@izuf6i29flb2df231kt91hz /]# cat etc/passwd | cut -d ':' -f 1,6root:/rootbin:/bindaemon:/sbinadm:/var/admlp:/var/spool/lpd...栗子2:打印/etc/passwd文件中每一行的前10个字符:[root@izuf6i29flb2df231kt91hz /]# cat /etc/passwd | cut -c 1-10root:x:0:0bin:x:1:1:daemon:x:2adm:x:3:4:lp:x:4:7:l...

*ps:cut在处理多空格相连的数据时,比较吃力。*

  • **grep:**分析一行信息,如果其中有我们需要的信息,就将该行拿出来

grep [-acinv] [--color=auto] '查找字符串' filename``[参数]``-a : 将binary文件以text文件的方式查找数据``-c : 计算找到 '查找字符串'的次数``-i : 忽略大小写的不同``-n : 输出行号``-v : 反向选择,显示没有查找内容的行``--color=auto : 将找到的关键字部分加上颜色显示
栗子3:取出含有 fanco 的/etc/passwd文件的行[root@izuf6i29flb2df231kt91hz /]# cat etc/passwd | grep -n -c 'fanco'1[root@izuf6i29flb2df231kt91hz /]# cat etc/passwd | grep -n 'fanco'23:fanco:x:1001:1001::/home/fanco:/bin/bash[root@izuf6i29flb2df231kt91hz /]# cat etc/passwd | grep -n -v 'fanco'1:root:x:0:0:root:/root:/bin/bash2:bin:x:1:1:bin:/bin:/sbin/nologin3:daemon:x:2:2:daemon:/sbin:/sbin/nologin4:adm:x:3:4:adm:/var/adm:/sbin/nologin5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin...
Linux管道命令怎么使用
img

加上–color参数,好像不加默认也有颜色

排序命令:sort,wc,uniq

sort

sort [-fbMnrtuk] [file or stdin]``[参数]``-f :忽略大小写的差异,例如A 与a 视为编码相同``-b :忽略最前面的空格部分``-M :以月份的名字来排序,例如JAN, DEC 等等的排序方法``-n :使用『纯数字』进行排序默认是以文字型态来排序的)``-r :反向排序``-u :就是uniq ,相同的资料中,仅出现一行代表``-t :分隔符号,预设是用[tab] 键来分隔``-k :以那个区间(field) 来进行排序的意思
栗子4:对/etc/passwd的账号进行排序[root@izuf6i29flb2df231kt91hz /]# cat /etc/passwd | sortadm:x:3:4:adm:/var/adm:/sbin/nologinbin:x:1:1:bin:/bin:/sbin/nologinchrony:x:998:996::/var/lib/chrony:/sbin/nologin...通过/etc/passwd 第5列来进行排序[root@izuf6i29flb2df231kt91hz /]# cat etc/passwd | sort -t ':' -k 3root:x:0:0:root:/root:/bin/bashfanco:x:1001:1001::/home/fanco:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologinbin:x:1:1:bin:/bin:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologin这里排序还是按照文字进行排序的,切换成数字排序[root@izuf6i29flb2df231kt91hz /]# cat etc/passwd | sort -t ':' -k 3 -nroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologiNLP:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  • uniq

uniq [-ic]``[参数]``-i :忽略大小写的不同``-c :进行计数
栗子5使用 last 取出历史登录信息的账号,排序,去重[root@izuf6i29flb2df231kt91hz /]# last | cut -d ' ' -f 1 | sort | uniq -c     1     7 reboot    19 root     1 wtmp
  • wc

wc [-lwm]``[参数]``-l :仅列出行``-w :仅列出多少字(英文单字)``-m :多少字符
栗子6查看etc/passwd中有多少账号[root@izuf6i29flb2df231kt91hz /]# cat /etc/passwd | wc -l23计算最近登录系统的人次[root@izuf6i29flb2df231kt91hz /]# last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l2查看某个文件的行数 字数 字符数[root@izuf6i29flb2df231kt91hz /]# cat etc/passwd | wc    23      32     997
双向重定向命令:tee
  • tee:

    在数据流的处理过程中将某段信息保存下来,使其既能输出到屏幕又能保存到某一个文件中。

    Linux管道命令怎么使用
    img

    tee的工作流程.png

tee [-a] file``[参数]``-a : 以累加的方式,将数据加入file中
栗子7查询最近用户登录情况,并将其保存到文件中[root@izuf6i29flb2df231kt91hz /]# last | tee info | cut -d ' ' -f 1root...[root@izuf6i29flb2df231kt91hz /]# less inforoot     pts/0        112.28.181.159   Sun Jul  1 14:28   still logged in  root     pts/0        112.28.181.159   Sun Jul  1 14:24 - 14:27  (00:03)    root     pts/0        112.28.181.159   Sun Jul  1 13:19 - 14:24  (01:04)    root     tty1                          Sun Jul  1 12:46   still logged in

如果tee后接的文件已存在,内容会被覆盖掉,加上 -a参数则会累加

字符转换命令:tr,col,join,paste,expand
  • **tr:**用来删除一段信息当中的文字,或者进行文字信息得替换

tr [-ds] set``[参数]``-d : 删除信息当中的set1这个字符串``-s : 替换掉重复的字符
栗子8将上一步生成的info 文件删除掉所有的 root删除前[root@izuf6i29flb2df231kt91hz /]# cat inforoot     pts/0        112.28.180.86    Thu May 10 18:01 - 18:12  (00:11)    reboot   system boot  3.10.0-693.2.2.e Fri May 11 02:00 - 16:31 (51+14:30)  删除后[root@izuf6i29flb2df231kt91hz /]# cat info | tr -d 'root'      ps/0        112.28.180.86    Thu May 10 18:01 - 18:12  (00:11)    eb   sysem b  3.10.0-693.2.2.e Fi May 11 02:00 - 16:31 (51+14:30)  删除时并不是只删除连续的字符,reboot也被删除掉了root部分除去dos文件留下来的^M符号$ cat /root/passwd | tr -d '\r' > /root/passwd.linux^M可以用\r替代
  • col

col [-xb]``[参数]``-x : 将tab键换成对等的空格键``-b : 在文字内有反斜杠(/)时,仅保留反斜杠最后接的那个字符
Linux管道命令怎么使用
img
栗子9将上图中的^I换成空格键[root@izuf6i29flb2df231kt91hz /]# cat info | col -x | cat -A | more       root     pts/0        112.28.181.159   Sun Jul  1 14:28   still logged in$

col经常被用于将man page转存为纯文本文件

  • **join:**主要讲两个文件有相同数据的一行,相同字段放在前面

join [-ti12] file1 file2``[参数]``-t : join 默认以空格符分隔数据,并且对比第一个字段的数据 ,如果两个文件相同,则将两条数据连成一行``-i : 忽略大小写的差异``-1 : 说明第一个文件通过那个字段来进行分析``-2 : 说明第二个文件通过那个字段来分析
栗子10将/etc/passwd 与  /etc/shadow 相关数据整合成一列[root@izuf6i29flb2df231kt91hz /]# head -3 /etc/passwd /etc/shadow==> /etc/passwd  /etc/shadow $6$RNGEziM7$2e/EJd3hThS8TMQHSgDIfeDf7dJUG1dbJ0ik1GoybGYmLGZL.sHNv1Ltb4.1HUksxTI0Cs3PJw5g/YirSImKg1:17643:0:99999:7:::bin:*:17110:0:99999:7:::daemon:*:17110:0:99999:7:::[root@izuf6i29flb2df231kt91hz /]# join -t ':' /etc/passwd /etc/shadowroot:x:0:0:root:/root:/bin/bash:$6$RNGEziM7$2e/EJd3hThS8TMqHSgDIfeDf7dJUG1dbJ0ik1goybGYmLGZL.sHNv1Ltb4.1HUksxTI0Cs3PJw5g/YirSImKg1:17643:0:99999:7:::bin:x:1:1:bin:/bin:/sbin/nologin:*:17110:0:99999:7:::daemon:x:2:2:daemon:/sbin:/sbin/nologin:*:17110:0:99999:7:::将etc/passwd 按:分隔的第4个字段 与 etc/group的第3个字段 比较,如果相同,则将他两同行数据放在一起[root@izuf6i29flb2df231kt91hz /]# join -t ':' -1 4 /etc/passwd -2 3 /etc/group0:root:x:0:root:/root:/bin/bash:root:x:1:bin:x:1:bin:/bin:/sbin/nologin:bin:x:2:daemon:x:2:daemon:/sbin:/sbin/nologin:daemon:x:4:adm:x:3:adm:/var/adm:/sbin/nologin:adm:x:join: /etc/passwd:6: is not sorted: sync:x:5:0:sync:/sbin:/bin/sync7:lp:x:4:lp:/var/spool/lpd:/sbin/nologin:lp:x:
  • paste:直接将两个文件两行贴在一起,中间以[tab]键隔开

paste [-d] file1 file2``[ 参数]``-d : 后面可以接分隔字符,默认以[tab]来分隔的``- : 如果file部分写成-,表示接受standard input数据的意思
栗子11[root@izuf6i29flb2df231kt91hz /]# paste info info2   root     pts/0        112.28.181.159   Sun Jul  1 14:28   still logged in       root     pts/0        112.28.181.159   Sun Jul  1 14:28   still logged in  root     pts/0        112.28.181.159   Sun Jul  1 14:24 - 14:27  (00:03)        root     pts/0        112.28.181.159   Sun Jul  1 14:24 - 14:27  (00:03)    root     pts/0        112.28.181.159   Sun Jul  1 13:19 - 14:24  (01:04)        root     pts/0        112.28.181.159   Sun Jul  1 13:19 - 14:24  (01:04)
  • ***expand:**把tab键转为空格键

expand [-t] file [参数] “ -t : 后面接数字,一般,一个tab可以用8个空格代替,可以自行定义代表几个空格

栗子12[root@izuf6i29flb2df231kt91hz /]# cat info | expand -3 info  root     pts/0        112.28.181.159   Sun Jul  1 14:28   still logged in  root     pts/0        112.28.181.159   Sun Jul  1 14:24 - 14:27  (00:03)    root     pts/0        112.28.181.159   Sun Jul  1 13:19 - 14:24  (01:04)    root     tty1                          Sun Jul  1 12:46   still logged in
切割命令:split

split:顾名思义,讲一个大文件依据文件大小或行数切割成为小文件

split [-bl] file prefix``[参数]``-b : 后面可接欲切割文件的大小,可加单位,例如b,k,m等``-l : 以行数来进行切割``PREFIX : 代表前导符,可作为切割文件的前导文字
栗子$ split -b 300K /etc/passwd将ls -al输出文件  按10行分成一个新的文件[root@izuf6i29flb2df231kt91hz /]# ls -al / | split -l 10 - lsrrot[root@izuf6i29flb2df231kt91hz /]# lsb    boot  dev  home  info2  lib64       lsrrotaa  lsrrotac  mnt  opt   root  sbin  sys  usrbin  c     etc  info  lib    lost+found  lsrrotab  media     n    proc  run   srv   tmp  var[root@izuf6i29flb2df231kt91hz /]# cd /[root@izuf6i29flb2df231kt91hz /]# lsb    boot  dev  home  info2  lib64       lsrrotaa  lsrrotac  mnt  opt   root  sbin  sys  usrbin  c     etc  info  lib    lost+found  lsrrotab  media     n    proc  run   srv   tmp  var[root@izuf6i29flb2df231kt91hz /]# wc -l lsrrot* 10 lsrrotaa 10 lsrrotab  9 lsrrotac 29 total

读到这里,这篇“Linux管道命令怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网操作系统频道。

--结束END--

本文标题: Linux管道命令怎么使用

本文链接: https://www.lsjlt.com/news/310691.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux管道命令怎么使用
    本文小编为大家详细介绍“Linux管道命令怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux管道命令怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。管道是一种最基本的IPC机制,作用于有血缘...
    99+
    2023-06-27
  • Linux管道命令怎么用
    这篇文章将为大家详细讲解有关Linux管道命令怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。管道命令能够将前一个命令的输出作为后一个命令的输入,只保留我们需要的信息,管道命令只能处理通过前一个命令传...
    99+
    2023-06-28
  • Linux的管道命令怎么用
    这篇文章主要介绍“Linux的管道命令怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux的管道命令怎么用”文章能帮助大家解决问题。管道是一种多个进程之间进行通信机制,因为管道传输数据具有...
    99+
    2023-06-28
  • linux命令管道符如何使用
    在Linux中,命令管道符(|)用于将一个命令的输出作为另一个命令的输入。管道符的使用方法如下:command1 | command...
    99+
    2023-09-29
    Linux
  • linux中shell管道命令pipe怎么用
    这篇文章主要介绍了linux中shell管道命令pipe怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出...
    99+
    2023-06-13
  • 怎么在CMD命令行中使用管道命令
    本篇文章为大家展示了怎么在CMD命令行中使用管道命令,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、什么是管道命令  管道命令能够将一个命令的执行结果经过筛选,只保留我们需要的信息。  如 dir...
    99+
    2023-06-08
  • 如何在LINUX中使用管道命令
    如何在LINUX中使用管道命令?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。打开LINUX,我们可以选用UBUNTU操作系统。找到左边的TERMINAL,并且打开窗口。|前...
    99+
    2023-06-13
  • Linux管道命令有什么作用
    这篇文章主要讲解了“Linux管道命令有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux管道命令有什么作用”吧! ...
    99+
    2023-02-06
    linux
  • 如何使用linux shell 管道命令及管道命令与shell重定向区别
    这篇文章主要介绍“如何使用linux shell 管道命令及与shell重定向区别”,在日常操作中,相信很多人在如何使用linux shell 管道命令及与shell重定向区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-09
  • Linux 命令 管道 缓冲区
    这是王工的一个问题.MySQL监控指标.使用 mysqladmin 每秒间隔获取信息, 将信息格式化后输出文件.获取信息和格式化的命令   mysqladmin -uroot -proot&...
    99+
    2023-06-06
  • Linux系统中管道命令是什么
    这篇文章给大家分享的是有关Linux系统中管道命令是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。管道命令是指处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后,传递给下一个命令,作...
    99+
    2023-06-28
  • Linux管道命令该如何理解
    这期内容当中小编将会给大家带来有关Linux管道命令该如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 示例假设我们想要知道 /etc/ 底下有多少文件,那么可以利用 ls /etc 来查...
    99+
    2023-06-28
  • Linux中的管道和命名管道有什么用
    小编给大家分享一下Linux中的管道和命名管道有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在 Linux 中,pipe 能让你将一个命令的输出发送给另一...
    99+
    2023-06-16
  • Linux的blkid命令命令怎么使用
    这篇文章主要介绍“Linux的blkid命令命令怎么使用”,在日常操作中,相信很多人在Linux的blkid命令命令怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux的blkid命令命令怎么使用...
    99+
    2023-06-28
  • 怎么使用Linux命令–du
    这篇文章主要为大家展示了“怎么使用Linux命令–du”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么使用Linux命令–du”这篇文章吧。du(disk usage)功能说明:显示目录或文件...
    99+
    2023-06-09
  • Linux more命令怎么使用
    这篇文章主要介绍了Linux more命令怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux more命令怎么使用文章都会有所收获,下面我们一起来看看吧。Linux常用命令more 命令类似 ca...
    99+
    2023-06-28
  • Linux e2label命令怎么使用
    本篇内容介绍了“Linux e2label命令怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!语法 e2label(参数)参...
    99+
    2023-06-28
  • Linux hostnamectl命令怎么使用
    这篇文章主要介绍“Linux hostnamectl命令怎么使用”,在日常操作中,相信很多人在Linux hostnamectl命令怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux hostn...
    99+
    2023-06-28
  • Linux hostname命令怎么使用
    这篇“Linux hostname命令怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux hostname命令...
    99+
    2023-06-28
  • Linux grub命令怎么使用
    这篇文章主要介绍了Linux grub命令怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux grub命令怎么使用文章都会有所收获,下面我们一起来看看吧。grub多重引导程序grub的命令行she...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作