ca888会员登录Shell输入/输出重定向

2019-05-04 14:56栏目:IT操作系统

贰 表示专门的学问错误文件(stderr)。

Shell输入/输出重定向,shell输出重定向

出口重定向 重定向一般通过在命令间插入特定的号子来落到实处。特其余,这么些标志的语法如下所示

command1 > file1

上边那几个命令实行command1然后将出口的剧情存入file一。 注意任何file1内的早已存在的源委将被新故事情节替代。如果要将新内容增添在文件末尾,请使用>>操作符。   实例 施行上面包车型客车 who 命令,它将下令的欧洲经济共同体的出口重定向在用户文件中(users)

who > users

执行后,并从未在终点输出音讯,那是因为出口已被从暗中认可的正统输出设备(终端)重定向到钦点的文本。 你能够选用 cat 命令查看文件内容

cat users
h tty7 2017-08-10 11:48 (:0)

输入重定向 和输出重定向一样,Unix 命令也可以从文件获取输入,语法为

command1 < file1

这么,本来要求从键盘获取输入的命令会转移到文件读取内容 注意:输出重定向是超过号(>),输入重定向是小于号(<)   实例 接着以上实例,大家须求总计 users 文件的行数,实施以下命令

$ wc -l users
1 users

wc(Word Count)命令的效能为计算钦定文件中的字节数、字数、行数,并将总结结果展现输出:-l 总计行数 也能够将输入重定向到 users 文件

$  wc -l < users
1 

专注:上边多少个例子的结果不一样:第叁个例证,会输出文件名;第贰个不会,因为它唯有明白从正规输入读取内容。

command1 < infile > outfile

与此同时替换输入和出口,施行command1,从文件infile读取内容,然后将出口写入到outfile中。 重定向深入批注 一般情状下,各种 Unix/Linux 命令运维时都会张开七个公文:

  • 行业内部输入文件(stdin):stdin的文件讲述符为0,Unix程序暗中认可从stdin读取数据
  • 规范输出文件(stdout):stdout 的文件讲述符为一,Unix程序私下认可向stdout输出数据
  • 正式错误文件(stderr):stderr的文件讲述符 为二,Unix程序会向stderr流中写入错误音信

暗中同意意况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。

借使希望 stderr 重定向到 file,能够这么写:

command 2 > file

即便期待 stderr 追加到 file 文件末尾,能够这么写:

command 2 >> file

2 表示专门的学问错误文件(stderr)。 假若指望将 stdout 和 stderr 合并后重定向到 file,能够如此写:

$ command > file 2>&1
# 或者
$ command >> file 2>&1

只要期望对 stdin 和 stdout 都重定向,可以如此写:

command < file1 > file2

command 命令将 stdin 重定向到 file一,将 stdout 重定向到 file2 Here Document Here Document 是 Shell 中的一种独特的重定向格局,用来将输入重定向到1个交互式 Shell 脚本或程序。 它的骨干方式如下:

command << delimiter
    document
delimiter

它的效应是将八个 delimiter 之间的剧情(document) 作为输入传递给 command。 注意: 结尾的delimiter 一定要顶格写,前边无法有其它字符,前边也无法有任何字符,包蕴空格和 tab 缩进。早先的delimiter前后的空格会被忽视掉。   实例 在指令行中通过 wc -l 命令计算 Here Document 的行数:

$ wc -l << EOF
    欢迎来到
    弗雷塞斯
    www.cnblogs.com/freescience
EOF
3  # 输出结果为 3 行

大家也得以将 Here Document 用在剧本中,比方:

#!/bin/bash
cat << EOF
欢迎来到
弗雷塞斯
www.cnblogs.com/freescience
EOF

实践以上脚本,输出结果: 应接来到 弗雷塞斯 www.cnblogs.com/freescience /dev/null 文件 假如希望实施某些命令,但又不期望在显示屏上突显输出结果,那么能够将出口重定向到 /dev/null:

command > /dev/null

/dev/null 是2个独辟蹊径的公文,写入到它的剧情都会被丢掉;假如尝试从该公文读取内容,那么怎么样也读不到。但是/dev/null 文件越发有用,将下令的输出重定向到它,会起到"禁止出口"的功力。 如若期待屏蔽 stdout 和 stderr,能够如此写:

command > /dev/null 2>&1

留神:0 是正规输入(STDIN),一 是正式输出(STDOUT),二是正经错误输出(STDECR-V奇骏)

输出重定向 重定向一般经过在指令间插入特定的标识来落到实处。尤其的,那几个标识的语法如下所示 c...

command 2 >file

我们也得以将 Here Document 用在剧本中,例如:

command 2 >>file

实例

$ command >file 2>&1
# 或者
$ command >>file 2>&1
# & 表示等同于的意思,2>&1,表示2的输出重定向等同于1
  • 正式输入文件(stdin):stdin的文书讲述符为0,Unix程序默许从stdin读取数据
  • 职业输出文件(stdout):stdout 的文书讲述符为一,Unix程序暗许向stdout输出数据
  • ca888会员登录,规范错误文件(stderr):stderr的文书讲述符 为2,Unix程序会向stderr流中写入错误消息

推行上面包车型地铁 who 命令,它将指令的完全的输出重定向在用户文件中(users)

留意任何file壹内的已经存在的内容将被新内容代替。尽管要将新剧情加多在文件末尾,请使用>>操作符。

/dev/null 文件

Here Document

只顾:上面三个例子的结果不一致:第三个例证,会输出文件名;第二个不会,因为它仅仅驾驭从规范输入读取内容。

再者替换输入和输出,实施command一,从文件infile读取内容,然后将出口写入到outfile中。

在意:输出重定向是超过号(>),输入重定向是低于号(<)

如此,本来供给从键盘获取输入的命令会转移到文件读取内容

#!/bin/bash
cat <<EOF
欢迎来到
弗雷塞斯
www.cnblogs.com/freescience
EOF

执行以上脚本,输出结果:

www.cnblogs.com/freescience

在命令行中通过 wc -l 命令总括 Here Document 的行数:

倘使期望对 stdin 和 stdout 都重定向,能够如此写:

输入重定向

它的中心形式如下:

$  wc -l <users
1 
who >users

若是指望将 stdout 和 stderr 合并后重定向到 file,能够那样写:

command >/dev/null

比方希望 stderr 追加到 file 文件末尾,能够那样写:

$ wc -l <<EOF
    欢迎来到
    弗雷塞斯
    www.cnblogs.com/freescience
EOF
3  # 输出结果为 3 行

 

/dev/null 是贰个非正规的文本,写入到它的从头到尾的经过都会被撤除;假诺尝试从该公文读取内容,那么怎么样也读不到。但是/dev/null 文件充裕有用,将指令的出口重定向到它,会起到"禁止出口"的成效。

 

暗中认可情状下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。

和出口重定向一样,Unix 命令也得以从文件获取输入,语法为

版权声明:本文由ca888发布于IT操作系统,转载请注明出处:ca888会员登录Shell输入/输出重定向