欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Linux shell 脚本 IO 重定向

最编程 2024-03-01 15:28:22
...

shell IO


shell脚本或者Linux终端上,常用的IO文件描述符有三个:


  • 0 标准输入(stdin


  • 1 标准输出 (stdout


  • 2 标准错误 (stderr)


标准输入一般为键盘,标准输出和标准错误一般都是显示器。可以在shell脚本的后面添加 >filename,将标准输出重定向到文件中。


重定向


一般情况下,shell脚本的标准输出和标准错误都是输出到显示器上的,我们可以通过IO重定向,将标准输出和标准错误重定向其他文件或设备。


IO重定向的一般形式如下:


$ echo "hello,world" > filename
  $ echo "hello,world`  1>filename
  $ echo "some errors" 2>error


  • & 是一个描述符,如果1或2前不加&,会被当成一个普通文件。


  • 1>&2 意思是把标准输出重定向到标准错误.


  • 2>&1 意思是把标准错误输出重定向到标准输出。


  • &>filename 意思是把标准输出和标准错误输出都重定向到文件filename中


示例


#!/usr/bin/env bash
    set -uxe
    echo "error" >&2 #将error输出到标准出错
    echo "succ"  >&1 #将succ输出到标准输出
    
    注意:2和1之前需要&,否则,其会被当作文件名,并且>前后不能有空格。


$ ./io.sh 2>stderr 1>stdin #将标准输出重定向到stdin文件,标准错误输出到stderr文件,注意,2与>,1与>之间没有空格。


$ ./io.sh 1>stdin 2>&1 #将标准错误和标准输出都重定向到stdin文件中。
$ cat stdin
error
stdin


$ ./io.sh 2>stderr 1>&2 #将标准错误和标准输出重定向到stderr文件。
$ ./io.sh &>stderr #将标准错误和标准输出重定向到stderr文件,与第一个运行方式效果相同。
注意:>前后不要有空格。
$ cat stderr
error
stdin


$ ./io.sh &>/dev/null #标准输出和标准错误重定向到/dev/null设备