linux中经常会用到将内容输出到某文件当中,只需要在执行命令后面加上>或者>>号即可进入操作。
大于号:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)
小于号:命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入
>> 是追加内容
> 是覆盖原有内容
示例:
bogon:Desktop wenxuechao$ echo 'abc' > test.txt
bogon:Desktop wenxuechao$ echo '123' >> test.txt
执行效果,第一句命令会在桌面创建个test.txt的文件,并且将abc写到文件中。
第二句命令,会在文件下方,再次写入内容。
例如我们要将一个文件夹的内容保存到文本文件中去,也就是将ls命令打印出来的内容都写到文本中去可以这样:
ls -al >> a.txt
这样a.txt文件中就是ls命令打印出来的内容了
<小于号
mysql -u root -p -h test < test.sql 导入数据
另外解释一下命令?“ls ?>/dev/null ?2>&1”
按照前面的解释可以知道将ls程序运行输出的结果重定向到/dev/null文件中去,后面的2 > &1有是什么意思呢?
这里有必要将上面的这个命令完整形式写出来:
ls ?1 >/dev/null ?2>&1
可以看出和原来命令的区别。先来说明一下,Linux系统中
0:表示键盘输入(stdin)
1:表示标准输出(stdout),系统默认是1?
2:表示错误输出(stderr)
所以1 > /dev/null 表示将1(标准输出)重定向到/dev/null文件,将2(标准错误输出)重定向到1。2>&1表示的是2的输出重定向等同于1 的输出重定向,也就是/dev/null文件。如果写成这种形式:
ls ?1 >/dev/null ?2>1
其实也能实现标准错误输出的重定向,但是重定向的位置不是标准输出,而是文件“1”,系统会创建一个文件“1”然后保存标准错误输出的信息。