linux重定向及管道

1、bash的的I/O重定向及管道
        程序:指令+数据
            读入数据:Input
            输出数据:Output
        打开的文件都有一个fd: file descriptor (文件描述符)

标准输入:keyborad, 0
        标准输出:monitor, 1
        标准错误输出:monitor, 2

I/O重定向:改变标准位置

输出重定向:COMMAND > NEW_POS, COMMAND >> NEW_POS
            >:覆盖重定向,目标文件中的原有内容会被清除;
            >>: 追加重定向,新内容会追加至目标文件尾部;

# set -C: 禁止将内容覆盖输出至已有文件中;
                强制覆盖:>|
            # set +C:

            [[email protected] ~]# set +C
            [[email protected] ~]# cat /etc/hosts > a.txt
            [[email protected] ~]# set -C
            [[email protected] ~]# cat /etc/hosts > a.txt 
            -bash: a.txt: cannot overwrite existing file

2>: 覆盖重定向错误输出数据流;
            2>>: 追加重定向错误输出数据流;

标准输出和错误输出各自定向至不同位置:
                COMMAND > /path/to/file.out 2> /path/to/error.out

合并标准输出和错误输出为同一个数据流进行重定向:
                &>:覆盖重定向
                &>>:追加重定向

COMMAND > /path/to/file.out 2> &1
                COMMAND >> /path/to/file.out 2 > &1

                [[email protected] ~]# cat /etc/hosts >> /root/ddddd 2>>&1  //错误的   没有错误输出追加
                -bash: syntax error near unexpected token `&‘
                [[email protected]r ~]# cat /etc/hosts > /root/ddddd 2>&1
                [[email protected] ~]# cat /etc/hostsddd >> /addd.txtbb 2>saaa
                [[email protected] ~]# cat saaa 
                cat: /etc/hostsddd: No such file or directory
                [[email protected] ~]# cat /etc/hostsddd  &> saaahhh
                [[email protected] ~]# cat saaahhh 
                cat: /etc/hostsddd: No such file or directory
                [[email protected] ~]# cat /etc/hosts  &> saaahhhkkk
                [[email protected] ~]# cat saaahhhkkk 
                127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
                ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
                192.168.1.107  master
                192.168.1.108  slave

输入重定向:<

tr命令:转换或删除字符
                tr [OPTION]... SET1 [SET2]

/etc/fstab 内容 用A代替a

            [[email protected] ~]# tr a A < /etc/fstab 
            #
            # /etc/fstAb
            # CreAted by AnAcondA on Tue JAn 27 14:36:31 2015
            #
            # 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=6f424695-992e-43fb-845d-25f6cbA558b6 /                       ext4    defAults        1 1
            UUID=d2624A7b-cd31-4051-8f0e-2f08d03887b0 /boot                   ext4    defAults        1 2
            UUID=3fAb6886-6f9A-484e-bc98-000f0f29e57c swAp                    swAp    defAults        0 0
            tmpfs                   /dev/shm                tmpfs   defAults        0 0
            devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
            sysfs                   /sys                    sysfs   defAults        0 0
            proc                    /proc                   proc    defAults        0 0

小写字母编程大写字母

            [[email protected] ~]# tr a-z ‘A-Z‘ < /etc/fstab 
            #
            # /ETC/FSTAB
            # CREATED BY ANACONDA ON TUE JAN 27 14:36:31 2015
            #
            # 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=6F424695-992E-43FB-845D-25F6CBA558B6 /                       EXT4    DEFAULTS        1 1
            UUID=D2624A7B-CD31-4051-8F0E-2F08D03887B0 /BOOT                   EXT4    DEFAULTS        1 2
            UUID=3FAB6886-6F9A-484E-BC98-000F0F29E57C SWAP                    SWAP    DEFAULTS        0 0
            TMPFS                   /DEV/SHM                TMPFS   DEFAULTS        0 0
            DEVPTS                  /DEV/PTS                DEVPTS  GID=5,MODE=620  0 0
            SYSFS                   /SYS                    SYSFS   DEFAULTS        0 0
            PROC                    /PROC                   PROC    DEFAULTS        0 0

HERE Documentation:<<
            # cat << EOF
            # cat > /path/to/somefile << EOF
            
            
2、管道:
        COMMAND1 | COMMAND2 | COMMAND3 |...

Note:最后一个命令会在当前shell进程的子shell进程中执行;

tee命令:
            tee [OPTION]... [FILE]...
将环境变量变成大写字母及保存到/tmp/a.tx及打印出来

            [[email protected] ~]# echo $PATH | tr a-z A-Z | tee /tmp/a.txt
            /USR/LOCAL/SBIN:/USR/LOCAL/BIN:/SBIN:/BIN:/USR/SBIN:/USR/BIN:/USR/JAVA/JDK1.7.0_75/BIN:/USR/LOCAL/ZOOKEEPER-3.4.6/BIN:/USR/LOCAL/HADOOP-2.6.0/BIN:/ROOT/BIN
            [[email protected] ~]# cat /tmp/a.txt 
            /USR/LOCAL/SBIN:/USR/LOCAL/BIN:/SBIN:/BIN:/USR/SBIN:/USR/BIN:/USR/JAVA/JDK1.7.0_75/BIN:/USR/LOCAL/ZOOKEEPER-3.4.6/BIN:/USR/LOCAL/HADOOP-2.6.0/BIN:/ROOT/BIN

练习:
        1、将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中;

2、将登录至将前系统上用户信息中的后3行的信息转换为大写后保存至/tmp/who.out文件中;

            who | tail -n 3 | tr ‘a-z‘ ‘A-Z‘ > /tmp/who.out
时间: 2024-10-11 22:32:46

linux重定向及管道的相关文章

linux重定向和管道的使用

bash的I/O重定向及管道 程序是由程序+指令组成:或者是数据结构+算法 程序数据来自哪里,处理的结果又存放于哪里? 程序必须能够读入输出然后经过加工来产生结果:程序获取的数据可以使数据也可以hi变量.数据.列表文件等等,程序生产出来的结果可以是变量.数据.列表.文件等.也就是说,程序都有读入数据和输入数据的需求. 读入数据:Input 输出数据:Output 通常对于程序来说,输入输出数据可以是键盘.鼠标.显示器等:当然有时候输入的数据是程序自身内部所具有的,但我们认为这些数据应该是通过外部

Linux 重定向以及管道讲解

1.I/O重定向:input输入,output输出,我们先来看一下那些是输入那些是输出: 输入的数据流:<----标准输入(stdin)    键盘: 输出的数据流: ---->标准输出(stdout) 显示器: 错误的输出流: ---->错误输出 (stderr)显示器: 2.在shell里面标准输入和标准输出以及错误输出都分别有一个代号. 标准输入:0 标准输出:1 错误输出:2 3.重定向 从标准输入读入,标准输出输出,异常报告到标准错误. 以 > 改变标准输出 Comman

Linux运维学习历程-第六天-Linux重定向和管道

本章内容我们将学习linux中的重定向和管道两大用法 I/O输入与输出设备 重定向 管道 tee命令与tr命令 一.I/O设备 1.什么是I/O设备 管理和控制计算机的所有输入/输出(I/O)设备是操作系统的主要功能之一,主要分为字符设备和块设备.一般由机械和电子两个部分组成. 功能介绍 输入/输出(Input /Output ,简称I/O),指的是一切操作.程序或设备与计算机之间发生的数据传输过程. 输入/输出系统(Input/Output System) ,指控制计算机数据流动的体制,包括程

第五章 linux重定向和管道

重定向和管道 标准输入和输出: 程序:指令+数据 读入数据:Input 输出数据:Output 打开的文件都有一个fd: file descriptor (文件描述符) Linux给程序提供三种I/O设备 标准输入(STDIN)-0默认接受来自键盘的输入 标准输出(STDOUT)-1默认输出到终端窗口 标准错误(STDERR)-2默认输出到终端窗口 I/O重定向:改变默认位置 [[email protected] /app]#ls >/dev/pts/7 本终端窗口不进行输出,将结果输出到别的终

Linux 重定向与管道

标准输出重定向 ">" 操作符:覆盖目标文件内容 [email protected]:~/huey/linux/cmdline$ date > foo [email protected]:~/huey/linux/cmdline$ cat foo Fri May 8 09:55:42 CST 2015 ">>" 操作符:在目标文件尾部追加输出内容 [email protected]:~/huey/linux/cmdline$ date >

Linux 重定向、管道和 tr命令总给

描述:        标准输出(standard output)指的是命令执行所回传的正确的信息 标准输出(standard error output)指的是命令执行失败后所回传的错误信息 Linux 给程序提供三种I/O 设备 标准输入(STDIN )- 0 默认接受来自键盘的输入,使用< 或者 << 标准输出(STDOUT )- 1 默认输出到终端窗口,默认是屏幕,使用> 或者 >> 标准错误输出(STDERR )- 2 默认输出到终端窗口,默认是屏幕,使用2>

Linux重定向与管道简述

Shell命令进行I/O重定向, 默认标准正确输出路径在/dev/pts字符设备下 重定向数据流包含三种信息流1.标准输入流(stdin):代码为0,符号为<或<<2.标准输出流(stdout):代码为1,符号为>或>>3.标准错误流(stderr):代码为2,符号为2>或2>>重定向简解为3类形式1.>或2>:以覆盖的方式输出?2.>>或2>>:以追加的方式输出?3.<:标准输入流默认从键盘输入,<&l

Linux基础入门--IO重定向及管道

IO重定向及管道 一直都提到,程序:指令+数据 其实程序也有IO,数据的来源有多个地方:文件.外部 可用于输入的设备:文件(linux一切皆文件) 键盘设备.文件系统上的常规文件加载内容.网卡等: 可用于输出的设备:文件(linux一切皆文件) 显示器.文件系统上的常规文件输出保存.网卡等: 程序的数据流有三种: 输入的数据流:<-- 标准输入(stdin),是键盘: 输出的数据流:--> 标准输出(stdout),显示器: 错误输出流:  --> 错误输出(stderr),显示器: f

linux的输入输出重定向和管道

1. 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux为了跟踪打开文件,而分配的一个数字,(人是根据文件名追踪文件,系统则是根据文件描述符),这个数字有点类似c语言操作文件时候的指针,通过指针就可以实现文件的读写操作. 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值. linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出st