linux中的重定向问题

linux中的重定向问题,第1张

不管是>>还是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>却是不追加,而是覆盖掉原有内容,其他意思一样。

在您实现输出的那行命令后面加上>、>>、<、<<、2>、2>>来实现重定向。

>是每一次重定向时将原先的内容先删除然后写入新的数据。

>>是每一次重定向时将新的内容加入到就内容的后面。

<是将指定文件内容重定向到相关命令或者文件中,同时每次执行时先删除旧的再加入新的。

<<作用同上,只是将新的信息加到旧的信息后面。

2>是将命令执行报错时,将错误信息重定向至指定文件,并且每次执行都会先删除旧的再加入新的。

2>>和上面一条命里作用一样,只是将新的错误信息加到原来信息的后面

举例:

1.ls /etc/passwd >user

2.ls /etc/passwd >>user

3.ls idjsoigjs >test

4.ls idjsoigjs >>test

5. mail 用户名 -s "邮件题目" <file (file是你建的一个文件,里面内容随意自己定)

然后输入 mail 可以看到自己有封邮件题目为(您自定义的名字),输入相应的数字,您可以按到信件内容为file内容,这就是利用重定向直接将已写好的信件内容发送出去。

至于1-4的结果,楼主可在输入完后自行查看user和test的变化来进行对比。

对照刘遄老师的《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要用重定向,我不太明白。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8315825.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存