首页 > 系统相关 >Linux标准输入输出与重定向、管道技术

Linux标准输入输出与重定向、管道技术

时间:2024-08-08 20:55:41浏览次数:12  
标签:输出 xargs 重定向 文件 输入输出 标准 ls Linux

Linux标准输入输出与重定向、管道技术

1. 标准输入输出

1.1 概念

  • 每个Linux程序执行时,默认打开三个标准文件描述符:
    • 标准输入(STDIN):文件描述符为0,通常对应终端键盘。
    • 标准输出(STDOUT):文件描述符为1,默认输出到屏幕。
    • 错误输出(STDERR):文件描述符为2,默认输出到屏幕。

1.2 示例

  • cat 命令:从命令行给定文件中读取数据,并直接送到标准输出。
    • cat /etc/passwd: 将/etc/passwd的内容显示到屏幕上。
    • cat: 从标准输入读取数据,并送到标准输出。

2. 输出重定向

2.1 类型

  • 标准覆盖输出重定向(>):将命令执行结果输出到指定文件,若文件不存在则创建。
  • 标准追加输出重定向(>>):将命令执行结果追加输出到指定文件。
  • 错误覆盖输出重定向(2>):将错误信息输出到指定文件,覆盖原有内容。
  • 错误追加输出重定向(2>>):将错误信息追加输出到指定文件。

2.2 示例

  • 标准输出重定向
    • ifconfig en33 > abc: 先清空abc文件然后将ifconfig的输出写入。
    • echo "This is network conf" >> if: 将内容追加到if文件末尾。
  • 错误输出重定向
    • useradd test 2> errors.log: 将用户add的错误信息重定向到errors.log
  • 输入重定向
    • ls < files.txt: 从files.txt文件读取数据,并送到ls命令的标准输入。

3. 进程管道技术

3.1 概念

  • 使用管道操作符 "|" 连接两个命令,将左侧命令的标准输出传递给右侧命令的标准输入。

3.2 示例

  • 按UID排序用户
    • sort -t':' -k3 -n /etc/passwd | head -n10 | tail -n1
  • 统计shell类型
    • awk -F: '{print $7}' /etc/passwd | sort | uniq -c
  • 统计CPU使用率高的进程
    • ps aux --sort=-%cpu | head -n6 | tail -n1
  • 统计网站访问情况
    • netstat -antup | grep :80 | grep ESTAB | sort | uniq -c | sort -k1 -rn | head -n20
  • 打印所有IP地址
    • ip addr | grep 'inet' | awk '{print $2}' | awk -F'/' '{print $1}'

3.3 tee技术

  • tee命令可以将标准输出的内容同时发送到文件和屏幕。
    • ip addr | grep 'inet' | tee ip.txt | awk '{print $1}'

3.4 xargs

  • xargs可以将命令行参数列表转换为小块,传递给其他命令。
    • ls | xargs rm -rvf

4. 注意事项

  • 1.在管道后⾯的命令,都不应该在写⽂件名

    2.在管道中只有标准输出才可以传递下⼀个命令, 标准错误输出会直接输出终端显示, 建议在使⽤管道前将标

    准错误输出重定向。

    3有些命令不⽀持管道技术, 但是可以通过xargs 实现

    例如: which cat|xargs ls -l
    
    例如: ls |xargs rm -rvf
    
    例如: ls |xargs cp -rvft /tmp/  -> ls | xargs -I {} cp -rvf {} /tmp 
    
    例如: ls |xargs mv -t /tmp/  -> ls | xargs -I {} mv {} /tmp
    
    
    

标签:输出,xargs,重定向,文件,输入输出,标准,ls,Linux
From: https://www.cnblogs.com/zgw03/p/18349690

相关文章

  • Linux系统中的find命令
    Linux系统中的find命令1.find命令的基本语法其中:路径:指定要搜索的目录。选项:指定搜索参数,如时间、用户、文件类型等。表达式:指定搜索条件,如文件名、大小、权限等。动作:指定对找到的文件执行的操作,如打印、删除、复制等。2.查找文件名称查找精确匹配文件名:-name"文件......
  • Linux C++ 开发2 - 编写、编译、执行第一个程序
    上一篇《LinuxC++开发1-搭建C++开发环境》我们搭建好了C++的开发环境,本篇我们将编写、编译、执行第一个程序。1.第一个C++程序1.1.demo01.cpp这里写一个最简单的HelloWord程序#include<iostream>intmain(){std::cout<<"Hello,world!"<<std::endl;re......
  • 【AcWing】Linux基础课_讲义
    Linux基础课-AcWing部分内容有所修改1.常用文件管理命令:正确的学习方式:边学边查。先跟着官方文档的快速入门过一遍,然后在实际工程项目中有需要的再去查。命令行,方便批量化操作。Linux各目录及每个目录的详细介绍-lin_zone-博客园(cnblogs.com)常用文件夹/根目录/......
  • Linux远程终端MobaXterm下载安装配置使用(详细)
    今天给伙伴们分享一下Linux远程终端MobaXterm下载安装配置使用,希望看了有所收获。我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!如果伙伴们看了文档觉得有用,欢迎大家......
  • Linux操作系统简介
    今天给伙伴们分享一下Linux操作系统简介,希望看了有所收获。我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相......
  • 使用wsl,windows自带的linux虚拟机
     右键,管理员模式第一次安装,先更新一下wsl组件wsl--updatewsl--status是否为2,不是的话需要设置一下在windows应用商店直接可以下载 Ubuntu时,默认情况下并不会设置root用户的密码,而是鼓励用户使用sudo命令以获得管理员权限。root账户通常是禁用的,并且没有默认......
  • Centos Linux 7 搭建邮件服务器(postfix + dovecot)
    准备工作1.一台公网服务器(需要不被服务商限制发件收件的,也就是端口25、110、143、465、587、993、995不被限制),如有防火墙或安全组需要把这些端口开放2.一个域名,最好是comcnorg的一级域名3.域名备案(如果服务器是国外的则不需要备案)一、配置域名解析1.登录阿里云,找到云解......
  • Linux文件/目录权限管理
    系列文章目录`提示:仅用于个人学习,进行查漏补缺使用。1.Linux介绍、目录结构、文件基本属性、Shell2.Linux常用命令3.Linux文件管理4.Linux命令安装(rpm、install)5.Linux账号管理提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文......
  • Linux磁盘管理详解(实操、解决磁盘疑难杂症)
    本文详细介绍了Linux磁盘管理、讲解了磁盘操作,如查看与添加磁盘、分区(使用fdisk和parted)、格式化、挂载和卸载、挂载U盘。最后,重点讨论了LVM逻辑卷的优势和操作,如物理卷、卷组和逻辑卷的创建、扩容与缩容。目录        磁盘查看和分区       1、du查......
  • PageOffice6国产Linux系统最简集成代码(.NetCore)
    本文描述了PageOffice产品在.NetCore项目中如何集成调用。PageOffice国产版:支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)、longarch芯片架构。新建.NetCore项目:PageOffice6-Net-Core-Simple在此项目的“依赖项-包-管理NuGet程序......