IO重定向和管理及管道

IO重定向

  通常对程序来讲,输入输出数据可以是键盘、鼠标、显示器等;IO重定向就是将原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器输出而是希望输入到某以文件中的可以通过Linux重定向进行这项工作。

 IO重定向和FD(File Descriptor)有关。

     标准输入(stdin): 0  默认是键盘

     标准输出(stdout): 1 默认是显示器

     标准错误输出(stdeer): 2 默认是显示器

     

   标准输出重定向格式    

          COMMAND 1>FILE.OUT COMMAND 1>>FILE.OUT

  1>:覆盖标准输出重定向,输出到一个已存的文件,之前的文件会被清除覆盖   1(可以不加)

  1>>:追加标准输出重定向,输出到目标文件,目标文件汇总的原有文件会被删除

   标准错误输出重定向格式

          COMMAND 2>FILEERR.OUT COMMAND 2>>FILEERR.OUT

         

[root@localhost testdir]# cp /etc/issue ./ #复制一个文件做实验
[root@localhost testdir]# echo "overwrite file " >issue #覆盖重定向到文件中
[root@localhost testdir]# cat issue 
overwrite file #之前的新加的覆盖
[root@localhost testdir]# echo "add newline context" >>issue #追加到尾行
[root@localhost testdir]# cat issue 
overwrite file 
add newline context #输如的加到尾行


   2>:覆盖标准错误输出重定向,输出到目标文件,目标文件汇总的原有文件会被删除

   2>>:追加标准错误输出重定向,输出到目标文件,新内容追加到目标文件的尾部

   

[root@localhost testdir]# cp /etc/fstab ./ #复制来做实验
[root@localhost testdir]# cat fstab  #查看源文件内容
#
# /etc/fstab
# Created by anaconda on Tue Jul 26 08:01:18 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=62e9e57b-3452-4314-8567-85566ca642dc /                       xfs     defaults        0 0
UUID=bb3ff6b4-e9c3-4090-b968-5affdb57782e /boot                   xfs     defaults        0 0
UUID=366cf2a1-0923-4d99-bc20-35d93082ac3a /usr                    xfs     defaults        0 0
UUID=58be63b5-585a-49e7-a8c2-b9b49cf44860 swap                    swap    defaults        0 0
[root@localhost testdir]# cat /etcccc 2>fstab #标准错误覆盖输如
[root@localhost testdir]# cat fstab 
cat: /etcccc: No such file or directory #只有错误输出提示
[root@localhost testdir]# ca /etc/ifconfig 2>>fstab #追加错误输出
[root@localhost testdir]# cat fstab 
cat: /etcccc: No such file or directory
-bash: ca: command not found #追加到尾行

   标准输出和错误输出各自不同的位置 

           COMMAND > /PATH/TO/FILE.OUT 2>/PATH/TO/ERR.OUT

           COMMAND >>/PATH/TO/FILE.OUT 2>>/PATH/TO/ERR.OUT

[root@localhost testdir]# cp /etc/issue.net  /etc/issue ./ #复制实验文件
[root@localhost testdir]# cat /etc/issue issue.net  #查看原内容
\S
Kernel \r on an \m
Mage Education Learning Services
http://www.magedu.com
\S
Kernel \r on an \m
[root@localhost testdir]# cat /etc/centos-release /ssdd >issue 2>issue.net #标准输出和错误输出到不同位置
[root@localhost testdir]# cat issue #标准输出显示
CentOS Linux release 7.2.1511 (Core) 
[root@localhost testdir]# cat issue.net #错误输出显示
cat: /ssdd: No such file or directory

   

    合并标准输出和错误输出为同一个数据流进行定向

        &>:覆盖重定向

       &>>:追加重定向

            COMMAND> /PATH/TO/FILEOUT 2>&1

            COMMAND>>/PATH/TO/FILEOUT 2>>&1

            COMMAND &>/PATH/TO/FILEOUT

            COMMAND &>>/PATH/TO/FILEOUT

root@localhost testdir]# cp /etc/redhat-release ./ #复制文件做实验
[root@localhost testdir]# cat /etc/fstab /eqd >redhat-release 2>&1 #合并输入到同一文件  (固定格式不得更改)
[root@localhost testdir]# cat redhat-release 
#
# /etc/fstab #显示合并输出文件
# Created by anaconda on Tue Jul 26 08:01:18 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=62e9e57b-3452-4314-8567-85566ca642dc /                       xfs     defaults        0 0
UUID=bb3ff6b4-e9c3-4090-b968-5affdb57782e /boot                   xfs     defaults        0 0
UUID=366cf2a1-0923-4d99-bc20-35d93082ac3a /usr                    xfs     defaults        0 0
UUID=58be63b5-585a-49e7-a8c2-b9b49cf44860 swap                    swap    defaults        0 0
cat: /eqd: No such file or directory #错误输入在尾行
[root@localhost testdir]# cp /etc/fstab ./  #另一种合并输出
[root@localhost testdir]# cat /etc/fstab a123fd &>>fstab 
[root@localhost testdir]# cat fstab 
#
# /etc/fstab
# Created by anaconda on Tue Jul 26 08:01:18 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=62e9e57b-3452-4314-8567-85566ca642dc /                       xfs     defaults        0 0
UUID=bb3ff6b4-e9c3-4090-b968-5affdb57782e /boot                   xfs     defaults        0 0
UUID=366cf2a1-0923-4d99-bc20-35d93082ac3a /usr                    xfs     defaults        0 0
UUID=58be63b5-585a-49e7-a8c2-b9b49cf44860 swap                    swap    defaults        0 0
#
# /etc/fstab
# Created by anaconda on Tue Jul 26 08:01:18 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=62e9e57b-3452-4314-8567-85566ca642dc /                       xfs     defaults        0 0
UUID=bb3ff6b4-e9c3-4090-b968-5affdb57782e /boot                   xfs     defaults        0 0
UUID=366cf2a1-0923-4d99-bc20-35d93082ac3a /usr                    xfs     defaults        0 0
UUID=58be63b5-585a-49e7-a8c2-b9b49cf44860 swap                    swap    defaults        0 0
cat: a123fd: No such file or directory

   

合并多个命令输出 :()

 

[root@localhost testdir]# (cal 8 2016;cal 12 2016) >day.txt #多命令输出
[root@localhost testdir]# cat day.txt #查看输出结果
     August 2016    
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20     #输出结果
21 22 23 24 25 26 27
28 29 30 31
    December 2016   
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

   标准输入重定向,

          COMMAND> FILE.OUT<FILEIN.IN  :把标准输入覆盖到标准输出中

          COMMAND <<EOF    <<标准输入结束符

[root@localhost ~]# ls -a 
.                .bashrc    Downloads        Music     Templates
..               .cache     .esd_auth        Pictures  Videos
anaconda-ks.cfg  .config    .gstreamer-0.10  Public    .viminfo
.bash_history    .cshrc     .gtkrc-2.0-kde4  qwe       .Xauthority
.bash_logout     Desktop    .kde             .ssh
.bash_profile    Documents  .local           .tcshrc
[root@localhost ~]# cat >.bashrc <.bash_profile 
[root@localhost ~]# ll .bashrc .bash_profile 
-rw-r--r--. 1 root root 176 Dec 29  2013 .bash_profile
-rw-r--r--. 1 root root 176 Aug  4 22:14 .bashrc

管道

   将一个命令的输出当做另一命令的输入!

格式   COMMAND1 |COMMAND2|COMMAND3

[root@localhost testdir]# cat /etc/issue |tr 'a-z' 'A-Z'# cat查看结果用tr转换显示
\S   #转换结果
KERNEL \R ON AN \M
MAGE EDUCATION LEARNING SERVICES
HTTP://WWW.MAGEDU.COM

原创文章,作者:ladsdm,如若转载,请注明出处:http://www.178linux.com/29095

(1)
ladsdmladsdm
上一篇 2016-08-05 10:17
下一篇 2016-08-05 10:17

相关推荐

  • Linux文件和目录管理

    Linux目录和文件管理 Linux文件信息详述 文件数据存储在块中 文件元数据存储在inode中 文件名和其对应的inode号码存储在目录项中 数据块的概念: 文件在硬盘上的最小存储单位叫做扇区,1扇区=512字节,操作系统读取硬盘的时候不会一个一个读,这样太慢,会一次连续读多个扇区,即一个读取一个“块”,常见的 1块=八个扇区=4kB inode的概念:…

    Linux干货 2016-11-04
  • N25第六周作业

    vim编辑器 基本模式: 编辑模式,命令模式 输入模式 末行模式: 内置的命令行接口;   打开文件: # vim [options] [file ..] +#:打开文件后,直接让光标处于第#行的行首; +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;   模式转换: 编辑模式:默认模式 编辑模式 &…

    Linux干货 2017-02-15
  • MBR与GPT分区结构的不同及磁盘分区命令总结

    一、MBR分区结构 主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是目前比较流行的一种分区结构。磁盘的0磁道0扇区称为MBR,它的大小是512字节,这个区域被分为三个部分: 第一部分为boot loader(主引导程序),占446字节; 第二部分为Partition table(分区表),即DPT,占64字节,每个分区项…

    Linux干货 2016-08-29
  • 负载均衡LVS原理及其应用

    一、LB常用解决方案     1. 硬件负载均衡解决方案:          F5公司: BIG-IP         Citrix公司: …

    Linux干货 2015-12-28
  • Linux基本命令

    前言 今天学习了Linux下的一些基本命令,在此归纳总结一下这些命令的基本用法。 Linux命令帮助的获取     在拿到一个命令后不知道其用法,我们可以通过命令帮助来查看它的用法,但linux下内部命令和外部命令获取帮助的方法是有差别的。     内部命令:help command &n…

    Linux干货 2016-10-14
  • 如何监控Linux文件系统事件:inotify使用指南

    如何监控Linux文件系统事件:inotify使用指南 §·inotify初识 Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具。 §·inoti…

    Linux干货 2016-10-30