导航:首页 > 编程语言 > linux编程重定向

linux编程重定向

发布时间:2023-04-06 08:49:28

‘壹’ linux重定向的基本概念

(这是理解后面的知识的前提,请务必理解)
a、 I/O重定向通常与 FD 有关,shell的FD通常为10个,即 0~9;
b、 常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、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的标准输入、标准输出、标准错误和任何其他打开的文件描述符。
k、 exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境。

‘贰’ [Linux]实用指令:重定向、追加

[Linux]入门
[Linux]目录结构
[Linux]vi,vim
[Linux]开机、重启和用户登录注销

[Linux]用户管理篇:创建用户指定密码
[Linux]用户管理篇:删除用户
[Linux]用户管理篇:组的管理

[Linux] 实用指令:运行级别和找回root密码
[Linux] 实用指令:帮助指令
[Linux]实用指令: pwd、ls、cd
[Linux]实用指令:mkdir、rmdir、touch
[Linux]实用指令:cp、 rm、mv
[Linux]实用指令: cat、more、less
[Linux]实用指令:重定向、追加
[Linux]实用指令:echo、head 、tail
[Linux]实用指令:ln 、history

‘叁’ 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命令的输入输出与文件之间重定向,以及实现将多个命令组合起来实现更加强大的命令。这部分涉及到的比较多的命令主要有:

cat:连接文件 sort:排序文本行 uniq:忽略或者报告重复行

wc:统计文件的行数、词数、字节数

grep:打印匹配制定模式的行

head:输出文件的头部 tail:输出文件的尾部

tee:从标准输入读,并往标准输出或者文件写

  1. 重定向标准输出

    使用>可以将本来出现在屏幕的标准输出信息重定向到一个文件中。

    使用>>可以在实现重定向时不覆盖原有内容,而是在文件末尾追加内容。

  2. 重定向标准错误信息到文件

    使用文件描述符,在shell中,默认用数字0,1,2分别代表标准输入、标准输出、标准错误。

  3. 屏蔽不想看到的信息

    Linux中有一个特殊的文件/dev/null,这个文件叫做bit bucket,可以接受输入信息但是什么都不做。例如:ls/usr/> /dev/null

  4. 重定向标准输入

    cat命令可以接受一组文件为参数,将这些文件复制到标准输出。我们前面的例子中已经多次使用到cat命令来将文本文件的内容读取到屏幕上。cat还有一个很重要的功能:接受一组文件,然后通过重定向将他们重新组合到一个文件中。

    cat ls1 ls2 > ls这个命令将ls1和ls2文件中的内容合并到ls文件中了。cat命令的这种功能不仅仅适用于文本文件,同样对二进制文件有效。这个场景主要在将多个压缩包文件合并到一个压缩包中用到。

    cat也可以不传递参数,这种情况下,cat会重定向标准输入到标准输出。

  5. 管道

    Linux提供|操作符,该操作符可以将一个命令的输出作为另一个命令的输入,这样通过多个命令的协作来完成一些比较复杂的内容。比如,我们可以通过uniq命令来排除重复的行。但是uniq命令往往需要和sort命令配合使用。因为uniq接收一组排好序的文本,而刚好sort可以将文本行排序。


‘伍’ linux中怎么实现重定向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编程重定向相关的资料

热点内容
linuxftp自动登录 浏览:802
运行编译后网页 浏览:70
阅读app怎么使用 浏览:319
centos防火墙命令 浏览:432
命令行变更 浏览:332
linux设备和驱动 浏览:207
加密货币骗局破案 浏览:345
cc特征码加密 浏览:775
清空dns缓存命令 浏览:295
文件夹单击右键一直转圈 浏览:820
天天玩乐园是哪个app 浏览:395
单片机数码管动态显示效果图 浏览:874
备用dns服务器地址可以调吗 浏览:267
ad剑魔和app哪个好 浏览:865
java的undefined 浏览:813
列表的合并与排序python代码 浏览:324
编译原理英文版pdf下载 浏览:951
c单片机pdf 浏览:827
adb下载命令 浏览:126
安卓怎么打开pdf 浏览:108