• 数据流重定向


      数据流重定向

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

     数据流重定向

     $ 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 #带颜色的火焰哦

  • 相关阅读:
    igraph——图挖掘助力社会网络分析
    python杀死线程
    深入浅出Node.js(四):Node.js的事件机制
    VS.NET调试问题
    Web服务器Tomcat JDK环境变量设置DOS BAT批处理脚本 陈光剑
    sp_help
    JadePool应用范例:查询与分页
    事关就业,我是否应该诚实?
    Linux SWAP 交换分区配置说明
    对学习数据结构的建议
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/4701276.html
Copyright © 2020-2023  润新知