我是Linux的新手,并试图了解以下makefile语法的功能。我知道不同的命令,如head或awk,但无法弄清楚以下脚本会产生什么影响。
head -c $$((0x100))/ dev / zero |猫 - $< | xxd -g1 -c4 | awk'{print $$ 5 $$ 4 $$ 3 $$ 2}'> $ @
对命令及开关的详细说明将受到高度赞赏。
答案 0 :(得分:2)
两美元只是one escaped dollar sign。
所以:
head -c $((0x100)) /dev/zero
0x100
是" 256"所以这是来自/dev/zero
的{{1}} 0x00
那就是cat与produces and endless stream of NULL characters -
一起是管道输入的标准输出,并在该链接中解释了$<
,但它是一个makefile的东西,而不是linux / shell的事情)
cat - $<
然后将其传送给xxd
xxd -g1 -c4
将输出cat
的结果作为十六进制,其中1位(-g1
)分隔八位字节,每行4个八位字节(-c4
)。我想这里的分隔符就位,所以awk可以做到这一点。
然后将其传送到awk
awk '{print $5$4$3$2}' > $@
按顺序打印第5,第4,第3和第2列,它们之间没有字符,并将标准输出重定向到$@
first prerequisite.,这也是另一个makefile的东西,而不是linux / shell事
我不知道为什么。