(linux stdin)-冯金伟博客园

linux中stdout是什么?

我的:stdout是终端的标准输出。

我的分析:在Linux中执行命令,一般会打开三个标准文件。包括:标准输入文件stdin,标准输出文件stdout和标准错误输出的文件stderr。

 std代表标准的:standard,input/output表示输入/输出。err代表error错误。

标准输入文件,一般是stdin,对应的终端是键盘。

标准输出文件stdout和标准错误输出文件stderr,对应的终端是屏幕。

一般进程从标准输入文件中得到输入数据,比如参数。把正常输出数据输出到标准输出文件stdout,把错误信息送到标准错误输出文件中。

 Linux中一般用0表示stdin标准输入,用1表示stdout标准输出,用2表示stderr标准错误输出。

一般在默认的情况下,标准输出stdout是行缓冲的,是把输出放到一个buffer里面,只有换行的时候,才会输出到屏幕。

一般标准错误输出stderr是无缓冲的,直接输出。

linux输出·输入文件和标准输入,标准输出是什么意思啊?

Unix/Linux/BSD 都有三个特别文件,分别

1)标准输入 即 STDIN , 在 /dev/stdin ,

一般指键盘输入, shell里代号是 0

2) 标准输出 STDOUT, 在 /dev/stdout,

一般指终端(terminal), 就是显示器, shell里代号是 1

3) 标准错误 STDERR, 在 /dev/stderr

也是指终端(terminal), 不同的是, 错误信息送到这里

shell里代号是 2

2, 3用些例子再表达一下

User@User-PC ~

$ ls /dev/stdin

/dev/stdin@

User@User-PC ~

$ ls -l /dev/std*

lrwxrwxrwx 1 User Users 15 Mar 1 2008 /dev/stderr -> /proc/self/fd/2

lrwxrwxrwx 1 User Users 15 Mar 1 2008 /dev/stdin -> /proc/self/fd/0

lrwxrwxrwx 1 User Users 15 Mar 1 2008 /dev/stdout -> /proc/self/fd/1

就是这些东西了,呵呵

User@User-PC ~

$ ls 1> log1.txt

User@User-PC ~

$ cat log1.txt

Mail/

News/

a.txt

aa*

awkscr

b.txt

bb*

bin/

cc

cgitest.rex*

dd*

irc-sh*

junk

lib/

log1.txt

lynx.cfg

matrix/

perlscr*

pp*

rexx_script/

rrr

testawk

tmp/

trash

将标准输出导向到文件, 缩写就是 ls > log1.txt

User@User-PC ~

$ ls llll 1> log2.txt

ls: 无法存取 llll: No such file or directory

再次执行,但这次没有这个文件llll, 出现错误讯息

User@User-PC ~

$ cat log2.txt

User@User-PC ~

$ file log2.txt

log2.txt: empty

输出没有导向到文件,文件是空文件

User@User-PC ~

$ ls llll 2> log2.txt

User@User-PC ~

$ cat log2.txt

ls: 无法存取 llll: No such file or directory

User@User-PC ~

$

再次执行刚才的命令,只是将 1> log2.txt 改为 2> log2.txt

这次就成功把错误讯息导向至文件了,呵呵,

就是这样

所以,将标准输出和标准错误 一同导向到一个文件里,就得这样表达

命令 2>&1 > 档案, 如

User@User-PC ~

$ echo 123 | if grep -E ‘+’ 2>&1 > /dev/null ; then echo “This is number.”; fi

This is number.

grep 标准输出和标准错误 都导向到系统‘黑洞’,不会再屏幕上显示什麼

, 明白了吧? 呵呵

linux下的tar.gz文件为什么解压时却提示gzip: stdin: not in gzip format?

原因是这个压缩包没有用gzip格式压缩,所以不用加z指令。在解压tar.gz文件的时候报错[Sun@localhost Downloads]$ tar -zxvf clion-141.351.4.tar.gzgzip: stdin: not in gzip formattar: Child returned status 1tar: Error is not recoverable: exiting now.改为[Sun@localhost Downloads]$ tar -xvf clion-141.351.4.tar.gz,这样就可以了。把下载下来的文件重命名:mvapache-tomcat-6.0.26.tar.gzapache-tomcat-6.0.26.tar再执行解压命令:tar-zxvfapache-tomcat-6.0.26.tar上面就是Linux解压tar.gz文件出错的解决方法介绍了,只要知道tar.gz文件出错的原因,就能快速解决问题.

stdin是什么类型符?

stdin是文件描述符,代表标准输入(键盘等),也就是说在linux中stdin称为终端(Terminal)的标准输入(standard input)。

在linux中经常会看到stdin,stdout和stderr,这3个可以称为终端(Terminal)的标准输入(standard input),标准输出( standard out)和标准错误输出(standard error)。

通过man stdin查看手册,可以看到它们都是在stdio.h中定义的。 当linux开始执行程序的时候,程序默认会打开这3个文件流,这样就可以对终端进行输入输出操作。

linux下and什么时候输出数字?

0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error)

2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到文件中。