码迷,mamicode.com
首页 > 系统相关 > 详细

Linux下的标准输入,输出,重定向,管道

时间:2020-08-17 16:36:36      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:output   标准输出   输出   存储   理论   man   重要   linux   程序   

Linux系统中,有4个特殊符号  <   >  |  -   在我们处理输入和输出时存在重要但具有迷惑性的作用

  • > 表示重定向 , >filename就是把标准输出村存储到文件filename里面,标准错误错误还是会显示在屏幕上。
  • 2 >&1  表示把标准错误重定向到标准输出。Linux终端用2表示标准错误,1表示标准输出。
  • -(短横线) 表示标准输入,一般用于一个程序需要多个输入的时候。
  • <  标准输入,后面可以跟产生输出的命令,一般用于一个程序需要多个输入的时候,相比-适用范围更广
  • | 管道符,表示把前一个命令的输出作为后一个命令的输入。用于数据在不同的命令之间传输,用途是减少硬盘存取损耗。
#! /bin/bash
echo "I am std output"
#下面是随笔写的一个理论上不存在的命令,会报错
unexisted_command

#输出
#I am std output
#stdout_error.sh: 行 4: unexisted_command:未找到命令
cat <<END | diff - <(echo "1 2 3" | tr   \n)
>2
>2
>4
>END
0a1
>1
3d3
<4
#diff是比较两个文件的差异,需要两个参数
#-(短横线)表示上一个命令的参数,传递给diff
#< 表示其后的命令的输出,也重定向给diff

  

管道符的更多应用  

echo "actgaaaaacccccg" | tr   \n | wc -l
>3

echo "a b c" | tr   \n | sed =
1
a
2
b
3
c
#sed = :先输出行号,再输出每行内容

echo "actg aaaaa ccccg" | tr   \n | sed = | sed N;s/\n/\t/g
>1
actg
>2
aaaaa
>3
cccccg
#N表示读入下一行;sed命令每次只读一行,加上N;之后,就是缓存了第二行
#s:替换

 

Linux下的标准输入,输出,重定向,管道

标签:output   标准输出   输出   存储   理论   man   重要   linux   程序   

原文地址:https://www.cnblogs.com/shengtudai/p/13499001.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!