“ - ”是指bash中的stdout吗?

时间:2010-09-26 12:36:57

标签: bash

“ - ”是bash中stdout的快捷方式吗?如果不是什么意思?例如,

wget -q -O - $line 

stdin怎么样?

谢谢和问候!

4 个答案:

答案 0 :(得分:15)

据我所知,bash并未涉及破折号的使用。当在命令行上替换输入或输出文件名时,许多UNIX命令行实用程序的惯例是-作为stdinstdout的占位符。

<小时/> 修改:找到它,此行为在开放群组基本规范POSIX Utility Syntax Guidelines, §12.2.13中指定:

对于使用操作数来表示要打开以进行读取或写入的文件的实用程序,“ - ”操作数应仅用于表示标准输入(或从上下文中清除指定输出文件时的标准输出) )。

答案 1 :(得分:8)

-只是wget(以及其他一些工具)使用的约定,表明输出将被发送到stdout。它不是bash的一部分,但它是一个由命令本身处理的特殊情况(如果您认为是这种情况,某些命令将最终创建“-”文件)。您可以将其替换为/dev/stdout(并且在适当时通常可以使用/dev/stdin作为输入文件。)

答案 2 :(得分:2)

-在bash中并不特别,它只是作为程序的参数给出。那么它取决于程序如何解释-

通常它表示应该使用stdin或stdout,具体取决于上下文。

答案 3 :(得分:1)

这取决于程序。通常,-表示“发送到输出”。

使用read

#!/bin/bash

echo -n "What's your name? "
read var1
echo "hello $var1"