makefile中ifeq与ifneq dev/null和dev/zero简介 dd命令
ifeq语法是ifeq "<arg1>;" "<arg2>;" ,功能是比较参数“arg1”和“arg2”的值是否相同,相同时为1
ifneq: ifneq "<arg1>;" "<arg2>;" 其比较参数“arg1”和“arg2”的值是否相同,如果不同,则为真。
/dev/null:或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。(可以理解为黑洞或者位桶)。。。空设备通常被用于丢弃不需要的输出流,或作为用于输入流的空文件。这些操作通常由重定向完成。
cat $filename >/dev/null
使用 cat $filename 1>/dev/null 也会得到同样的效果,因为默认重定向的 1 就是标准输出。 如果你对 shell 脚本或者重定向比较熟悉的话,应该会联想到 2 ,也即标准错误输出。
有时候需要删除一些文件的内容而不删除文件本身:
cat /dev/null > /var/log/messages
/dev/zero:当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件.
dd if=/dev/zero of=/dev/sdb bs=4M
dd if=/dev/zero of=$FILE bs=$BLOCKSIZE count=$blocks # 把零写入文件.
dd命令详解:
dd 的主要选项:
指定数字的地方若以下列字符结尾乘以相应的数字:
b=512, c=1, k=1024, w=2, xm=number m
if=file #输入文件名,缺省为标准输入。
of=file #输出文件名,缺省为标准输出。
ibs=bytes #一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。
obs=bytes #一次写 bytes 个字节(即一个块大小为 bytes 个字节)。
bs=bytes #同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。
cbs=bytes #一次转换 bytes 个字节,即转换缓冲区大小。
skip=blocks #从输入文件开头跳过 blocks 个块后再开始复制。
seek=blocks #从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)。
count=blocks #仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。
conv=conversion[,conversion...] #用指定的参数转换文件。
eg:
备份: dd if=/dev/hdx of=/dev/hdy #将本地的/dev/hdx整盘备份到/dev/hdy 恢复: dd if=/path/to/image of=/dev/hdx #将备份文件恢复到指定盘
备份: dd if=/dev/hdx of=/path/to/image count=1 bs=512
备份磁盘开始的512Byte大小的MBR信息到指定文件