一 问题
如果存在并进入到一个空目录/tmp/test
下,然后在这个目录下创建文件a和文件b。
此时使用ls
命令,并将其重定向至文件c中(文件c起初不存在)。
那么,此时文件c中会包括什么内容?
选择A:a
选择B:ab
选择C:abc
二 解决问题
首先创建一个空目录,进入这个空目录,并保证这个目录没有其他普通文件。
[root@server ~]# mkdir -p /tmp/test
[root@server ~]# cd /tmp/test/
[root@server test]# ll
total 0
接着创建文件a和文件b
[root@server test]# touch a b
[root@server test]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 20 15:59 a
-rw-r--r-- 1 root root 0 Dec 20 15:59 b
然后将该目录下的结果重定向至一个新的文件c中
[root@server test]# ls > c
[root@server test]# ll
total 4
-rw-r--r-- 1 root root 0 Dec 20 15:59 a
-rw-r--r-- 1 root root 0 Dec 20 15:59 b
-rw-r--r-- 1 root root 6 Dec 20 16:00 c
此时再查看文件c中的内容,发现是abc
[root@server test]# cat c
a
b
c
三 总结
1)在将当前目录的内容重定向至一个新文件中时,会先判断是否存在这样的一个文件;如果不存在,那么会先创建一个文件c,然后再执行ls
查看的命令。
2)在编写shell脚本时,有时会用到查看当前目录的命令,此时目录下的文件名可能会用来成为需要的变量。为防止与原来目录下的文件混淆,可以将重定向内容的新文件放在其他目录下(比如/tmp
目录),这样不会对可能涉及到的源文件产生影响,从而扰乱脚本对某部分文件命令的执行。