SHELL脚本学习总结--文件描述符和重定向

文件描述符是与文件输入和输出的相关联的整数,它们用来追踪已打开的文件,文件描述符0,1,2是系统预留的。

    0 --> stdin (标准输入)

    1 --> stdout (标准输出)

    2 --> stderr (标准错误)

$ echo a1>a1
$ cp a1 a2;cp a2 a3
$ cat a*
cat: a1: Permission denied
a1
a1

将0定向到std.txt,将2定向到err.txt

$ cat a* >std.txt 2>err.txt

将0和1都定向到out.txt

$ cat a* >out.txt 2>&1.txt

tee命令

  将stdin重定向到文本中并且在屏幕打印出来。

$ cat a*|tee out.txt
cat: a1: Permission denied
a1
a1
$ cat out.txt
a1
a1

注意:out.txt并不包含“cat: a1: Permission denied”,因为它只能从stdin中进行读取。

默认的tee命令会将文件覆盖,但提供一个-a的选项用于追加。

$ cat a*|tee -a out.txt

重定向脚本内部的文本块
#/bin/bash
sqlplus /nolog <<EOF >log.txt
conn scott/tiger
select * from cat;
commit;
exit
EOF

<<EOF >log.txt和EOF之间的内容会被当做stdin,stdout会被重定向到log.txt。

自定义文件描述符

  •  创建一个文件描述符用于写入
$ exec 4>output.txt
$ echo newline >&4
$ cat output.txt
newline
  • 创建一个文件描述符用于读取


$ echo hello >input.txt $ exec 3<input.txt
$ cat <&3
hello

 
时间: 2024-10-09 10:35:31

SHELL脚本学习总结--文件描述符和重定向的相关文章

文件描述符的重定向

关于文件描述符的重定向,有三种方法,分别为dup(),dup2(),dup3(). 下面即为三种函数的原型,本文主要介绍前两种函数的使用.其中dup()接受一个参数,将旧的文件描述符重定向到新的文件中. 而dup2()接受两个参数,一个为新的文件描述符,另一个为旧的文件描述符.dup3()的原理同dup2(). 下图是三种函数的相关描述: 这些函数的返回值为,成功则返回新的文件描述符,失败返回-1. 进行dup()和dup2()的程序编写,其中注释的为dup()的相关语句. 本程序经过测试是正确

文件描述符与重定向

文件描述符简介:文件描述符在形式上是一个非负整数,每一个文件描述符会与一个打开文件相对应,内核利用文件描述符来访问文件,最广为人知的文件描述符有stdin(标准输入),stdout(标准输出),stderr(标准错误),系统分别事先为它们保留了三个文件描述符0,1,2,我们也可以通过特殊命令给我们的的文件指定文件描述符. 重定向的意思:Linux中,IO重定向是将某一个文件描述符的内容转移到另一个指定的文件描述符中,通常与文件描述符有关. 最常用的我们可以将标准输出的内容重定向到指定文件中.通过

shell文件描述符及重定向

文件描述符是与文件输入.输出相关联的整数.它用来跟踪已经打开的文件.最常见的文件描述符是stdin.stdout.stderr.我们甚至可以将某个文件描述的内容重定向到另一个文件描述符中.文件描述符0,1,2是系统预留的: 0----stdin(标准输入) 1----stdout(标准输出) 2----stderr(标准错误) 实例 (一).将输出的文本重定向到一个文件中: [[email protected] shell]# echo "this is a example test"

Shell命令(2)——文件描述符和重定向符

文件描述符 stdin:标准输入,接收鼠标.键盘或其他输入设备的输入信息,文件描述符是1 stduot:输出所有的正常输出结果,文件描述符是2 stderr:输出所有错误信息,文件描述符是3 重定向符 “>":使用方法,“command > file",进程接受标准输入后,该重定向符使得标准输出改变方向,不输出到屏幕,而是输出到一个文件.标准错误输出依然不变,默认输出到屏幕或相应的设备.另外,若文件已存在,则原有内容就会被擦除.例如: ”>>" :与上

linux专题一之文件描述符、重定向、管道符、tee命令

本节讨论一下几个问题: 1. 文件描述符. 2. 重定向. 3. 管道符 4. tee的用法. 1. 文件描述符. 在linux系统中一切皆文件.文件夹和设备都是文件.如何用来区别不同的文件呢?这里的区别不是我们在windows下看到的后缀名不同来区别.也不是我们在linux下用ls 命令看到的不同文件的列表.这里的文件描述符主要讨论的是对文件操作的一个标识符.无操作就无标识符.   比如两个进程同时在对同一个文件进行读操作. 如何区分这两个读操作呢?这就需要文件文件描述符来区别了.每一次打开一

Linux --- 文件描述符和重定向

1.预备知识 标准输入(stdin).标准输出(stdout)和标准错误(stderr)是编写脚本的时候经常使用的,因为输出的信息可能是上述的一种. 文件描述符 是与打开的某个文件或者数据流相关联的整数.文件描述符0,1,2是系统预留的. 0 - stdin(标准输入) 1 - stdout(标准输出) 2 - stderr(标准错误) 2.实例 echo This is a sample. > temp.txt 可将文本输出到 temp.txt 中,是通过截断文件的方式,也就是说在echo命令

文件描述符和重定向

文件描述符是一个打开的文件或数据流相关联的证书 0-------stdin 标准输入 1-------stdout 标准输出 2-------stderr 标准错误 # echo “this is a file” > file.txt //将this is a file 重定向到文件file.txt中 # echo "this is a file 2" >> file.txt //将this is a file2 重定向到文件file.txt中,这种方法会将文本追加到

【Linux】文件描述符与重定向

重定向符号 符号 描述 > 输出重定向到一个文件或设备 覆盖原来的文件 >! 输出重定向到一个文件或设备 强制覆盖原来的文件 >> 输出重定向到一个文件或设备 追加原来的文件 < 输入重定向到一个程序 标准错误重定向符号 符号 描述 2> 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 2>> 将一个标准错误输出重定向到一个文件或设备 追加到原来的文件 2>&1 将一个标准错误输出重定向到标准输出 注释:1 标准输出 >&

Shell重定向文件描述符

#!/bin/bash  最近在看shell,各种困惑,不过解决困惑的感觉还是很不错的.废话少说,linux中使用文件描述符来标识每个文件对象.文件描述符为一个非负整数,可以唯一标识会话中打开的文件.每个过程最多可以有9个文件描述符. linux使用的标准文件描述符: 标准输入STDIN就是0,标准输出STDOUT就是1,标准错误输出STDERR就是2.而我们也可以自己创建文件描述符3~8. 将今天看到的一段代码: 1    #!/bin/bash 2    exec  3>&1 3