首页 > 系统相关 >Linux - 输入输出重定向及管道符

Linux - 输入输出重定向及管道符

时间:2023-03-07 19:01:07浏览次数:41  
标签:输出 重定向 read 输入输出 echo Linux world hello

输入输出重定向

  • 标准输入(0)
  • 标准输出(1)
  • 错误输出(2)

程序接收用户标准输入,根据输入的指令执行程序,执行完成后进行标准输出,当程序异常时,会有错误输出。

输入重定向:把文件导入到命令中

输出重定向:把命令输出的信息导入到文件中

  • 标准输出重定向
  • 错误输出重定向
  • 清空写入模式
  • 追加写入模式
# 将标准输出重定向到文件内
$ echo 111 > log

# 将标准输入重定向到指定文件
# 控制台就不会接收键盘指令了,直接从文件读取输入
$ read a < log

# 将内容标准输出
$ echo $a
111

# 错误输出;123 为不存在的目录
# 错误信息并没有重定向到文件内,而是在控制台输出了
$ ls 123 > error
ls: 123: No such file or directory

# 默认为标准输出,不需要添加文件描述符 1
# 错误输出需要添加文件描述符 2 才可以重定向到文件
$ ls 123 2> error
$ cat error
ls: 123: No such file or directory

# 将错误输出与标准输出共同写入到文件
$ (echo 123; ls 456) > error 2>&1
$ cat error
123
ls: 456: No such file or directory

以上都为清空写入模式,将输出重定向到一个新的文件,下面是追加写入模式的例子。

$ echo "add test 1" >> test
$ echo "add test 2" >> test
$ cat test
add test 1
add test 2

管道

重定向的作用就是将命令与文件连接,Linux 还有一种功能将命令与命令连接,也就是把前一个命令的输出作为后一个命令的输入,以这种方式连接形成了 管道,管道符为

# 将第一个命令的标准输出作为第二个命令的标准输入
# {} 代表代码块
$ echo world | { read line; echo hello $line!; }
hello world!

管道执行的上下文控制

$ echo hello world | read x; echo $x

$ echo $x

通过这个方式无法直接输出变量 x,因为通过管道符连接 echo hello world | read x; 两个命令后,后者是通过子进程的方式运行的,执行完后就销毁,所以是打印不到变量 x 的。

  1. 通过代码块连接方式执行;
  2. 使用逻辑控制 while read 组合;
$ echo hello world | { read x; echo $x;}
hello world

$ echo hello world | while read x; do echo $x; done
hello world

标签:输出,重定向,read,输入输出,echo,Linux,world,hello
From: https://www.cnblogs.com/abeelan/p/17189195.html

相关文章

  • Linux - shell 脚本基础
    Shell是一种应用程序,提供用户通过界面访问操作系统内核的服务。shell脚本是为shell编写的脚本程序,Linux的shell编程种类较多,比如:/bin/sh/bin/bash/bin/zsh......
  • Linux - 设置环境变量
    PATH变量是一个路径列表,以:隔开;如果可执行程序所在的目录在PATH变量路径列表里,那么输入命令时可以省略路径路径列表前面的路径为优先匹配路径,匹配到即停止,可以用来......
  • Linux - 本机与服务器文件互传(rz&sz)
    软件版本:secureCRTVersion8.7.3(build2279)rz和sz都是使用Zmodem文件传输协议。rz:ReceiveZmodemsz:SendZmodem#centOS安装命令$yum-yinstal......
  • Linux - 常用文本编辑命令
    Linux常用文本编辑命令汇总sort对文本内容进行排序。常用参数:-b:忽略每行左侧的空白字符-n:按数字大小排序-V:按照数字版本排序-h:根据存储容量排序(KB、MB、GB)-r:倒......
  • QT Linux下编译qwt3d
    原文链接 1、从下面网址下载bugfix版本的qwtplot3dhttps://sourceforge.net/p/qwtplot3d/code/HEAD/tree/branches/multiple_curves_0_2_x/  2、解压刚刚下载的......
  • Linux安装MySQL
    演示系统:CentOS-7-x86_64。一、软件下载线上下载:MySQLProductArchives某度下载:wget下载:wgethttps://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.30-1.el7.x86_6......
  • Linux(Centos7)下rpm方式安装MySQL
    1.卸载已有MySQL1.1.查看是否已安装mysqlrpm-qa|grep-imysql如果系统已安装,请卸载删除。1.2.删除MySQL删除命令:rpm-e--nodeps包名rpm-evmysql-......
  • linux基本功系列之mv命令实战
    前言linux常用命令之文件管理命令,目前已经进行到第10个,今天我们一起来看看mv命令。日常工作中,我们把文件移走或者改名都是用的mv命令1、MV命令的介绍mv命令来自于英文单词mo......
  • Linux基础命令使用
    1.CentOS安装和卸载Python3卸载python3rpm-qa|greppython3|xargsrpm-ev--allmatches--nodeps卸载pyhton3whereispython3|xargsrm-frv删除所有残余文件......
  • Linux卸载删除gitlab
    1、停止gitlab服务gitlab-ctlstop2、卸载gitlab(社区版)rpm-egitlab-ce或者 yumremovegitlab-ce3、查看gitlab进程psaux|grepgitlab 4、杀掉gitlab......