我有这个脚本我正在学习,我想知道cat
在本节中做了什么。
if cat downloaded.txt | grep "$count" >/dev/null
then
echo "File already downloaded!"
else
echo $count >> downloaded.txt
cat $count | egrep -o "http://server.*(png|jpg|gif)" | nice -n -20 wget --no-dns-cache -4 --tries=2 --keep-session-cookies --load-cookies=cookies.txt --referer=http://server.com/wallpaper/$number -i -
rm $count
fi
答案 0 :(得分:5)
与大多数猫一样,这是useless cat。
而不是:
if cat downloaded.txt | grep "$count" >/dev/null
本来可以写的:
if grep "$count" download.txt > /dev/null
事实上,因为你已经删除了管道,所以你已经消除了if
语句正在处理的退出值的问题。
你会看到的大多数Unix猫都属于无用的种类。但是,人们喜欢使用grep
/ awk
管道,或使用多个grep
或sed
命令,而不是将所有内容组合到一个命令中。
cat
命令代表concatenate
,它允许您连接文件。它被创建为与split
命令一起使用,该命令将文件分成多个部分。如果你有一个非常大的文件,但是必须将它放在无法保存整个文件的软盘驱动器上,这很有用:
split -b140K -a4 my_really_big_file.txt my_smaller_files.txt.
现在,我将my_smaller_files.txt.aaaa
和my_smaller_files.txt.aaab
等等。我可以把它们放在软盘上,然后放在另一台电脑上。 (哎呀,我可能会全力以赴地使用UUCP给你!)。
一旦我在另一台计算机上获取文件,我就可以这样做:
cat my_smaller_files.txt.* > my_really_big_file.txt
而且,这只是一只毫无用处的猫。
答案 1 :(得分:0)
cat
打印出具有给定名称的文件内容(到标准输出或重定向的任何地方)。结果可以通过管道传输到其他命令(在这种情况下,(e)grep
以查找文件内容中的内容)。具体来说,它尝试下载该文件中引用的图像,然后将文件的名称添加到downloaded.txt
,以便不再处理它(这是if
中的检查)。
答案 2 :(得分:0)
“cat”是一个unix命令,它按顺序读取一个或多个文件的内容,默认情况下会打印出用户控制台的信息(“stdout”或标准输出)。
在这种情况下,cat用于读取文件“downloaded.txt”的内容,管道“|”将其输出重定向/输入到grep程序,该程序正在搜索要匹配的变量“$ count”中的任何内容。