1.清空文本(把空内容覆盖到文本)
[root@C7 tmp]# cp -r /etc/passwd .
[root@C7 tmp]# ls
filea1 filea2 fileb filec passwd
[root@C7 tmp]# head passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@C7 tmp]# >passwd
[root@C7 tmp]# ls
filea1 filea2 fileb filec passwd
[root@C7 tmp]# cat passwd
[root@C7 tmp]#
--------------------------------------------------------
2..重定向只能定向正确的输出信息
[root@C7 tmp]# ls /etc/passwd /etc/xxxxx >ls1.txt
ls: cannot access /etc/xxxxx: No such file or directory
[root@C7 tmp]# ls /etc/passwd >ls1.txt
[root@C7 tmp]#
---------------------------------------
3.把报错重定向
[root@C7 tmp]# ls /etc/passwd /etc/xxxxx >ls1.txt 2>lserror.txt
[root@C7 tmp]# cat ls1.txt
/etc/passwd
[root@C7 tmp]# cat lserror.txt
ls: cannot access /etc/xxxxx: No such file or directory
[root@C7 tmp]#
------------------------------------------
4.新建文本并覆盖文件
[root@C7 tmp]# > li
[root@C7 tmp]# ls
filea1 filea2 fileb filec li ls1.txt lserror.txt ls.txt new.txt passwd
[root@C7 tmp]# cat li
------------------------------------
5.当前终端
[root@C7 tmp]# tty
/dev/pts/1
[root@C7 tmp]# ls
filea1 filea2 fileb filec li ls1.txt lserror.txt ls.txt new.txt passwd
[root@C7 tmp]# ls >/dev/pts/0
[root@C7 tmp]# ls >/dev/pts/1
filea1 filea2 fileb filec li ls1.txt lserror.txt ls.txt new.txt passwd
[root@C7 tmp]#
--------------------------
6.<改变来的方向-输入重定向;>改变去的方向-输出重定向
1> = >输出重定向正确信息 stdout
2> 输出重定向错误信息 stderr
7.总结:想要覆盖一个文件的内容用1个> ; 想要追加用 >>
8.前面将错误信息可以重定向到文件里去;不想要错误信息
这个时候就有一个特殊文件,叫根下的dev下的null,它就像黑洞;如果把消息重定向到null里面,去,就丢掉了。
[root@C7 tmp]# ls /etc/passwd /etc/xxxx >ls.txt 2>/dev/null
[root@C7 tmp]#
9.文件描述符在重定向里面的写法就是&几
正确输出1到文件里面去,前面1不用写 >file
错误输出2到文件描述符1里面去 2>&1
[root@C7 tmp]# ls /etc/passwd /etc/xxx >ls.txt 2>&1
[root@C7 tmp]# cat ls.txt
ls: cannot access /etc/xxx: No such file or directory
/etc/passwd
[root@C7 tmp]#
通常这样写(混合输出)&>file
[root@C7 tmp]# ls /etc/passwd /etc/xxx &>ls.txt
[root@C7 tmp]#
在运行一个程序的时候,产生不管是正确消息和错误消息都不需要刷屏
直接全部到文件里面去或者/dev/null
[root@C7 tmp]# ls /etc/passwd /etc/xxx &>/dev/null
[root@C7 tmp]#
10.回顾输出重定向
[root@C7 tmp]# rm -rf *
[root@C7 tmp]# ls
[root@C7 tmp]# echo "li ge" > file1.txt
[root@C7 tmp]# cat file1.txt
li ge
[root@C7 tmp]# echo "li ge"
li ge
[root@C7 tmp]# ls
file1.txt
------------------
可以用重定向创建多行内容
[root@C7 tmp]# cat >file2.txt 本来是读内容是从文件,没有给文件的话就从键盘里读
111
222
333[root@C7 tmp]# cat file2.txt
111
222
333[root@C7 tmp]#
如果要写一个脚本,创建一个多行的文件肯定不能人工的去加Ctrl+D
[root@C7 tmp]# cat >file3.txt <<EOF
> 111
> 222
> 333
> EOF
[root@C7 tmp]# cat file3.txt
111
222
333
[root@C7 tmp]#
-------------------------------------
[root@C7 tmp]# echo 111 > li1.txt
[root@C7 tmp]# echo 222 > li2.txt
[root@C7 tmp]# echo 333 > li3.txt
[root@C7 tmp]# cat li1.txt li2.txt li3.txt 把n个文件内容读出来
111
222
333
[root@C7 tmp]# cat li1.txt li2.txt li3.txt >li-new.txt 把n个文件内容读出来再放到一个新的文件里去
[root@C7 tmp]# cat li-new.txt
111
222
333
----------------------