<与>的用法
来源:互联网 发布:惠普工作站笔记本 知乎 编辑:程序博客网 时间:2024/05/16 18:07
在shell进程中,最常用的FD(file descriptor)大概有三个,分别为:
0:Standard Input(STDIN)
1:Standard Output (STDOUT)
2:Standard Error Output (STDERR)
在标准情况下,这些FD分别跟如下设备(device)关联:
stdin(0):keyboard
stdout(1):monitor
stderr(2):monitor
可用 < 來改变读进的数据通道(stdin),使之从指定的档案读进。
可用 > 來改变送出的数据通道(stdout, stderr),使之输出到指定的档案。
严格来说, < 符号之前需要指定一个FD的(之间不能有空白),
因为0是 < 的预设值,因此 < 与 0< 是一样的。
<< 的用法:
这是所谓的 HERE Document,它可以让我们输入一段文本,直到读到 << 后指定的字串。
* 1> :改变stdout的数据输出通道
* 2> :改变stderr的数据输出通道
两者都是将原本要送出到monitor的数据转向输出到指定的档案去。
由于 1 是 > 的预设值,因此, 1> 与 > 是相同的,都是改变stdout。
* 2>&1 :就是将stderr并进stdout作输出
* 1>&2 或 >&2 :就是将stdout并进stderr作输出
在Linux文件系统里,有个设备档位于/dec/null。
这个null在I/O Redirection中的作用:
* 若将FD1 跟 FD2 转到 /dev/null 去,就可以将stdout 与 stderr 弄不见掉。
* 若将 FD0 接到 /dev/null 來,那就是读进 nothing。
&> 与 >& 的作用是将 stdout 与 stderr 输出到同一文件。
>> :追加到文件内容的后面。
set -o noclobber
设置使已存在的文件的内容不能覆盖,只能追加在文件内容的后面。 取消时使用 set +o noclobber
注:不取消set -o noclobber设置而又“临时“覆盖文件的内容:使用 “ >| ”(>与| 之间不能有空白)
例:
$ echo "some text here" > file $ cat < file some text here $ cat < file > file.bak $ cat < file.bak some text here $ cat < file > file $ cat < file
其中$ cat < file > file 之后原本有内容的档案结果却被洗掉了!
这是priority(优先权)的问题:
* 在IO Redirection 中,stdout 与 stderr 的管道会先准备好,才会从stdin读进资料。
也就是说,在上例中, >file 会先将file 清空,然后才读进 <file,
这时文件file已经被清空了,因此就会变成读不进任何资料了。
pipe line “ | ”
* 上一个命令的stdout 接到下一个命令的stdin 去了!
* 在pipe line 之间,前一个命令的stderr 是不会接进下一个命令的stdin的,
其输出若不用2> 导到file 去的话,它还是送到监视器上面來!
tee命令:
* 所谓tee 命令是在不影响原本I/O的情况下,将stdout 复制一份到文件里去。
例:
cm1 | cm2 | tee file | cm3
在预设上,tee 会改写目标文件,若要改为增加内容的话,可用 -a 参数达成。
- <与>的用法
- 与的小用法
- &位与的用法
- linux ` ` 与 $()的用法
- 引用“ & " 的用法 与 指针的用法
- iframe 的用法与注意事项
- dateadd与datediff的用法
- ActionMessages与ActionErrors的用法
- setfill的用法与解释
- ShellExecute与ShellExecuteEx的用法
- rand()与srand()的用法
- overLIB的用法与示例
- sizeof与strlen的用法
- sizeof与strlen的用法
- dateAdd与dateDiff的用法:
- Accordion与AccordionPane的用法
- attachEvent 与addEventListener 的用法
- ShellExecute与ShellExecuteEx的用法
- Sql server 2000 连接测试
- 深入理解JavaScript定时机制
- Ascii码表
- Java下的单例模式 静态导入实现
- Java 使用 org.apache.tools.zip.* 压缩文件源代码
- <与>的用法
- 用gdb+nm调试php c extension程序
- MySQL数据库服务器逐渐变慢分析与解决
- 对拷贝构造函数与operator=的理解
- Oracle删除重复记录oracle 删除重复记录的高效方法 && mysql 删除重复记录方法
- ELF(Executable and Linkable Format) 介绍
- 在对话框上加载图标或者位图
- 通达OA 需要二次开发的朋友看过来
- thinkphp缓存技术