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

Linux红帽:RHCSA认证知识讲解(九)标准输入输出、重定向、过滤器与管道

Linux红帽:RHCSA认证知识讲解(九)标准输入输出、重定向、过滤器与管道

  • 前言
  • 一、标准输入与输出、重定向,使用过滤器筛选文件信息
    • 1.1 Linux 的标准输入与输出
    • 1.2 什么是输入重定向
    • 1.3 输出重定向
    • 1.4 标准错误输出重定向
    • 1.5 使用过滤器筛选文件信息
      • 基本用法
    • 1.6正则表达式
      • 常用选项
      • 重定向存储搜索结果
  • 二、管道命令
    • 2.1 管道命令的作用
    • 2.2 管道命令的特性
    • 2.3 管道命令的使用示例
    • 2.4 管道命令的高级用法


前言

  • 在红帽 Linux 系统中,标准输入输出、重定向、过滤器和管道是处理命令行数据的核心工具
  • 这些工具能够帮助用户高效管理数据流,实现复杂任务的自动化。
  • 本文将详细介绍这些工具的使用方法与应用场景,帮助读者更好地理解和掌握红帽 Linux 系统的命令行操作

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的RHCSA认证知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12901802.html?spm=1001.2014.3001.5482

一、标准输入与输出、重定向,使用过滤器筛选文件信息

1.1 Linux 的标准输入与输出

在 Linux 系统中,标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)是命令行交互的基础

  • 标准输入(stdin):默认情况下,标准输入设备是键盘,用户能通过键盘输入命令或数据。
  • 标准输出(stdout):默认情况下,标准输出设备是显示器,命令的输出结果通常会显示在屏幕上。
  • 标准错误输出(stderr):默认情况下,错误信息也会输出到显示器。与标准输出不同,标准错误输出专门用于输出错误信息。

1.2 什么是输入重定向

输入重定向是指把命令的输入来源从默认的标准输入设备(键盘)改为其他指定的文件

  • 输入重定向使用 < 符号实现

例如:

cat < /etc/passwd

这条命令将 /etc/passwd 文件的内容作为 cat 命令的输入,并将内容显示到控制台。这与直接使用 cat /etc/passwd 的效果相同,但通过输入重定向的方式更加灵活。

1.3 输出重定向

输出重定向是指将命令的输出目标从默认的标准输出设备(显示器)改为其他指定的文件。输出重定向使用 >>> 符号实现。

  • 覆盖输出(>:将输出内容写入指定文件,如果文件已存在,则覆盖原有内容
  • 追加输出(>>:将输出内容追加到指定文件的末尾,不会覆盖原有内容

例如:

cat /etc/passwd > /root/passwd.txt

这条命令将 /etc/passwd 文件的内容输出到 /root/passwd.txt 文件中,如果 /root/passwd.txt 已存在,则覆盖其内容。

1.4 标准错误输出重定向

标准错误输出(stderr)也可以被重定向。默认情况下,错误信息会输出到显示器,但可以通过 2> 符号将其重定向到文件中。

例如:

cat /nonexistent_file 2> /root/error.txt

这条命令尝试读取一个不存在的文件 /nonexistent_file,并将产生的错误信息输出到 /root/error.txt 文件中。

1.5 使用过滤器筛选文件信息

  • 过滤器是用于处理文本数据的工具,可以帮助用户从大量数据中筛选出所需的信息。grep 是最常用的过滤器之一,用于搜索和过滤文件内容

基本用法

grep "pattern" file

例如:

grep "root" /etc/passwd

这条命令会在 /etc/passwd 文件中搜索包含 “root” 的行。

1.6正则表达式

  • ^:表示行的开头。例如:
grep "^root" /etc/passwd

这条命令会搜索以 “root” 开头的行。

  • $:表示行的结尾。例如:
grep "root$" /etc/passwd

这条命令会搜索以 “root” 结尾的行。

  • [abc]:表示匹配括号内的任意一个字符。例如:
grep "b[abc]" /etc/passwd

这条命令会搜索包含 “ba”、“bb” 或 “bc” 的行。

  • [a - c]:表示匹配括号内的字符范围。例如:
grep "b[a - c]" /etc/passwd

这条命令会搜索包含 “ba”、“bb” 或 “bc” 的行。

常用选项

  • -n:打印匹配行及其行号。
grep -n "root" /etc/passwd
  • -c:打印匹配行的数量。
grep -c "root" /etc/passwd
  • -v:反选,打印不匹配的行。
grep -v "root" /etc/passwd

重定向存储搜索结果

grep "root" /etc/passwd > /root/search_results.txt

这条命令会将搜索结果保存到 /root/search_results.txt 文件中。

二、管道命令

2.1 管道命令的作用

  • 在 Linux 系统中,许多命令会输出大量数据,这些数据可能过于繁杂,难以直接阅读。管道命令(|允许用户将一个命令的输出作为另一个命令的输入,从而实现数据的逐步处理

例如,假设我们想要查看 /etc 目录下的文件数量,但 ls /etc 输出的内容太多,难以直接统计。我们可以通过管道命令将输出传递给 less 命令,方便查看:

ls /etc | less

这条命令将 ls /etc 的输出传递给 less 命令,用户可以通过 less 的功能前后翻动查看内容。

2.2 管道命令的特性

  • 仅处理标准输出:管道命令只能处理前一个命令的标准输出(stdout),而不会处理标准错误输出(stderr)。如果需要处理错误信息,需要先将其重定向到标准输出。
  • 必须能够接受标准输入:管道命令的后一个命令必须能够接受标准输入(stdin)作为数据源。例如,lessmoreheadtail 等命令都可以作为管道命令的接收方,而 lscpmv 等命令则不能。

2.3 管道命令的使用示例

  • 统计文件行数
cat /etc/passwd | wc -l

这条命令将 /etc/passwd 文件的内容传递给 wc -l 命令,统计文件的行数。

  • 筛选特定内容
cat /etc/passwd | grep "root"

这条命令将 /etc/passwd 文件的内容传递给 grep 命令,筛选出包含 “root” 的行。

  • 组合多个命令
ps aux | grep "httpd" | wc -l

这条命令首先列出所有进程(ps aux),然后筛选出包含 “httpd” 的行(grep "httpd"),最后统计这些行的数量(wc -l)。

2.4 管道命令的高级用法

  • 处理标准错误
    如果需要处理标准错误输出,可以先将其重定向到标准输出,再通过管道传递。例如:
ls /nonexistent_file 2>&1 | grep "No such file or directory"

这条命令将 ls /nonexistent_file 的错误信息(2>&1)传递给 grep 命令,筛选出包含 “No such file or directory” 的行。

  • 多级管道
    管道命令可以多级串联,实现复杂的处理逻辑。例如:
cat /etc/passwd | grep "root" | cut -d: -f1

这条命令首先读取 /etc/passwd 文件的内容,然后筛选出包含 “root” 的行,最后通过 cut 命令提取用户名字段(以冒号为分隔符,提取第 1 列)。


以上就是这篇博客的全部内容,下一篇我们将继续探索 Redhat 的更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的RHCSA认证知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12901802.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

http://www.dtcms.com/a/109379.html

相关文章:

  • PyTorch的dataloader制作自定义数据集
  • Golang改进后的任务调度系统分析
  • MySQL的进阶语法12(MySQL管理)
  • [250403] HuggingFace 新增检查模型与电脑兼容性的功能 | Firefox 发布137.0 支持标签组
  • 数据库系统-数据库模式
  • UART双向通信实现(序列机)
  • (三十)导入系统内置库 math库
  • 基于大模型预测升主动脉瘤的多维度诊疗研究报告
  • 抖音短视频安卓版流畅度测评 - 真实
  • 关于pycharm远程连接服务器如何debug
  • ngx_log_init
  • RTOS基础 -- NXP M4小核的RPMsg-lite与端点机制回顾
  • Qt基础:主界面窗口类QMainWindow
  • 前端切片上传、上传进度、断点续传、秒传
  • maven项目添加第三方JAR包
  • 《Java编程思想》读书笔记:第九章 接口
  • TI-BQ34Z100 STM32CubeIDE STM32L151 调试过程,含详细步骤文档、代码工程、测试记录、BQ34Z100手册等相关资料
  • 数据框的添加
  • P2758 编辑距离
  • 08_paho.mqtt.cpp库使用示例
  • Python学习笔记(8)关于列表内置函数和多维列表
  • Java 常用数据结构详解
  • Java8 到 Java21 系列之 Stream API:数据处理的新方式(Java 8)
  • Node.js 安装与配置全攻略:从入门到高效开发
  • 做题记录:和为K的子数组
  • 二极管正负极区分
  • Mermaid 语法教程
  • kali中vmtools失效用不了解决方法
  • Leetcode 857 -- 贪心 | 数学
  • 【C语言】整数和浮点数在内存中的存储