【Linux】管道命令

        命令执行的时候有时会输出数据,有的命令输出的数据太繁杂了。

那么我们怎么去筛选这些信息来得到我们所想要的格式?

        这就牵涉到管道命令的问题了(pipe),管道命令使用的是【|】这个界定符号。另外,管道命令与【连续执行命令】是不一样的,这点下面我们再说明。

下面我们先举一个例子来说明一下简单的管道命令

        假设我们想要知道/etc/下面有多少文件,那么可以利用Is/etc来查看,不过,因为/etc下面的文件太多,导致一口气就将屏幕塞满了,不知道前面输出的内容是啥?

        此时,我们可以通过less命令的协助:如此一来,使用Is命令输出后的内容,就能够被 less 读取,并且利用less的功能,我们就能够前后翻动相关的信息了。很方便是吧?

        我们就来了解一下这个管道命令【|】的用途吧!其实这个管道命令【|】仅能处理经由前面一个命令传来的正确信息,也就是标准输出的信息,对于标准错误并没有直接处理的能力。

那么整体的管道命令可以使用下图表示;

        在每个管道后面接的第一个数据必定是【命令】,而且这个命令必须要能够接受标准输入的数据才行,这样的命令才可为管道命令

  • 例如less、more、head、tail 等都是可以接受标准输入的管道命令,
  • 至于例如 Is、cp、mv 等就不是管道命令。因为Is、cp、mv 并不会接受来自stdin 的数据,

也就是说,管道命令主要有两个比较需要注意的地方:

  1. 管道命令仅会处理标准输出,对于标准错误会予以忽略;
  2. 管道命令必须要能够接受来自前一个命令的数据成为标准输入继续处理才行。

想一想,如果你硬要让标准错误可以被管道命令所使用,那该如何处理?

其实就是通过数据流重定向,让2>&1加入命令中,就可以让2>变成1>,了解了吗?

多说无益,让我们来玩一些管道命令吧!下面的东西对系统管理非常有帮助。

1.选取命令:cut、grep

什么是选取命令?

说穿了,就是将一段数据经过分析后,取出我们所想要的,或是经由分析关键词,取得我们所想要的那一行。

不过,要注意的是,一般来说,选取信息通常是针对【一行一行】来分析的,并不是整篇信息分析

下面我们介绍两个很常用的信息选取命令:

1.1.cut

cut 不就是【切】吗?

没错,这个命令可以将一段信息的某一段给它【切】出来,处理的信息是以【行】为单位,下面我们就来谈一谈:

  1. cut  -d   '分隔字符'   -f     fields<==用于有特定分隔字符。
  2. cut   -c    字符区间                   <==用于排列整齐的信息。

选项与参数:

  • -d:后面接分隔字符,与-f一起使用;
  • -f:根据-d的分隔字符将一段信息划分成为数段,用-f 取出第几段的意思;
  • -c:以字符(characters)的单位取出固定字符区间;

        范例一:将PATH变量取出,我要找出第五个路径。


我们是以【:】作为分隔,那么如果想要列出第3段与第5段?,就是这样:

        范例二:将export 输出的信息,取得第12字符以后的所有字符

.…(其他省略)……

#注意看,每个数据都是排列整齐的输出,如果我们不想要【declare-x】时,就得这么做。

……(其他省略)…

#知道怎么回事了吧?用-c可以处理比较具有格式的输出数据,我们还可以指定某个范围的值,例如第12-20的字符、就是cut  -c 12-20等.

.

        范例三:用last 将显示的登录者的信息中,仅留下使用者大名。

last可以输出【账号/终端/来源/日期时间】的数据,并且是排列整齐的。


由输出的结果我们可以发现第一个空白分隔的栏位代表账号,所以使用如上命令.

        但是因为root     pts/1之间空格有好几个,并不是只有一个,pts/1其实不能以cut -d ' ' -f 1,2所以,如果要找出,输出的结果会不是我们想要的。


  

      cut 主要的用途在于将同一行里面的数据进行分解,最常使用在分析一些数据或文字数据的时候。这是因为有时候我们会以某些字符当作划分的参数,然后来将数据加以分割,以取得我们所需要的数据。

不过,cut在处理多空格相连的数据时,可能会比较吃力一点,所以某些时刻可能会使用awk来替换。

1.2.grep

        刚刚的cut是将一行信息当中,取出某部分我们想要的,而grep则是分析一行信息,若当中有我们所需要的信息,就将该行拿出来,

简单的语法是这样的:

  • grep [-acinv] [--color=auto] '查找字符' filename

选项与参数:

  • -a:将二进制文件以文本文件的方式查找数据
  • -c:计算找到‘查找字符’的次数。
  • -i:忽略大小写的不同,所以大小写视为相同
  • -n:顺便输出行号
  • -v:反向选择,亦即显示出没有‘查找字符’内容的那一行。
  • --color=auto:可以将找到的关键字部分加上颜色的显示

范例一:将last当中,有出现root的那一行就显示出来。

        范例二:与范例一相反,只要没有root的就取出


 

        范例三:在last 的输出信息中,只要有root 就取出,并且仅取第一栏。

#在取出root 之后,利用上个命令cut 的处理,就能够仅取得第一栏。

        范例四:取出/etc/man db.conf内含MANPATH的那几行。

#神奇的是,如果加上--color=auto的选项,找到的关键字部分会用特殊颜色显示。

        grep是个很棒的命令,它支持的语法实在是太多了,用在正则表达式里面,能够处理的数据实在是多得很。不过,我们这里先不谈正则表达式,您先了解一下,grep可以解析一行文字,取得关键词,若该行有存在关键词,就会整行列出来。

另外,CentOS7当中,默认的grep已经主动使用--color=auto选项在alias中了。

2.排序命令:sort、wc、uniq

很多时候,我们都会去计算一次数据里面的相同形式的数据总数,举例来说,使用last可以查得系统上面有登录主机者的身份。

那么我可以针对每个用户查出它们的总登录次数吗?

此时就要排序与计算之类的命令来辅助,下面我们介绍几个好用的排序与统计命令。

2.1.sort

        sort 是很有趣的命令,它可以帮我们进行排序,而且可以根据不同的数据形式来排序,例如数字与文字的排序就不一样。

       此外,排序的字符与语系的编码有关,因此,如果您需要排序时,建议使用LANG=C来让语系统一,数据排序比较好一些。

  • sort [-fbMnrtuk] [file or stdin]

选项与参数:

  1. -f:忽略大小写的差异,例如A与a 视为编码相同;
  2. -b:忽略最前面的空格字符部分;
  3. -M:以月份的名字来排序,例如JAN、DEC等的排序方法;
  4. -n:使用【纯数字】进行排序(默认是以文字形式来排序的)反向排序;
  5. -u:就是unig,相同的数据中,仅出现一行代表;
  6. -t:分隔符号,默认是用[Tab]键来分隔;
  7. -k:以哪个区间(field)来进行排序的意思

        范例一:个人账号都记录在/etc/passwd 下,请将账号进行排序


#省略很多的输出,由上面的信息看起来,sort是默认【以第一个】条信息来排序,而且默认是以【文字】形式来排序的,所以由a开始排到最后。

        范例二:/etc/passwd内容是以:来分隔的,我想以第三栏来排序,该如何?

+看到特殊字体的输出部分了吧?怎么会这样排列?呵呵,没错。如果是以文字形式来排序的话,原本就会是这样,想要使用数字排序:


这样才行,用那个-n来告知sort 以数字来排序。

        范例三:利用last,将输出的数据仅显示账号,并加以排序。


 

        sort 同样是很常用的命令,因为我们常常需要比较一些信息。

        举个上面的第二个例子来说,今天假设你有很多的账号,而且你想要知道最大的用户ID目前到哪一个了。呵呵,使用sort 一下子就可以知道答案。当然其使用还不止此,有空的话不妨玩一玩。

2.2.uniq

如果我排序完成了,想要将重复的数据仅列出一个显示,可以怎么做?

  • uniq [-ic]

选项与参数:

  1. -i:忽略大小写字符的不同;
  2. -c:进行计数;

范例一,使用last 将账号列出,仅取出账号栏,进行排序后仅取出一位.


范例二:承上题,如果我还想要知道每个人的登录总次数?

从上面的结果可以发现reboot有6次,root 登录则有23次,大部分是以zs_108来操作.

#wtmp与第一行的空白都是1ast的默认字符,那两个可以忽略的。

这个命令用来将重复的行删除掉只显示一个,

举个例子来说,你要知道这个月份登录你主机的用户有谁,而不在乎它的登录次数,那么就使用上面的范例,(1)先将所有的数据列出;(2)再将人名独立出来;(3)经过排序;(4)只显示一个。由于这个命令是在将重复的东西减少,所以当然需要配合排序过的文件来处理

2.3.wc

如果我想要知道/etc/man_db.conf这个文件里面有多少字?多少行?多少字符的话,可以怎么做?

其实可以利用wc 这个命令来完成,它可以帮我们计算输出信息的整体数据。

  •  wc  [-lwm]

选项与参数:

  1. -l:仅列出行
  2. -w:仅列出多少字(英文字母);
  3. -m:多少字符;

范例一:那个/etc/man db.conf里面到底有多少相关字、行、字符数?

输出的三个数字中,分别代表:【行、字数、字符数】

范例二:使用last可以输出登录者,但是last 最后两行并非账号内容,那么请问。
我该如何以一行命令串取得登录系统的总人次?



由于last 会输出空白行、wtmp、unknown、reboot 等无关账号登录的信息,因此,我利用
grep 取出非空白行,以及去除上述关键字那几行,再计算行数,就能够了解。

wc也可以当作命令?这可不是上洗手间的WC,这是相当有用的计算文件内容的一个工具。

举个例子来说,当你要知道目前你的账号文件中有多少个账号时,就使用这个方法:【cat /etc/passwd|wc -l】因为/etc/passwd里面一行代表一个用户,所以知道行数就晓得有多少的账号在里面了,而如果要计算一个文件里面有多少个字符时,就使用wc-m这个选项。

3.双向重定向:tee

想个简单的东西,我们由知道>会将数据流整个传送给文件或设备,因此我们除非去读取该文件或设备,否则就无法继续利用这个数据流。

万一我想要将这个数据流的处理过程中将某段信息存下来,应该怎么做?

利用tee就可以,我们可以这样简单的看一下:
tee 会同时将数据流分送到文件与屏幕(screen ),而输出到屏幕的,其实就是stdout,那就可以让下个命令继续处理。

  •  tee [-a] file

选项与参数:

  • -a:以累加(append)的方式,将数据加入 file 当中

范例一,让我们将last的输出存一份到last.list 文件中;

范例二则是将 ls的数据存一份到~/homefile,同时屏幕也有输出信息

 

要注意,tee后接的文件会被覆盖,若加上-a 这个选项则能将信息累加。

        tee可以让 standard output转存一份到文件内并将同样的数据继续送到屏幕去处理,这样除了可以让我们同时分析一份数据并记录下来之外,还可以作为处理一份数据的中间缓存记录之用,tee这家伙在很多选择/填空的认证考试中很容易考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/791552.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mongodb单字段索引详解

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第89篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题&#xff0c;欢迎在文章下面点个赞&#xff0c;或者关…

概率论期末速成(知识点+例题)

考试范围 一&#xff1a; 事件关系运算性质全概率公式、贝叶斯公式古典概型 二&#xff1a; 离散分布律连续密度函数性质 -> 解决三个问题&#xff08;求待定系数、求概率、求密度函数&#xff09;分布函数 -> 解决三个问题常用分布&#xff08;最后一节课的那几个分…

Linux 调试命令记录

查看CPU信息 cat /proc/cpuinfo 显示当前电源功耗 top 命令能够清晰的展现出系统的状态&#xff0c;而且它是实时的监控&#xff0c;按 q 退出。 uptime 与 w 这两个命令只是单纯的反映出负载&#xff0c;所表示的是过去的1分钟、5分钟和15分钟内进程队列中的平均进程数量。…

【机器学习】机器学习详解-小白入门(随记)

&#x1f388;边走、边悟&#x1f388;迟早会好 机器学习&#xff08;Machine Learning&#xff09;是一种人工智能技术&#xff0c;通过让计算机系统从数据中学习并改进其性能&#xff0c;而不是通过显式编程来完成特定任务。其核心概念是利用算法和统计模型对大量数据进行分…

「解析」Cosine-Warmup 学习率策略

参考论文&#xff1a;SGDR: Stochastic Gradient Descent with Warm Restarts Bag of Tricks for Image Classification with Convolutional Neural Networks 梯度下降算法需要我们设置一个值&#xff0c;用来控制权重更新幅度&#xff0c;我们将其称之为学习率。它是控制模型学…

统信UOS桌面操作系统上删除系统升级后GRUB中的回滚条目与备份

原文链接&#xff1a;统信UOS删除升级后GRUB中的回滚条目与备份 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在统信UOS桌面操作系统上删除系统升级后GRUB中的回滚条目与备份的文章。在进行系统升级后&#xff0c;GRUB引导菜单中可能会出现多个回滚条目和备份…

maven高级1——一个项目拆成多个

把原来一个项目&#xff0c;拆成多个项目。 &#xff01;&#xff01;他们之间&#xff0c;靠接口通信。 以ssm整合好的项目为例&#xff1a; 如何看拆的ok不ok 只要compile通过就ok。 拆分pojo 先新建一个项目模块&#xff0c;再把内容复制进去。 拆分dao 1.和上面一样…

Python爬虫速成之路(1):获取网页源代码

hello hello~ &#xff0c;这里是绝命Coding——老白~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;绝命Coding-CSDN博客 &a…

暴雨、高温等极端天气频发,农险业务迎大考

近期&#xff0c;湖北地区暴雨如注&#xff0c;持续的强降水使得地势低洼的农田面临严重的渍涝风险&#xff0c;早稻、再生稻等作物或将遭受“雨洗禾花”的威胁。 山东的农田却饱受高温干旱的煎熬&#xff0c;南四湖下级湖水位持续降低&#xff0c;农作物受旱面积不断扩大&…

grep对文件内容搜索(附重要拓展-正则表达式)

文件搜索是搜索查找符合条件的某文件的目录&#xff0c;若要编辑文件或对文件的某配置进行修改&#xff0c;就需要对文件内容进行搜索。 grep 命令是 Linux 及类 Unix 操作系统中的一个强大的文本搜索工具&#xff0c;用于搜索一个或多个文件中匹配给定模式的行。grep 代表“Gl…

请跳至打印机属性的“Adobe PDF设置”页面,取消选择“仅停靠系统字体;不使用文档字体”

场景&#xff1a; 当使用adobe pdf打印时&#xff0c;出现如下提示“请跳至打印机属性的“Adobe PDF设置”页面&#xff0c;取消选择“仅停靠系统字体&#xff1b;不使用文档字体””&#xff0c;该如何解决。 描述 □“仅停靠系统字体&#xff1b;不使用文档字体” 复选本框…

nginx安装配置视频频服务器-windows

编译安装nginx 1、安装perl 安装地址: https://strawberryperl.com&#xff0c;选择msi安装程序即可 2、安装sed for windows 下载地址&#xff1a;https://sourceforge.net/projects/gnuwin32/files/sed/&#xff0c;执行安装程序结束后&#xff0c;将安装包bin目录配置到…

javaweb学习day1《HTML篇》--新浪微博(前端页面的创建思路及其HTML、css代码详解)

一、前言 本篇章为javaweb的开端&#xff0c;也是第一篇综合案例&#xff0c;小编也是看着黑马程序员的视频对里面的知识点进行理解&#xff0c;然后自己找一个新浪微博网页看着做的&#xff0c;主要还是因为懒&#xff0c;不想去领黑马程序员的资料了。 小编任务javaweb和ja…

MybatisPlus 使用教程

MyBatisPlus使用教程 文章目录 MyBatisPlus使用教程1、使用方式1.1 引入依赖1.2 构建mapper接口 2、常用注解2.1 TableName2.2 TableId2.3 TableField MyBatisPlus顾名思义便是对MyBatis的加强版&#xff0c;但两者本身并不冲突(只做增强不做改变)&#xff1a; 引入它并不会对原…

【Python专栏】搭建Pyhthon运行环境及开发环境 | 安装Python | 安装PyCharm

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Python专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍******文件安装包详见文章末尾****** 搭建Pyhthon运行环境及开发环境…

高可用hadoop分布式节点的扩容

解决方案 修改hdfs-site.xml 文件 原xml文件 <?xml version"1.0" encoding"UTF-8"?> <?xml-stylesheet type"text/xsl" href"configuration.xsl"?> <!--Licensed under the Apache License, Version 2.0 (th…

使用 Python 绘制美国选举分级统计图

「AI秘籍」系列课程&#xff1a; 人工智能应用数学基础 人工智能Python基础 人工智能基础核心知识 人工智能BI核心知识 人工智能CV核心知识 如何创建美国选举结果的时间序列分级统计图 数据地址为源地址&#xff0c;如果失效请与我联系。 2024 年美国大选将至&#xff0c;…

【高中数学/指数、对数】已知9^m=10,a=10^m-11,b=8^m-9,则ab两数和0的大小关系是?(2022年全国统考高考真题)

【问题】 已知9^m10,a10^m-11,b8^m-9,则&#xff08;&#xff09; A.a>0>b B.a>b>0 C.b>a>0 D.b>0>a 【解答】 首先注意到10^log10_11-110,8^log8_9-90&#xff0c; 问题就转化为log8_9,log9_10,log10_11谁大谁小的问题&#xff0c; 再进一步…

JavaScript中的Symbol类型是什么以及它的作用

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介JavaScript中的Symbol类型是什么以及它的作用1. 符号&#xff08;Symbol&#xff09;的创建2. 符号的特性3. 符号的作用3.1 属性名的唯一性3.2 防止属性被意外访问或修改3.3 使用内置的符号3.4 符号与属性遍历 4. 总结 ⭐ 写在最后…

Oracle执行一条SQL的内部过程

一、SQL语句根据其功能主要可以分为以下几大类&#xff1a; 1. 数据查询语言&#xff08;DQL, Data Query Language&#xff09; 功能&#xff1a;用于从数据库中检索数据&#xff0c;常用于查询表中的记录。基本结构&#xff1a;主要由SELECT子句、FROM子句、WHERE子句等组成…