linux输入重定向 linux 重定向详解

其实linux输入重定向的问题并不复杂,但是又很多的朋友都不太了解linux 重定向详解,因此呢,今天小编就来为大家分享linux输入重定向的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

linux重定向输出到文件linux重定向输出

linux中管道是指什么,重定向是指什么?

管道是把一个命令的输出作为下一个命令的输入,

如ls/etc|more

cat/etc/passwd|greproot

重定向是把一个命令的输出重定向到另一个文件

如echo'hello'>abc.txt一个大于号是抹除源文件内容并写入,如果没有这个文件就创建这个文件并写入

echo'helloworld'>>/var/log/messages两个大于号是追加内容到这个文件,没有这个文件就创建并写入

cat/etc/sysconfig/network-scripts/ifc-eth0>>abcd.txt

break2>/dev/null

linux中如何保存find查找出来的内容到一个文档?

find./-namexxx>filename把标准输出重定向到filename中find./-namexxx>>filename把标准输出追加到filename中

LINUX题,“请叙述重定向符号>和>>的异同”?

同:它们的作用都是改变各种提示信息的输出方向,把提示信息输出到指定的地方去——各种提示信息默认是输出到屏幕上去的.异:它们的作用稍有差别。

单个的>表示以覆盖方式重定向提示信息,也就是说如果目的地原来有内容,将把原来的内容清除掉,用新内容填充;>>表示以追加的方式重定向提示信息,也就是说,如果目的地原来有内容,原有的内容将保持不变,在原有内容之后追加新内容。例如:假设d:/test.txt中的内容是:ILovebatch。那么,在cmd窗口中,分别使用如下两条语句:echome,too>d:/test.txt和echome,too>>d:/test.txt,将会发现,使用第一条语句之后,test.txt中只有一行内容:me,too,而使用第二条语句之后,test.txt中将有两行内容,分别是ILovebatch和me,too。

linuxC程序中如何获取shell的脚本输出呢?

你说的是LinuxC程序获取shell脚本(命令)输出吧,这里简单介绍3种方式,分别是临时文件、匿名管道和popen函数,感兴趣的朋友可以尝试一下:

临时文件

这种方式最容易实现,基本思想是调用C语言标准库的system函数,运行shell命令或脚本,将输出结果重定向到一个临时文件中,然后读取临时文件,获取shell执行结果,测试代码如下,非常简单,输入参数分别为shell命令(脚本)和临时文件名,最终结果保存在临时文件中:

匿名管道

这种方式主要是管道,先pipe创建一个匿名管道,然后fork创建一个子进程,子进程运行shell命令或脚本,并将标准输出dup到匿名管道的写端,父进程再从匿名管道读端读取数据即可,测试代码如下,非常简单,子进程对应写端,父进程对应读端:

popen函数

这种方式最简单,C标准库专门提供了一个popen函数,可以非常简单的处理调用shell,基本思想创建一个管道,fork一个进程,然后执行shell,而shell的输出可以采用读取文件的方式获得,这种方式既避免了创建临时文件,又不受输出字符数的限制,推荐使用:

目前,就分享这3种LinuxC程序获取shell脚本(命令)输出的方式吧,对于日常开发应用来说,完全够用了,只要你有一定的C语言基础,熟悉一下上面的代码,很快就能掌握的,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

linux shell中关于输入重定向的问题

重定向就是这样的,命令的结果只能输出到一个地方,了解原理就可以理解了。

在 IO Redirection中,stdout或 stderr的管道总是会先准备好,然后才将命令执行结果给导入。

你给的例子中,先重定向到/111.txt,再重定向到/222.txt,因此管道最终是接入了/222.txt。stdout只有一根管道,输入端是固定的,你只是在不停地移动输出端,当然是以最后的为准啦。

建议你去看看《Shell十三问》,里面有关于 IO Redirection的详细解释。

解决方法就是用 tee命令:

ls-l| tee/111.txt>/222.txt

Linux标准输入输出与重定向详解|果断收藏

linux中的>、>>、<、<<、2>、2>>、2>&1、&>、&<,总归要面对的

为了更好的理解这个问题,我们需要追本溯源。

执行一个shell命令行时通常会自动打开三个标准文件

(1)、标准输入文件(stdin)

通常对应终端的键盘。

(2)、标准输出文件(stdout)。

(3)、标准错误输出文件(stderr)。

(2)和(3)这两个文件都对应终端的屏幕。

进程将从标准输入文件中得到输入数据。

将正常输出数据输出到标准输出文件[显示器]。

将错误信息送到标准错误文件中[显示器]。

下图所示:

0、1、2表示一个文件描述符

但是,有时候我们不想把一些进程处理后信息输出到显示器。

这时我们就引出了重定向。

改变标准输入/输出的方向

三种重定向:

1、重定向标准输出,包括两种。

(1)、>(覆盖),等价1>

将命令执行的结果输出到指定文件,非显示器。

(2)、>>(追加),等价1>>

将命令执行的结果追加到指定文件,非显示器。

2、重定向标准输入,包括两种。

(1)、<

将命令中接收的输入途径,由键盘改为指定文件。

(2)、<<[Here Document]

命令序列传递到一个交互程序或者命令中。

3、重定向标准错误,包括两种。

(1)、2>(覆盖)

将命令执行的结果输出到指定文件。

(2)、2>>(追加)

将命令执行的结果追加到指定文件。

1、重定向标准输出和重定向标准错误到同一个文件中

有以下的几种方式

(1)、2>&1

(2)、>&

(3)、&>

2、两个特殊文件

(1)、/dev/nul

过滤标准错误信息

意思就是不想显示结果就输出到这里面。

(2)、/dev/zero

创建指定长度的文件

案例1:

测试> and>>

案例2:

测试< and<<

测试<

测试<<

案例3:

测试2> and 2>>

案例4:

测试重定向标准输出和重定向标准错误到同一个文件中

(1)、>&

(2)、&>

与上面的案例类似,不做解释

(3)、2>&1

案例5:

使用/dev/nul文件

有时候我们使用命令,不想将输出的信息显示到界面

这时我们可以使用&>/dev/nul[常用]

简单测试修改demo用户密码

阅读剩余
THE END