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标准输入输出与重定向详解|果断收藏
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用户密码
linux shell中关于输入重定向的问题
重定向就是这样的,命令的结果只能输出到一个地方,了解原理就可以理解了。
在 IO Redirection中,stdout或 stderr的管道总是会先准备好,然后才将命令执行结果给导入。
你给的例子中,先重定向到/111.txt,再重定向到/222.txt,因此管道最终是接入了/222.txt。stdout只有一根管道,输入端是固定的,你只是在不停地移动输出端,当然是以最后的为准啦。
建议你去看看《Shell十三问》,里面有关于 IO Redirection的详细解释。
解决方法就是用 tee命令:
ls-l| tee/111.txt>/222.txt