开发Linux 常用命令

nm 命令

-t radix --radix=radix符号值得进制。d十进制, o八进制, x十六进制.
-D  --dynamic显示动态符号,只在对象是动态时有用.
-f format  --format=format输出的格式,有"bsd","sysv" 或"posix"可选。默认是“bsd”.
-g  --extern-only 只显示外部符号.
-l  --line-numbers 对每一个符号,使用调试信息去查找文件名和行号。
-u  --undefined-only 只显示未定义的符号.
--defined-only 只显示已定义的符号.
--help

下面是执行命令后的一段显示

00000000 b .bss
00000000 d .data
00000000 r .rdata
00000000 t .text
 U ___main
00000000 T _add
0000000d T _main
00000000 D _num1
00000004 D _num2
 U _printf

其中符号名称的含义:

  • A 符号值是绝对的。在进一步的连接中,不会被改变。
  • B 符号位于未初始化数据段(known as BSS).
  • C共用(common)符号.共用符号是未初始化的数据。在连接时,多个共用符号可能采用一个同样的名字,如果这个符号在某个地方被定义,共用符号被认为是未定义的引用.
  • D已初始化数据段的符号
  • G已初始化数据段中的小目标(small objective)符号.一些目标文件格式允许更有效的访问小目标数据,比如一个全局的int变量相对于一个大的全局数组。
  • I 其他符号的直接应用,这是GNU扩展的,很少用了.
  • N 调试符号.
  • R 只读数据段符号.
  • S 未初始化数据段中的小目标(smallobject)符号.
  • T 代码段的符号.
  • U 未定义符号.
  • V 弱对象(weak object)符号.当一个已定义的弱符号被连接到一个普通定义符号,普通定义符号可以正常使用,当一个未定义的弱对象被连接到一个未定义的符号,弱符号的值为0.
  • W一个没有被指定一个弱对象符号的弱符号(weak symbol)。 - a.out目标文件中的刺符号(stabs symbol).
    这种情况下,打印的下一个值是其他字段,描述字段,和类型。刺符号用于保留调试信息.
    ? 未知符号类型,或者目标文件特有的符号类型.

strings 命令

-f 输出前带文件名字
 strings -f a.out
-n 可以设置“连续的可打印字符最小长度”(默认是4) 
 strings -n 6 a.out

如果不知道代码编译到哪个库中去了, 可以用

find -name "*" | xargs strings -f | grep xxx
  1. find -name “*” --这个目录下的所有文件
  2. xargs strings -f --相当于strings -f xxx 只不过这个xxx文件是上面find查找到的
  3. grep “x” --筛选有“x” 的文字

xargs 命令

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。
通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令,
下面是一些如何有效使用xargs 的实用例子。

  1. 当你尝试用rm 删除太多的文件,你可能得到一个错误信息:/bin/rm Argument list too long. 用xargs 去避免这个问题
find ~ -name ‘*.log’ -print0 | xargs -0 rm -f
  1. 获得/etc/ 下所有*.conf 结尾的文件列表,有几种不同的方法能得到相同的结果,下面的例子仅仅是示范怎么实用xargs ,在这个例子中实用 xargs将find 命令的输出传递给ls -l
 find /etc -name "*.conf" | xargs ls –l
  1. 假如你有一个文件包含了很多你希望下载的URL, 你能够使用xargs 下载所有链接
 cat url-list.txt | xargs wget –c
  1. 查找所有的jpg 文件,并且压缩它
 find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
  1. 拷贝所有的图片文件到一个外部的硬盘驱动
 ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

详细xrags

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值