1、Linux标准输入输出
Linux标准输入、输出设备主要是键盘和显示器,详细介绍如下表所示。
Linux标准输入输出 | |||||
设备 | 设备文件名 | 文件描述符 | 类型 | 符号表示 | |
键盘 | /dev/stdin | 0(缺省是键盘,为0时是文件或者其他命令的输出) | 标准输入 | < | << |
显示器 | /dev/stdout | 1(缺省是屏幕,为1时是文件) | 标准输出 | > | >> |
显示器 | /dev/stderr | 2(缺省是屏幕,为2时是文件) | 标准错误输出 | 2> | 2>> |
注:其中一个>表示:覆盖原文件中的内容;如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候
两个>即>>表示:追加到原文件中的内容之后;果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响
2、Linux输出重定向
输出重定向:改变程序运行的输入来源和输出地点。
主要的适用方法如下表所示:
输出重定向 | ||
类型 | 符号 | 功能 |
标准输出重定向 | 命令 >文件 | 以覆盖方式,把命令的正确输出内容输出到指定的文件或设备当中 |
命令 >>文件 | 以追加方式,把命令的正确输出内容输出到指定的文件或设备当中 | |
标准错误输出重定向 | 错误命令 2>文件 | 以覆盖方式,把命令的错误输出内容输出到指定的文件或设备当中 |
错误命令 2>>文件 | 以追加方式,把命令的错误输出内容输出到指定的文件或设备当中 | |
正确/错误输出同时保存 | 命令 > 文件 2>&1 | 以覆盖方式,把命令的正确输出和错误输出内容保存到同一个文件当中 |
命令 >> 文件 2>&1 | 以追加方式,把命令的正确输出和错误输出内容保存到同一个文件当中 | |
命令 &> 文件 | 以覆盖方式,把命令的正确输出和错误输出内容保存到同一个文件当中 | |
命令 &>> 文件 | 以追加方式,把命令的正确输出和错误输出内容保存到同一个文件当中 | |
命令 >>文件1 2>文件2 | 以追加方式,把命令的正确输出保存在文件1中;以覆盖方式,把命令的错误输出内容保存到文件2中 |
3、Linux输入重定向
输入重定向 | ||
类型 | 符号 | 功能 |
标准输入 | 命令 <文件1 | 命令把文件1的内容作为标准输入 |
标识符限定输入 | 命令 <<标识符 | 命令从标准输入中读入内容,直到遇到“标识符”分界符位置 |
输入输出重定向 | 命令 <文件1 >文件2 | 命令把文件1的内容作为标准输入,把文件2作为标准输出 |
总结一五Linux的输入输出重定向:
1、重新设置命令的默认输入,输出,指向到自己文件(文件,文件描述符,设备其实都是文件,因为linux就是基于设备也是文件,描述符也指向是文件)
2、扩展自己新的描述符,对文件进行读写操作
本文向大家介绍linux shell数据重定向(输入重定向与输出重定向)详细分析,包括了linux shell数据重定向(输入重定向与输出重定向)详细分析的使用技巧和注意事项,需要的朋友参考一下 在了解重定向之前,我们先来看看linux 的文件描述符。 linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操
问题内容: 我正在尝试使用C为Linux创建一个基本的shell。在我尝试进行输出重定向之前,它已经可以工作了,并且它破坏了一切。当我运行此代码时,它直接进入fork()的默认情况。我不知道为什么。如果我在子进程中摆脱了for循环,那么它就可以工作,但是即使有了for循环,我也不明白为什么子进程甚至从未输入。如果将打印语句放在子进程的顶部,则不会打印出来。 当我在命令行中运行此命令时,我得到提示并
1. Shell 重定向 1.1 Shell 重定向是什么 我们在之前章节有学习 echo/printf 来将我们的需求输出,此时就是我们将系统的返回输出到我们标准终端,使得我们能够看到正常的输出的结果,Unix 命令默认的输入设备即 stdin 为键盘,标准和错误设备即 stdout 为显示器,我们利用重定向可以将输入改为文件,或者将输出重新定向到其他设备或文件中。 1.2 为什么要用重定向 我
大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。 命令 说明 command > file 将输出重定向到 file。 command < file 将输入重定向到 file。 command >> file 将输出以
嗨,我一直在用c编写shell,我在尝试重定向时卡住了。虽然在我的程序中重定向标准输出有效,但标准输入不起作用。 我是< code>fork()的新手,但我的问题是我在这里做错了什么,重定向stdout可以工作,但stdin不会向给定的文件写入任何内容。
问题内容: 我正在尝试使用以下代码重定向在ProcessBuilder的帮助下启动的流程的输出 但是它以失败告终 线程“主”中的异常java.io.IOException:无法运行程序“ / myScript >> / myLogFile 2>&1 <&-&”:java.io.IOException:error = 2,java.lang中没有此类文件或目录.ProcessBuilder.star