输入输出重定向
把命令运行的结果保存到文件当中:用 > 把输出转向就可以了,例子:
$ ls > ls.txt #或者 ls-->ls.txt #把ls命令的运行结果保存到文件ls.txt中
> 是把输出转向到指定的文件,如文件已存在的话也会重新写入,文件原内容不会保留
>> 是把输出附向到文件的后面,文件原内容会保留下来在输出信息的同时把信息记录到文件中:
tee 命令 : 从标准输入读取内容并将其写到标准输出和文件中
参数: -a, --append 附加至给出的文件,而不是覆盖它
$ ls | tee ls.txt #将会在终端上显示ls命令的执行结果,并把执行结果输出到ls.txt 文件中 $ ls | tee -a ls.txt #保留ls.txt文件中原来的内容,并把ls命令的执行结果添加到ls.txt文件的后面。
多个命令的输出都需要记录: script 命令: 可以记录终端的所有输出到相应的文件中
$ script Script. started, file is typescript $ ls …… 内容省略 $ exit exit Script. done, file is typescript $ cat typescript #就会把上面绿色的部分再显示一次: #说明:我们在启动script时没有指定文件名,它会自动记录到当前目录下一个名为 typescript的文件中。也可以用 -a参数 指定文件名 $ script -a example.txt #终端的输出内容被记录到 example.txt这个文件中 #退出script时,用 exit,事实上script就是启动了一个shell
字符设置和文件格式转换
dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS recode HTML <page.txt> page.html 将一个文本文件转换成html recode -l | more 显示所有允许的转换格式
输入输出重定向符号
输入重定向的符号
符号 | 作用 |
---|---|
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 分界符 | 从标准输入中读入,直到遇到分界符停止 |
命令 < 文件1 >文件2 | 将文件1作为命令的标准输入并将标准输出到文件2 |
例如:
将多行文字追加写入文件
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/bin
...
EOF
如果需要覆盖写入
cat > /etc/profile << EOF
export JAVA_HOME=/usr/bin
...
EOF
输出重定向的符号
符号 | 作用 |
---|---|
命令 > 文件 |
将标准输出重定向到文件中(清除原有文件中的数据) |
命令 2> 文件 |
将错误输出重定向到文件中(清除原有文件中的数据) |
命令 >> 文件 |
将标准输出重定向到文件中(在原有的内容后追加) |
命令 2>> 文件 |
将错误输出重定向到文件中(在原有内容后面追加) |
命令 >> 文件 2>&1 或 命令 &>> 文件 |
将标准输出和错误输出共同写入文件(在原有内容后追加) |
>
和 2>
的区别: 假如 xx文件是不存在的,>
无法将错误信息写入文件,但2>
可以
ls -l xx > res.txt # res.txt为空
ls -l xx 2> res.txt # res.txt里有错误内容