文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>shell学习<重定向>

shell学习<重定向>

时间:2007-08-29  来源:ank

I/O重定向
默认情况下始终有3个"文件"处于打开状态, stdin(键盘)<文件描述0>, stdout(屏幕),<文件描述1> 和stderr(错误消息输出到屏幕上)<文件描述2>. 这3个文件和其他打开的文件都可以被重定向.
文件描述3-9保留
  0< FILENAME < FILENAME
# 从文件中接受输入. 
# 与">"是成对命令, 并且通常都是结合使用. 
#
# grep search-word <filename
 
:> filename   #as cat /dev/null >filename   和 > filename
filename若在变为空文件,不在这创建
1>filename
# 重定向stdout到文件"filename".
1>>filena    
# 重定向并追加stdout到文件"filename".
2>filename
# 重定向stderr到文件"filename".
2>>filename
# 重定向并追加stderr到文件"filename".
&>filename
# 将stdout和stderr都重定向到文件"filename".
 
M>N
# "M"是一个文件描述符, 如果没有明确指定的话默认为1.
# "N"是一个文件名.
# 文件描述符"M"被重定向到文件"N".
M>&N
# "M"是一个文件描述符, 如果没有明确指定的话默认为1.
# "N"是另一个文件描述符.
[j]<>filename
# 为了读写"filename", 把文件"filename"打开, 并且将文件描述符"j"分配给它.
# 如果文件"filename"不存在, 那么就创建它.
# 如果文件描述符"j"没指定, 那默认是fd 0, stdin.
   
n<&-  #0<&-, <&-
关闭输入文件描述符n
n>&-  #1>&-, >&-
关闭输出文件描述符n.
      使用exec
exec <filename命令会将stdin重定向到文件中. 从这句开始, 所有的stdin就都来自于这个文件了, 而不是标准输入(通常都是键盘输入). 这样就提供了一种按行读取文件的方法, 并且可以使用sed和/或awk来对每一行进行分析.
 

 

1 #!/bin/bash

2 # upperconv.sh

3 # 将一个指定的输入文件转换为大写.

4

5 E_FILE_ACCESS=70

6 E_WRONG_ARGS=71 7

8 if [ ! -r "$1" ] # 判断指定的输入文件是否可读?

9 then

10 echo "Can't read from input file!"

11 echo "Usage: $0 input-file output-file"

12 exit $E_FILE_ACCESS

13 fi # 即使输入文件($1)没被指定

14 #+ 也还是会以相同的错误退出(为什么?).

15

16 if [ -z "$2" ]

17 then

18 echo "Need to specify output file."

19 echo "Usage: $0 input-file output-file"

20 exit $E_WRONG_ARGS

21 fi

22

23

24 exec 4<&0

25 exec < $1 # 将会从输入文件中读取.

26

27 exec 7>&1

28 exec > $2 # 将写到输出文件中.

29 # 假设输出文件是可写的(添加检查?).

30

31 # -----------------------------------------------

32 cat - | tr a-z A-Z # 转换为大写.

33 # ^^^^^ # 从stdin中读取.

34 # ^^^^^^^^^^ # 写到stdout上.

35 # 然而, stdin和stdout都被重定向了.

36 # -----------------------------------------------

37

38 exec 1>&7 7>&- # 恢复stout.

39 exec 0<&4 4<&- # 恢复stdin.

40

41 # 恢复之后, 下边这行代码将会如预期的一样打印到stdout上.

42 echo "File \"$1\" written to \"$2\" as uppercase conversion."

43

44 exit 0

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载