我是 Linux 新手,正在尝试了解以下 makefile 语法的功能。我知道不同的命令,如 head 或 awk,但无法确定以下脚本的效果。
头 -c $$((0x100))/dev/zero |猫 - $< | xxd-g1-c4| awk '{print $$5$$4$$3$$2}' > $@
命令和开关的详细解释将受到高度赞赏。
最佳答案
两 block 钱才one escaped dollar sign .
所以:
head -c $((0x100)) /dev/zero
0x100
是“256”,所以这是从 /dev/zero
获取前 256 个字节其中produces and endless stream of NULL characters 0x00
然后将其与 first prerequisite. 一起分类。 -
是通过管道传输的标准输入, $<
在该链接中进行了解释,但它是 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 列,它们之间不包含任何字符,并将标准输出重定向到 $@
filename of the target rule这也是另一个 makefile 的东西,而不是 linux/shell 的东西
我不知道为什么。
关于linux - GNU makefile 中 head、cat 和 awk 的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46370538/