一、重定向输出
1、$: echo 'hello world!'>hello.txt
会在当前目录下生成hello.txt的文件,如果文件不存在。如果文件已经存在,则原文件内容会被清空,同时将'hello world!'内容写到hello.txt中
2、$: echo 'hello world!'>>hello.txt
如果文件不存在则生成生成,如果已经存在,则在文件最后添加'hello world!'内容。
3、为了防止不小心将重要文件的内容被“>”操作而清空,要设置变量noclobber
$: set -o noclobber
进行重定向操作时会提示:bash: hello.txt: cannot overwrite existing file
set +o noclobber会复位。
如果设置了set -o noclobber时,依然想覆盖已经存在的文件时,在bash下用:echo 'hello world!'>|hello.txt 对于 c-Shell echo 'hello world!'>!hello.txt 区别在于">|"和">!"
二、重定向输入
$: cat <foo.txt
其中“<”表示标准输入。
三、重定向。
元字符 意义
< 重定向标准输入(同0<)
> 重定向标准输出(同>1)
>! 重定向标准输出,强制重写
>& 重定向标准输出+标准错误
>&! 重定向标准输出+标准错误,强制重写
>> 追加标准输出
>>! 追加标准输出,强制文件创建,文件不存在时
>>& 追加标准输出+标准错误
>>&! 追加标准输出+标准错误,强制文件创建
| 将标准输出通过管道传递给另一个文件
|& 将标准输出+标准错误通过管道传递给另一命令
如果在输出时,需要不覆盖已经存在的文件或不创建文件时,通过: $: set noclobber -o 此时,如果文件不存在,则不能输出或追加。如要输出或追加,必须为强制方式。
$: set noclobber +o 复位。即文件不存在时,创建新的文件。
四、产生错误输出。
通过:ls existFile notExistFile 通过ls,列出文件信息,一个文件存在,另一个文件不存在,同时会产生标准和错误的输出。