前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Shell编程学习路线]--shell中重定向和管道符(详细介绍)

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

作者头像
神秘奇男子
发布2024-06-13 13:44:45
770
发布2024-06-13 13:44:45
举报
文章被收录于专栏:运维知识运维知识

——前言——

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

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

前些天发现了一个巨牛的🤖人工智能学习网站,通俗易懂,风趣幽默,忍不住粉香一下给大家,人工智能, 机器算法等...... 点击跳转网页!

https://www.captainbed.cn/sis/

🎆1.重定向输出

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

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

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

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

代码语言:javascript
复制
[root@localhost ~] uname -p > 1.txt
[root@localhost ~] cat 1.txt 
x86_64

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

如下操作

代码语言:javascript
复制
[root@localhost ~] uname -r > 1.txt
[root@localhost ~] cat 1.txt 
3.10.0-1160.114.2.el7.x86_64

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

正确操作

代码语言:javascript
复制
[[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”选项来识别标准输入)

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

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

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

代码语言:javascript
复制
vim pass.txt 
123456

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

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

代码语言:javascript
复制
[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

通过管道符来简化

代码语言:javascript
复制
[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利用率

代码语言:javascript
复制
[root@localhost ~] df -hT | grep "/$"
/dev/mapper/cl-root xfs        17G  2.2G   15G   13% /
[root@localhost ~] df -hT | grep "/$" | awk '{print $6}'
13%
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🎆1.重定向输出
  • 🎇2.重定向输入
  • 🎑3.管道操作
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档