什么是猫,它在这做什么?

时间:2014-04-10 00:20:15

标签: linux bash shell

我有这个脚本我正在学习,我想知道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

3 个答案:

答案 0 :(得分:5)

与大多数猫一样,这是useless cat

而不是:

if cat downloaded.txt | grep "$count" >/dev/null

本来可以写的:

if grep "$count" download.txt > /dev/null

事实上,因为你已经删除了管道,所以你已经消除了if语句正在处理的退出值的问题。

你会看到的大多数Unix猫都属于无用的种类。但是,人们喜欢使用grep / awk管道,或使用多个grepsed命令,而不是将所有内容组合到一个命令中。

cat命令代表concatenate,它允许您连接文件。它被创建为与split命令一起使用,该命令将文件分成多个部分。如果你有一个非常大的文件,但是必须将它放在无法保存整个文件的软盘驱动器上,这很有用:

split -b140K -a4 my_really_big_file.txt my_smaller_files.txt.

现在,我将my_smaller_files.txt.aaaamy_smaller_files.txt.aaab等等。我可以把它们放在软盘上,然后放在另一台电脑上。 (哎呀,我可能会全力以赴地使用UUCP给你!)。

一旦我在另一台计算机上获取文件,我就可以这样做:

cat my_smaller_files.txt.* > my_really_big_file.txt

而且,这只是一只毫无用处的猫。

答案 1 :(得分:0)

cat打印出具有给定名称的文件内容(到标准输出或重定向的任何地方)。结果可以通过管道传输到其他命令(在这种情况下,(e)grep以查找文件内容中的内容)。具体来说,它尝试下载该文件中引用的图像,然后将文件的名称添加到downloaded.txt,以便不再处理它(这是if中的检查)。

http://www.linfo.org/cat.html

答案 2 :(得分:0)

“cat”是一个unix命令,它按顺序读取一个或多个文件的内容,默认情况下会打印出用户控制台的信息(“stdout”或标准输出)。

在这种情况下,cat用于读取文件“downloaded.txt”的内容,管道“|”将其输出重定向/输入到grep程序,该程序正在搜索要匹配的变量“$ count”中的任何内容。