我是UNIX的初学者。我发现输入/输出重定向有些困难。
ls -l >temp
cat temp
这里为什么临时文件显示在列表中,而且它显示0个字符。
wc temp >temp
cat temp
此处输出为0 0 0 temp
。
为什么行,单词,字符为0。
请帮我理解这个概念。
答案 0 :(得分:3)
当您将输出传递给文件时,会创建该文件,运行命令(因此ls将其列为空文件,并且wc计算空文件中的字符),然后将输出添加到文件中
......按此顺序。
答案 1 :(得分:3)
因为ls
读取所有名称并在打印任何内容之前对它们进行排序,并且因为输出文件是在执行命令之前创建的,所以在ls
检查temp
的大小时{1}},它为空,因此它在列表中显示为空文件。
当wc
读取文件时,它为空,因此它会在0行的0个字中报告0个字符,并在读完空文件后将此信息写入文件。
答案 2 :(得分:1)
您无法同时写入和读取同一文件。
所以:
wc file > file # NOT WORKING
# but this works:
wc file > file.stats
mv file.stats file # if you want that