导航:首页 > 操作系统 > linux标准输出重定向

linux标准输出重定向

发布时间:2022-09-28 00:32:18

linux 如何把一个程序的所有输出内容重定向,程序A调用库函数B,如何运行A时console不输出任何打印信息

直接使用输出重定向到你想要的文件即可,不过将所有的控制到信息输出到一个文本文件,只有两个办法:
①:修改所有程序的输出路径:printf函数 echo.....几乎是不可能完成的任务
②:修改linux的标准输出路径:
句柄 句柄的数字代号 描述
STDIN 0 键盘输入
STDOUT 1 输出到命令提示符窗口
STDERR 2 错误输出到命令提示符窗口
将标准输出 标准输出的默认设置更改为你要保存的文件,这样就会控制台的信息就会输出到你指定的文件里面

Ⅱ linux中的输出重定向是什么意思

输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。在日常的学习和工作中,相较于输入重定向,我们使用输出重定向的频率更高,所以又将输出重定向分为了标准输出重定向和错误输出重定向两种不同的技术,以及清空写入与追加写入两种模式。听起来就很玄妙?

标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。

错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。

比如我们分别查看两个文件的属性信息,其中第二个文件是不存在的,虽然针对这两个文件的操作都分别会在屏幕上输出一些数据信息,但这两个操作的差异其实很大:

[root@linuxprobe~]#touchlinuxprobe
[root@linuxprobe~]#ls-llinuxprobe
-rw-r--r--.1rootroot0Aug505:35linuxprobe
[root@linuxprobe~]#ls-lxxxxxx
ls:cannotaccessxxxxxx:Nosuchfileordirectory
#命令来自->http://www.linuxprobe.com/chapter-03.html#31

在上述命令中,名为linuxprobe的文件是存在的,输出信息是该文件的一些相关权限、所有者、所属组、文件大小及修改时间等信息,这也是该命令的标准输出信息。而名为xxxxxx的第二个文件是不存在的,因此在执行完ls命令之后显示的报错提示信息也是该命令的错误输出信息。那么,要想把原本输出到屏幕上的数据转而写入到文件当中,就要区别对待这两种输出信息。

命令>文件将标准输出重定向到一个文件中(清空原有文件的数据)
命令2>文件将错误输出重定向到一个文件中(清空原有文件的数据)
命令>>文件将标准输出重定向到一个文件中(追加到原有内容的后面)
命令2>>文件将错误输出重定向到一个文件中(追加到原有内容的后面)
命令>>文件2>&1或命令&>>文件将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

Ⅲ linux中的重定向问题

不管是>>还是2>>都属于追加重定向。也就说,新重定向的内容不会覆盖掉原有文件里的内容,而是另起一行。只不过>>,是只对正确的内容或者结果进行重定向;而2>>,只对错误的内容或结果进行重定向。
比如原有文件a.txt,里面有一内容this is a test。现在我执行了命令:ls -l >> a.txt, 那么这个时候,因为的ls -l这个命令是正确的,所以ls -l 这个命令的结果将会被追加到a.txt中,以行为单位,写在了this is a test这段内容下面。
相反如果我执行了命令aaaa 2>> a.txt,那么因为这个命令是错的,所以会把我执行的aaaa命令之后所提示的错误提示(比如: command not found)追加到a.txt,同样是在this is a test这段话的下面。

而> 和2>却是不追加,而是覆盖掉原有内容,其他意思一样。

Ⅳ linux 的输入输出重定向要怎么用

Linux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作。

Linux默认输入是键盘,输出是显示器。你可以用重定向来改变这些设置。比如用wc命令的时候本来是要手动输入一篇文字来计算字符数的,用了重定向后可以直接把一个已经写好的文件用‘<’指向这条命令,就直接可以统计这个文件的字符数等了。输出也是一样,你可以把屏幕输出重定向到一个文件里,再到文件里去看结果。重定向操作符可以用来将命令输入和输出数据流从默认位置重定向到其他位置,其输入或输出数据流的位置称为句柄;常见的句柄有三种,当然句柄可以自行扩展,一般的OS都提供类似的功能。句柄 句柄代号 句柄描述

STDIN 0 键盘输入

STDOUT 1 输出信息到提示符窗口

STDERR 2 输出错误信息到提示符窗口

默认的 < 重定向输入操作符是 0,而默认的 > 重定向输出操作符是 1。键入 < 或 > 操作符之后,必须指定数据的读写位置,可以是文件名或其他现有的句柄。

要指定重定向到现有句柄,请使用与 & 字符,后面接要重定向的句柄号(即 &句柄号)。

例如,下面的命令可以将句柄 2(即 STDERR)重定向到句柄 1(即 STDOUT):2>&1

下表列出了可用于重定向输入和输出数据流的操作符:

Linux重定向操作符 功能描述

> 将命令输出写入文件或设备,而不是命令提示符或句柄

< 从文件而不是从键盘或句柄读入命令输入

>> 将命令输出添加到文件末尾而不删除文件中已有的信息

>& 将一个句柄的输出写入到另一个句柄的输入中

<& 从一个句柄读取输入并将其写入到另一个句柄输出中

| 从一个命令中读取输出并将其写入另一个命令的输入中;也称为管道操作符

现在我们回过头来看看上面的那条语句mysh > mylog.txt 2>&1就可明白:

> mylog.txt意思是将标准输出重定向到mylog.txt,等价于mysh 1> mylog.txt;

2 >& 1 意思是将错误输出重定向到句柄1标准输出;综合起来就是mysh命令执行过程中产生的标准输出和错误输出都会被重定向到mylog.txt中;

重定向的功能十分强大,有兴趣的可以去尝试各种不同的组合,看看前后位置变下会有什么结果?

某些时候我们可能并不希望记录什么标准输出或者是错误输出,那可以用mysh >null 2>null或者mysh >/dev/null 2>/dev/null;

I/O重定向详解

1、 基本概念(这是理解后面的知识的前提,请务必理解)

a、 I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9;

b、 常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor、monitor有关;

c、 用 < 来改变读进的数据信道(stdin),使之从指定的档案读进;

d、 用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案;

e、 0 是 < 的默认值,因此 < 与 0<是一样的;同理,> 与 1> 是一样的;

f、 在IO重定向 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料;

g、 管道“|”(pipe line):上一个命令的 stdout 接到下一个命令的 stdin;

h、 tee 命令是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去;

i、 bash(ksh)执行命令的过程:分析命令-变量求值-命令替代(``和$( ))-重定向-通配符展开-确定路径-执行命令;

j、 ( ) 将 command group 置于 sub-shell 去执行,也称 nested sub-shell,它有一点非常重要的特性是:继承父shell的Standard input, output, and error plus any other open file descriptors。

k、 exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境。

2、 基本IO

cmd > file 把 stdout 重定向到 file 文件中;

cmd >> file 把 stdout 重定向到 file 文件中(追加);

cmd 1> fiel 把 stdout 重定向到 file 文件中;

cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;

cmd 2> file 把 stderr 重定向到 file 文件中;

cmd 2>> file 把 stderr 重定向到 file 文件中(追加);

cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 文件中(追加);

cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;

cat <>file 以读写的方式打开 file;

cmd < file cmd 命令以 file 文件作为 stdin;

cmd << delimiter Here document,从 stdin 中读入,直至遇到 delimiter 分界符。

3、 进阶IO

>&n 使用系统调用 p (2) 复制文件描述符 n 并把结果用作标准输出;

<&n 标准输入复制自文件描述符 n;

<&- 关闭标准输入(键盘);

>&- 关闭标准输出;

n<&- 表示将 n 号输入关闭;

n>&- 表示将 n 号输出关闭;

上述所有形式都可以前导一个数字,此时建立的文件描述符由这个数字指定而不是缺省的 0 或 1。如:

... 2>file 运行一个命令并把错误输出(文件描述符 2)定向到 file。

... 2>&1 运行一个命令并把它的标准输出和输出合并。(严格的说是通过复制文件描述符 1 来建立文件描述符 2 ,但效果通常是合并了两个流。)

我们对 2>&1详细说明一下 :2>&1 也就是 FD2=FD1 ,这里并不是说FD2 的值 等于FD1的值,因为 > 是改变送出的数据信道,也就是说把 FD2 的 “数据输出通道” 改为 FD1 的 “数据输出通道”。如果仅仅这样,这个改变好像没有什么作用,因为 FD2 的默认输出和 FD1的默认输出本来都是 monitor,一样的!但是,当 FD1 是其他文件,甚至是其他 FD 时,这个就具有特殊的用途了。请大家务必理解这一点。

exec 0exec 1>outfilename # 打开文件outfilename作为stdout。

exec 2>errfilename # 打开文件 errfilename作为 stderr。

exec 0<&- # 关闭 FD0。

exec 1>&- # 关闭 FD1。

exec 5>&- # 关闭 FD5。

这样就完成了Linux重定向的学习。

Ⅳ 我学习到了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 '[0-9]+' 2>&1 > /dev/null ; then echo "This is number."; fi
This is number.

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

Ⅵ linux下C++ 标准输出重定向问题,能不能将标准输出重定向到我的C++代码中的字符串中

可以啊,建议使用stringstream类。

stringstreamss;
cout.rdbuf(ss.rdbuf());

这样标准输出cout就重定向到了ss中,获取ss中的字符串可以用string s=ss.str();这样可以一次性全部取出字符串。

Ⅶ linux 怎么把标准输出重定向其他文件

command > filename 把把标准输出重定向到一个新文件中
command >> filename 把把标准输出重定向到一个文件中(追加)
command 1 > fielname 把把标准输出重定向到一个文件中
command > filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中
command 2 > filename 把把标准错误重定向到一个文件中
command 2 >> filename 把把标准输出重定向到一个文件中(追加)
command >> filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中(追加)
command < filename > filename2把command命令以filename文件作为标准输入,以filename2文件作为标准输出
command < filename 把command命令以filename文件作为标准输入
command << delimiter 把从标准输入中读入,直至遇到delimiter分界符
command <&m 把把文件描述符m作为标准输入
command >&m 把把标准输出重定向到文件描述符m中
command <&- 把关闭标准输入

Ⅷ 请解释linux中的“重定向”的概念,由浅入深!

重定向是个操作系统的概念
它的主要含义是将原本从一个输入输出设备的输入输出操作,转向到从另外一个输入输出设备进行。
例如:linux系统中sh启动进程时会默认打开三个输入输出文件:标准输入文件、标准输出文件和标准错误文件(一般情况下是控制台),他们的文件句柄分别是0,1,2,
有时候你需要将进程的输出输出到一个文件的时候,你会这样处理:a>file.txt(假定a是程序名称)
那么sh就会将默认的两个输出文件1和2改为:file.txt
这就叫重定向。
例如下面的sh命令:a
<fa.txt
1>fo.txt
2>fe.txt
sh就将0的输入文件该向为:fa.txt,也就是将输入改为从文件fa.txt
将1输出文件重定向为:fo.txt
将2输出文件重定向为:fe.txt
一般这些都是操作系统记得内容,基本上与开发没有关系,你说gfortran要用重定向,我不太明白。

Ⅸ linux系统中输出重定向是指

Linux下默认有两种输出流:
1 - 标准输出流
2 - 标准错误输出流
Linux下一切皆文件,这里的1和2表示的就是输出设备文件的文件描述符。
默认情况下,无论是标准输出还是标准错误输出,都是输出到终端显示的。
但也可以通过重定向输出到其他地方,如文件。这就是输出重定向。
并且,这两种输出流可以被分别重定向。

下面举例:
假设文件file.txt在当前目录下并不存在,执行下面的命令:

ls file.txt 2>log.txt
这样就将错误输出重定向到文件log.txt中。

ls file.txt 2>/dev/null
这样就什么都看不到,将标准错误输出流重定向到/dev/null中,丢弃了。

ls file.txt >/dev/null
只将标准输出重定向到/dev/null中,这样仍然可以在终端窗口看到错误输出。
注:>/dev/null 等同于 1>/dev/null,前面的1可省略。

由于问题比较具体建议对照刘遄老师的《Linux就该这么学》

阅读全文

与linux标准输出重定向相关的资料

热点内容
androidlibgdx下载 浏览:408
联盟pdf下载 浏览:792
南通住房公积金app支取银行怎么填 浏览:680
韩国剧情电影男主自杀2次是什么电影 浏览:646
李彩谭电影全部 浏览:703
范伟乔杉电影叫什么名字 浏览:467
中国十大免费电影网站 浏览:509
一富豪请两个女的的电影 浏览:701
如何云服务器搭建游戏 浏览:561
魔兽猎人宏命令 浏览:433
翁虹电影大全 浏览:990
如何把文件夹改变为安装包 浏览:299
地震勘探pdf 浏览:690
c语言怎样给字符串加密 浏览:583
什么网站可以看剧情 浏览:533
cad图纸空间命令 浏览:136
GRA26K 浏览:479
单片机stm32实验心得体会 浏览:618
php压缩包如何安装 浏览:647
免费看慢网站 浏览:151