LINUX学习之管道和重定向(十)

news/2024/11/20 17:39:41/

输入/输出流控制

在Linux系统中, 执行一个shell命令通常会自动打开三个标准文件, 分别是标准输入文件、标准输出文件和标准错误输出文件。进程将从标准输入文件得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件

如下表格所示, linux shell下有三种标准的文件描述符:

文件描述符描述操作符
0标准输入(stdin)< ,<<
1标准输出(stdout)>, >>, 1>或1>>
2标准错误输出(stderr)2>2>>

输入重定向

输入重定向用于改变命令的输入源, 指输入可以不来自标准输入,而来自指定的文件

输入重定向的符号为<, 命令格式为命令<文件名


如下代码所示, 通过重定向输入将文件file的内容作为输入让cat命令执行
[herry@localhost ~]$ cat test.txt 
hello world
[herry@localhost ~]$ cat<test.txt 
hello world

虽然执行结果相同,但第一行代表是以键盘作为输入设备,而第二行代码是以test.txt文件作为输入设备。


输出重定向

在LINUX中,输出重定向是指将命令的输出重定向到一个文件或者设备上。这可以通过使用">“或”>>"符号来实现

类型操作符描述
重定向标准输出>输出重定向将命令执行的结果输出至指定的文件中, 而不会显示在屏幕上
重定向标准输出>>将命令的执行结果追加输出至指定文件
重定向标准错误2>清空指定文件的内容, 并将标准错误信息输出至此文件
重定向标准错误2>>将标准错误信息追加输出至指定的文件
重定向标准输出和标准错误&>将标准输出、标准错误的内容全部输出至指定文件, 而不会显示在屏幕上
>&后面接文件时,表示将标准输出和标准错误输出重定向至文件
>&后面接文件描述符时,表示将前面的文件描述符重定向至后面的文件描述符

将`ls /etc`的执行结果输出至test.txt文件
[root@localhost 桌面]# ls /root/ >test.txt
[root@localhost 桌面]# cat test.txt 
anaconda-ks.cfg
file
initial-setup-ks.cfg
test

将`ls /etc`的执行结果追加至test.txt文件
[root@localhost 桌面]# ls /root/ >>test.txt
[root@localhost 桌面]# cat test.txt 
anaconda-ks.cfg
file
initial-setup-ks.cfg
test
anaconda-ks.cfg
file
initial-setup-ks.cfg
test

将执行`fuckcmd`命令的错误信息输出至test.txt文件
[root@localhost 桌面]# fuckcmd 2>test.txt
[root@localhost 桌面]# cat test.txt 
bash: fuckcmd: 未找到命令...

将执行`fuckcmd`命令的错误信息追加输出至test.txt文件
[root@localhost 桌面]# fuckcmd 2>>test.txt
[root@localhost 桌面]# cat test.txt 
bash: fuckcmd: 未找到命令...
bash: fuckcmd: 未找到命令...

管道操作

管道可以把一系列的命令连接起来, 将第一个命令的输出作为第二个命令的输入, 而第二个命令的输出又会作为第三个命令的输入, 以此类推下去, 显示在屏幕上的内容是管道行最后一个命令的输出

管道命令由若干个指令组成, 每个指令用|隔开, 仅有在前一个指令执行正确后才会执行后面的指令, 管道命令的使用格式如下:

command1 | command2 | command3

cut

cut命令可将字符串按指定分隔符分割成多个部分,其中-f参数是用来指定输出哪些区块,默认是输出所有区块。

  • -d:后接分割字符,默认是制表符(tab),可以指定分割字符。
  • -f:后接表示输出第几个区块或者区块范围,多个区块可以用逗号分隔

例如,将/etc/passwd文件中所有用户名输出:

cut -f 1 -d ":" /etc/passwd

使用实例

1.查询PATH变量的第三部分内容

[root@localhost 桌面]# echo $PATH | cut -d: -f 3
/usr/bin

2.查询系统中有多少个用户使用bash
[root@localhost 桌面]# cat /etc/passwd | grep /bin/bash | wc -l
2

wc命令是Linux中的一个文本统计工具,用于统计文本中的字符数、单词数和行数, 其中-l参数用于统计行数


http://www.ppmy.cn/news/18755.html

相关文章

LeetCode刷题模版:171-174、179

目录 简介171. Excel 表列序号172. 阶乘后的零173. 二叉搜索树迭代器174. 地下城游戏【未理解】179. 最大数结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,…

10分钟快速掌握正则表达式

什么是正则表达式&#xff0c;英文名字 regular expression。其实说人话就是&#xff1a; 用有限的符号&#xff0c;表达无线的序列。 字面量创建正则表达式 let str "jasonlee2023"let x "n"//使用字面量形式&#xff0c;检测str字符串中是否有字符xcon…

Java-黑马Java学习作业-day09面向对象(综合练习)

学习视频链接&#xff1a;黑马Java学习视频 文章目录题目1-对象数组汽车题目2-对象数组手机题目3-对象数组女朋友题目4-复杂对象数组操作题目1-对象数组汽车 ​ 定义数组存储3部汽车对象。 ​ 汽车的属性&#xff1a;品牌&#xff0c;价格&#xff0c;颜色。 ​ 创建三个汽车…

LwIP系列--内存管理(堆内存)详解

一、目的小型嵌入式系统中的内存资源&#xff08;SRAM&#xff09;一般都比较有限&#xff0c;LwIP的运行平台一般都是资源受限的MCU。基于此为了能够更加高效的运行&#xff0c;LwIP设计了基于内存池、内存堆的内存管理以及在处理数据包时的pbuf数据结构。本篇的主要目的是介绍…

golang常用库之-web框架搭建restful api服务 gin-gonic/gin

文章目录 golang常用库之-web框架搭建restful api服务gin简单示例gin 静态页面文件上传前端go后端文件上传参考golang常用库之-web框架搭建restful api服务 官网:https://gin-gonic.com/ github:github.com/gin-gonic/gin Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。…

cc123 靶场测试笔记

1.cc123 靶场介绍本靶场存在四个 flag 把下载到的虚拟机环境导入到虚拟机&#xff0c;本靶场需要把网络环境配置好。1.1.网络示意图2. 信息收集2.1.主机发现sudo netdiscover -i eth0 -r 192.168.0.0/242.2.masscan 端口扫描sudo masscan -p 1-65535 192.168.1.102 --rate10002…

PTA 1107 老鼠爱大米(C++实现)

翁恺老师曾经设计过一款 Java 挑战游戏&#xff0c;叫“老鼠爱大米”&#xff08;或许因为他的外号叫“胖胖鼠”&#xff09;。每个玩家用 Java 代码控制一只鼠&#xff0c;目标是抢吃尽可能多的大米让自己变成胖胖鼠&#xff0c;最胖的那只就是冠军。 因为游戏时间不能太长&a…

基于android的共享雨伞app

需求信息&#xff1a; 1、注册登录&#xff1a;用户的注册和登录&#xff0c;只有通过注册的用户&#xff0c;才能登录到平台系统进行相关的操作&#xff0c; 2、个人中心&#xff0c;在个人资料管理页面通过查看用户名、密码&#xff0c;姓名、身份证、手机&#xff0c;可进行…