首页 > 系统相关 >LINUX学习之管道和重定向(十)

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

时间:2023-01-22 12:12:05浏览次数:47  
标签:输出 重定向 文件 管道 LINUX test txt localhost

输入/输出流控制

在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参数用于统计行数

标签:输出,重定向,文件,管道,LINUX,test,txt,localhost
From: https://www.cnblogs.com/henry666/p/17064330.html

相关文章

  • 使用 U盘安装ubuntu linux全过程
     001、准备一个大于8G的U盘 002、打开ultraiso官网  003、双击下载好的安装包  004、点击是  005、点击我接受协议   006、点击下一步......
  • Linux系统入门-VIM编辑器
    VIM编辑器有三种模式1、命令模式2、输入模式3、末行模式vimreadme123.txt运行vim,默认进去命令模式末行模式输入:键盘,可以进入末行模式常用的命令为:W--------保存:q---------......
  • 利用 UltraISO 制作linux U盘的启动盘
     001、双击打开 UltraISO软件  002、点击继续使用  003、点击此处的文件夹图标  004、选择提前下载好的linuxISO文件,然后点击打开   005、......
  • linux环境编程(1): 实现一个单元测试框架
    写在前面在开发的过程中,大多数人都需要对代码进行测试。目前对于c/c++项目,可以采用google的gtest框架,除此之外在github上搜索之后可以发现很多其他类似功能的项目。但把别......
  • syslinux引导扇区不支持NTFS文件系统
      在使用UltraISO制作ubuntu启动U盘时遇到如下报错 001、问题     以下是解决方法:002、  003、  004、  005、 ......
  • Linux下第一个C语言程序
    前置环境1.系统版本:centos7。2.已安装gcc用命令gcc-v查看gcc版本。3.根据自己编程风格选择路径创建代码文件夹mkdir(可递归创建)、rmdir(删除文件夹)。4.vimhelloWorl......
  • LINUX学习之用户及用户组管理(九)
    用户账号管理用户账号的管理涉及添加、删除和修改用户账号信息。而这些操作实际上就是对/etc/passwd文件进行更新useradd命令描述useradd命令用于添加新用户,以下是u......
  • Linux系统文件和目录(持续更新)
    前置环境1.windows11下虚拟机安装CentOS7、windows下安装finalshell2.centos7终端ifconfig查看虚拟机ip地址,finalshell中配置连接(为方便使用)初始文件目录环境1.图形化......
  • linux下screen基本用法
    文章目录1、screen创建:2、进入指定screen3、展示screen列表4、关闭指定的screen5、从当前窗口切回主屏幕(不关闭屏幕)1、screen创建:screen-S屏幕名称2、进入指定screens......
  • linux-网络
            ......