当前位置: 首页 > news >正文

[Shell编程学习路线]--shell中重定向和管道符(详细介绍)

🏡作者主页:点击! 

🛠️Shell编程专栏:点击!

⏰️创作时间:2024年6月12日10点50分

🀄️文章质量:93分


——前言——

在Shell编程中,重定向和管道符是两个极其重要的概念,它们让你能够高效地管理输入输出流,并实现强大的命令组合。通过重定向,你可以将命令的输出保存到文件或将文件的内容作为命令的输入,而管道符则允许你将一个命令的输出直接作为另一个命令的输入,从而实现复杂的任务链。在本篇指南中,我们将深入探索重定向和管道符的使用技巧,带你掌握这些强大工具的应用,为你的Shell编程技能注入新的活力。让我们一起开始吧!

重定向和管道符是shell中常用的两种用于控制命令输入输出的技术,它们在shell脚本中有广泛的应用,可以提高脚本的效率和灵活性。

💯趣站💯

前些天发现了一个巨牛的🤖人工智能学习网站,通俗易懂,风趣幽默,忍不住粉香一下给大家,人工智能, 机器算法等......  点击跳转网页!icon-default.png?t=N7T8https://www.captainbed.cn/sis/

🎆1.重定向输出

重定向输出指的是将命令的正常输出结果保存在指定的文件中,而不是直接显示在显示器的屏幕上。重定向输出使用 '>'或者'>>' 操作符,以便用户覆盖和追加。

若重定向输出的目标文件不存在,则会新建文件,然后将前面的命令输出的结果保存到该文中。

若重定向输出的目标文件存在,则将输出结果覆盖或追加到文件中。

例如,若要将当前主机的CPU类型信息(uname -p) 保存到 1.txt文件中,而不是显示到屏幕上

[root@localhost ~] uname -p > 1.txt
[root@localhost ~] cat 1.txt 
x86_64

当需要保留原有的目标文件原有的内容时,应改用'>>' 操作符号 追加内容,而不是覆盖内容。

如下操作

[root@localhost ~] uname -r > 1.txt
[root@localhost ~] cat 1.txt 
3.10.0-1160.114.2.el7.x86_64

可以看到我们使用> 里边的原有内容被覆盖掉了

正确操作

[[root@localhost ~] uname -p > 1.txt
[root@localhost ~] uname -r >> 1.txt
[root@localhost ~] cat 1.txt 
x86_64
3.10.0-1160.114.2.el7.x86_64

🎇2.重定向输入

重定向输入指的是将命令中接收输入的途径有默认键盘改为指定的文件,而不是等待从键盘输入。重定向输入使用 '<'符号

通过重定向输入可以使一些交互式操作过程能够通过读取文件来完成。例如,使用passwd命令为用户设置密码时,每次都必须根据提示输入两次密码字串,非常烦琐,若改用重定向输入将可以省略交互式的过程,而自动完成密码设置(结合passwd命令的“--stdin”选项来识别标准输入)

正常的更新密码 需要手动输入两次 太麻烦

[root@localhost ~] passwd hello
更改用户 hello 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新

使用< 符号 不需要交互大大的节省了时间

vim pass.txt 
123456[root@localhost ~] passwd --stdin hello < pass.txt
更改用户 hello 的密码 。
passwd:所有的身份验证令牌已经成功更新。

🎑3.管道操作

管道(pipe)操作为不同命令之间的协同工作提供了一种机制,位于管道符号“|”左侧的命令输出的结果,将作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。 在 Shell 脚本应用中,管道操作通常用来过滤所需要的关键信息。例如,使用 grep 命令查询使用/bin/bash 作为 Shell 的用户名称时,会输出符合条件的整行内容,在此基础上可以结合管道操作与awk 命令做进一步过滤,只输出用户名和登录 Shell 列。

[root@localhost ~] grep '/bin/bash$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
joke:x:1000:1000::/home/joke:/bin/bash
hello:x:1001:1001::/home/hello:/bin/bash

通过管道符来简化

[root@localhost ~] grep '/bin/bash$' /etc/passwd |awk -F: '{print $1,$7}'
root /bin/bash
joke /bin/bash
hello /bin/bash

这样我们可以直观的看到用户和对应的Shell

上个案例中awk是三剑客的其中之一

上例中 awk 命令的作用是以冒号":“作为分隔.输出第1个,第7个区域的字符串。其中的“-F”部分用来指定分隔符号(未指定时,默认以空格或制表符分隔)。关于awk命令的更多用法,在后面的章节中再做详细介绍,本章不做过多讲解。 又如,若要提取根分区(/)的磁盘使用率信息,可以执行以下操作,其中用到了df、grep.awk命令和管道操作。

现在我们使用刚刚所学的查找出根目录下的CPU利用率

[root@localhost ~] df -hT | grep "/$"
/dev/mapper/cl-root xfs        17G  2.2G   15G   13% /
[root@localhost ~] df -hT | grep "/$" | awk '{print $6}'
13%

相关文章:

  • 【机器学习】GANs网络在图像和视频技术中的应用前景
  • 实用软件分享---简单菜谱 0.3版本 几千种美食(安卓)
  • nginx rewrite地址重写
  • RPC RMI 区别以及在java中的应用
  • Dell服务器根据GPU温度调整风扇转速
  • Linux命令详解(1)
  • JAVA Mongodb 深入学习(一)BulkOperations 批量操作
  • k8s学习--负载均衡器matelLB的详细解释与安装
  • #07【面试问题整理】嵌入式软件工程师
  • c#快速获取超大文件夹文件名
  • LVS – NAT 模式集群构建
  • 重学java 64.IO流 字符流
  • Java SE LTS版本商用收费,有那些开源的替代方案?
  • PDF批量加水印 与 去除水印实践
  • [CAN] 创建解析CAN报文DBC文件教程
  • 2017 前端面试准备 - 收藏集 - 掘金
  • angular2 简述
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JAVA_NIO系列——Channel和Buffer详解
  • javascript面向对象之创建对象
  • PHP CLI应用的调试原理
  • php中curl和soap方式请求服务超时问题
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Twitter赢在开放,三年创造奇迹
  • Windows Containers 大冒险: 容器网络
  • 技术发展面试
  • 微信开放平台全网发布【失败】的几点排查方法
  • 正则学习笔记
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • 选择阿里云数据库HBase版十大理由
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #FPGA(基础知识)
  • #pragma data_seg 共享数据区(转)
  • #Z0458. 树的中心2
  • $.proxy和$.extend
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)Linux——Linux常用指令
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)Windows2003安全设置/维护
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转)一些感悟
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .htaccess配置重写url引擎
  • .NET Core 版本不支持的问题
  • .net 调用php,php 调用.net com组件 --
  • .net 生成二级域名
  • .Net 知识杂记
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)