linux - GNU makefile 中 head、cat 和 awk 的用途是什么

标签 linux makefile

我是 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/

相关文章:

java - 基于终端的 IDE

c - makefile 和 c 项目

c - 为什么客户端无法解析libnet构建和发送的http数据包?

linux - docker:端口映射在非默认机器上不起作用

c++ - 如何在只有 "makefile"而没有解决方案文件的 Visual Studio C++ 中编译开源框架?

c++ - 将动态库链接到我的项目

c++ - Makefile 链接错误

c++ - makefile可以在C++中强制执行依赖限制吗

c - 为什么我不能在 Linux 上通过 execvp() 将 killall 与赋予子进程的新名称一起使用?

linux - 使用 NodeJS 访问系统图标