UNIX常见命令索引(rev,paste,join,tr,bc,readelf,strings,xxd)
rev
rev file
对读入的每一行,输出其倒序后的结果
paste
paste [options] files 将files中的文件每个各自获取一行,并用tab(默认)将它们连接起来合成新的一行。
-d LIST 不使用默认的tab,而是用LIST中的字符来逐个连接每一行。LIST可以是一个或者多个\n,\t,\\或者\0,多个字符时逐个使用每个字符。
-s 先将单个输入文件中的每一行连接起来(使用默认tab或者-d指定的字符),再用换行符连接文件列表中的各个文件。
- 放在files列表中,代表标准输入
join
join [options] file1 file2
-a file_number file_number可以是1或者2,如果出现了不能join的行也同样打印
-v file_number file_number可以是1或者2,如果
-e string 使用string来替代空的域
-t char char是两个文件中的Field分隔符。
-1 field_number 需要join的域位于file1的field_number处
-2 field_number 需要join的域位于file2的field_number处
-o list
tr
-d DILIMITER 删除掉delimiter之后的部分
bc
echo "ibase=2;obase=10000;BINARY" |bc - 转换二进制到十六进制(10000_b=16_d)
readelf
strings
寻找二进制文件中的长度大于4的ASCII字符串。对object file,不找TEXT段,而对其他文件搜索所有byte。
-a 对object file也搜索TEXT段
- 对普通文件和object file都搜索每个byte
-- 对剩下的每个参数都视作文件名
-o 对每个找到的ASCII字符串,同时输出其offset。
-t [d|o|x] 输出offset时使用十进制(d)/八进制(o)/十六进制(x)
-NUMBER / -n NUMBER 默认最短字符串长度为4,这里可以自定义最短长度(小于该长度的字符串就不输出了)。
tail
-n NUMBER 只输出最后NUMBER行
xxd
xxd [options] [infile [outfile]] 将binary转换成hexdump格式输出。例子
# echo abcdef | xxd
0000000: 6162 6364 6566 0a abcdef.
-c NUMBER 指定每行有NUMBER列(NUMBER个字节)
-p 使用纯hexdump格式进行输入(输入时需要带-r选项)/输出。(该格式不带前面的行号,不分列,没有ascii列,只有hex)
-b 转换成binary dump,而不是hexdump。
-r 将hexdump的结果反向转换成binary。