zoukankan      html  css  js  c++  java
  • 数据流重定向

      数据流重定向

     重定向:>和>>是将标准输出导向一个文件或追加到一个文件中。

     数据流重定向

     $ echo 'hello world' > redirect

     $ echo 'www.baidu.com' >> redirect

     $ cat redirect

     <、<<、>、>>它们的区别在于重定向的方向不一致,>表示从左到右,<表示从右到左。

     简单的重定向

     3个特殊设备用于终端的显示和输出:stdin(标准输入)、stdout(标准输出)、stderr(标准错误输出)

     文件描述符:文件描述符在形式上是一个非负整数。实际上他是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。

     文件描述符     设备文件           说明

           0           /dev/stdin       标准输入

        1          /dev/stdout     标准输出

        2          /dev/stderr      标准错误

      另外还有一个符号-。可以同时作为前一个命令。

     管道默认是连接前一个命令的输出到下一个命令的输入,重定向通常需要一个文件来建立两个命令的链接。

     标准错误重定向:标准输出和标准错误通常都被指向伪终端的屏幕显示。

     $ cat Documents/test.c~ hello.c  #报错  hello.c不存在

     $ cat Documents/test.c~ hello.c > file1  #报错  hello.c不存在

     $ cat Documents/test.c~ hello.c > file1 2>&1   #将标准错误重定向到标准输出,再将标准输出重定向文件

     $ cat file1 #可查看错误信息

     $ cat Documents/test.c~ hello.c &> file2  #将标准错误重定向到标准输出,再将标准输出重定向文件

     使用tee命令同时重定向到多个文件

     $ echo 'hello world' | tee hello #将字符输出到hello的同时输出到终端

     永久重定向:使用exec命令实现永久重定向。exec命令的作用是使用指定的命令替换当前的shell及使用一个进程替换当前进程,或指定新的重定向

     $ zsh #开启一个子shell

     $ exec 1>somefile #使用exec替换当前进程的重定向,将标准输出重定向到一个文件

     $ ls

     $ exit

     $ cat somefile

     创建输出文件描述符:默认在shell中有9个打开的文件描述符。

     $ cd /dev/fd/;ls -A1  #打开当前shell进程中的文件描述符

     创建新的文件描述符

     $ zsh

     $ exec 3>somefile

     $ cd /dev/fd/;ls -A1;cd - #先进入目录,再查看

     $ echo 'this is test' >&3

     $ cat somefile 

     $ exit  

     关闭文件描述符

     $ exec 3>&-

     $ cd /dev/fd;ls -A1;cd -

     完全屏蔽命令的输出:在Linux中有一个被成为“黑洞”的设备文件,所有导入它的数据都将被吞噬。在类Unix系统中,/dev/null或称空设备,是一个特殊的设备文件,他通常被用于丢弃不需要的输出流,或作为用于输入流的空文件,这些操作通常由重定向完成。读取它则会立即得到一个EOF。

     $ cat Documents/test.c~ nefile 1>/dev/null 2>&1

     使用xargs分割参数列表:xargs是一条UNIX和类UNIX操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。

     $ cut -d: -f1 < /etc/passwd | sort | xargs echo #将/etc/passwd文件按:分割取第一个字段排序后,使用echo命令生成一个列表

     

     $ sudo apt-get install caca-utils

     $ cacaview <pic_file>

     $ cacademo

     $ cacafire #带颜色的火焰哦

  • 相关阅读:
    Study Plan The TwentySecond Day
    Study Plan The Nineteenth Day
    Study Plan The TwentySeventh Day
    Study Plan The Twentieth Day
    Study Plan The TwentyFirst Day
    python实现进程的三种方式及其区别
    yum makecache
    JSONPath 表达式的使用
    oracle执行cmd的实现方法
    php daodb插入、更新与删除数据
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/4701276.html
Copyright © 2011-2022 走看看