LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2234|回复: 3

关于重定向

[复制链接]
发表于 2003-10-22 19:16:57 | 显示全部楼层 |阅读模式
在重定向的时候必须使用临时文件,如果从file定向到file就会发生“严重错误”(clobber)

请问这是怎么回事,是不是重定一定要定向到临时文件,然后再mv到文件呢,为什么,多谢
发表于 2003-10-22 19:46:33 | 显示全部楼层
不一定要重定向到临时文件.
如果noclobber被set,那么就会提示错误的,
例如:
[/home/javalee]set -o noclobber  #禁止重定向重写文件
[/home/javalee]ls >ls.txt
[/home/javalee]ls >ls.txt
ksh: cannot create ls.txt: File exists
[/home/javalee]set +o noclobber  #取消
[/home/javalee]ls>ls.txt
[/home/javalee]ls>ls.txt
请监查你的noclobber是否被设置!
如果前面有修改文件的操作,还是建议用tmp文件,例如
[/home/javalee]cat ls.txt|grep ^s >lstmp;rm ls.txt;mv lstmp ls.txt
 楼主| 发表于 2003-10-22 19:49:41 | 显示全部楼层
嗯,多谢了,
最好还是要重定向到临时文件,多谢
发表于 2003-11-3 14:52:06 | 显示全部楼层

command > filename 把把标准输出重定向到一个新文件中
command >> filename 把把标准输出重定向到一个文件中(追加)
command 1 > fielname 把把标准输出重定向到一个文件中
command > filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中
command 2 > filename 把把标准错误重定向到一个文件中
command 2 >> filename 把把标准输出重定向到一个文件中(追加)
command >> filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中(追加)
command < filename >filename2 把command命令以filename文件作为标准输入,以filename2文件作为标准输出
command < filename 把command命令以filename文件作为标准输入
command << delimiter 把从标准输入中读入,直至遇到delimiter分界符
command <&m 把把文件描述符m作为标准输入
command >&m 把把标准输出重定向到文件描述符m中
command <&- 把关闭标准输入

转自CU之shell版,感谢admirer
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表