嵌入式开发常用的一些命令

  • 文件查找

find * -name "xarina_evb_defconfig"  

grep "TEXT_BASE" * -nR

find . ! -name "*.txt" -print   搜索除了*.txt之外的文件

 find -name *.patch | xargs -i cp '{}' ./patch/

 

  • 查看文件的实际内容

od -c peng.txt  

-c 表示以字符方式打印文件的内容

  • 嵌入式开发之清除root开机密码

passwd -d root

  • 文件权限和所属chmod chown

chown http.http /etc/httpd // 将目录/etc/httpd 的属主修改为 http,组修改为 http

chmod 的常用选项: -R 对指定目录所有文件和子目录递归式地进行同样的操作
-h 如果 file_name 是符号链接,则只对符号链接本身进行操作

chgrp http /etc/httpd// 将目录/etc/httpd 的所属组修改为 http

  • 符号连接

ln -s source_path target_path

  • 在开发板上挂载PC机上的目录:

      mount  -t nfs  -o nolock -o tcp 192.168.8.129:/source/rootfs  /mnt/nfs

  •  开发板上uboot下的复位命令

      reset

  • 开发板上Linux下的复位命令:

      reboot

  •  当前目录的大小:du -sh .
  •  当前目录中所有文件的大小:du  -Sh
  • 拷贝链接文件时,用CP命令,应该加上 -raf 参数
  • 参看磁盘使用率  df  -h  或者 df  -m
  • xxd

 这是另外一个让我难以置信是最近才知道的命令。xxd可以生成所给与文件的十六进制拷贝,也可以将编辑好的十六进制拷贝还原成二进制格式。它也可以将十六进制拷贝输出成C的数组,,这个操作很方便:

 

 我也用这个命令来通过比较两个文件的十六进制拷贝来比较两个二进制文件。要查看更多信息,请参考 xxd man page(http://linuxcommand.org/man_pages/xxd1.html )

  •  ps aux | grep telnet
  •  察看可执行程序所依赖的库: objdump -x XXXX | grep -Shared
  •  清除NandFlash中的坏块标记   nand scrub
  •  递归将A目录下的所有的C文件拷贝到B目录下: 查看压缩包中有哪些文件: tar -vtf A.tar.gz 查看可执行程序依赖那些库: objdump -x XXX | grep NEEDED
  •  find A -name "*.c" -print0 | xargs -0 -I {} cp {} B (这里需要注意的是:-print后面的那个是零,不是字母,xargs后面的那个参数也是零,不是字母0)
  •  grep 排除文件和目录: grep --exclude-dir=".svn" U_BOOT_CMD * -nR --exclude="cscope.out"
  •  反汇编

                                    objdump -D -S file_elf > file_dis  

注意:如果file_elf文件没有strip,那么反汇编之后在file_dis文件中会同时出现c和汇编。-S 的作用就是反汇编的时候同时假如C源代码,要显示C代码,那么在编译生成file_elf文件的时候应该加上-g。

  • 批量修改文件的创建时间     find -name "*" | xargs touch
  • 在vim中删除空白行    :g/^$/d
  • 安装某个软件时,忘记名字,如想安装openjdk7,但是名字记不全了:

    sudo apt-cache searce openjdk*

         就会列出符合的软件包的名字:

......
openjdk-6-doc - OpenJDK Development Kit (JDK) documentation
openjdk-6-jdk - OpenJDK Development Kit (JDK)
openjdk-6-jre - OpenJDK Java runtime, using Hotspot JIT
openjdk-6-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headless)
openjdk-6-jre-lib - OpenJDK Java runtime (architecture independent libraries)
......
openjdk-6-jre-zero - Alternative JVM for OpenJDK, using Zero/Shark
openjdk-7-dbg - Java runtime based on OpenJDK (debugging symbols)
openjdk-7-demo - Java runtime based on OpenJDK (demos and examples)
openjdk-7-doc - OpenJDK Development Kit (JDK) documentation
openjdk-7-jdk - OpenJDK Development Kit (JDK)
openjdk-7-jre - OpenJDK Java runtime, using Hotspot JIT
openjdk-7-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headless)
.....
  •  使用awk命令删除文件中包含某个字符串的行:
awk '{if(/WindowManager/); else print $0}' richard.log-1 > richard.log-2
  •  ps -AF  可以显示PID和PPID
  •  nfs启动   setenv bootargs root=/dev/nfs nfsroot=192.168.9.120:/source/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=192.168.9.233
  •  yaffs2 根文件系统挂载 setenv bootargs 'noinitrd root=/dev/mtdblock2 rootfstype=yaffs2  init=/linuxrc console=ttySAC0,115200n8'
  •  批量删除文件中的^M  find -type f | xargs sed -i 's/^M//'  (注意:^M 的输入  Ctrl+V Ctrl+M)
  • 查看bash提供的快捷键: bind -p | grep -v '^\#' | grep -v "self-insert"
  • 多种高亮: ,m    此外,还可以选中要高亮的字符串,然后,m
  • 在当前文件中筛选光标下的字符串,并放到quickfix窗口中: ,lv
  • 如果根目录是以只读的方式挂载的,可以使用右面的命令重新挂载,增加写权限: mount -o remount,rw /
  • 刪除log文件中包含指定字符串的行: sed -e /LOGGER/d  -e /Binder_1/d   logcat.2 -i
  • 查看某個文件的改動記錄: git log   --pretty=oneline  sound/soc/soc-compress.c | awk '{print $1}' | xargs git show
  • 查看linux源码的时候,生成某个架构相关的文件的tags: make ARCH=arm64 tags 或者 make ARCH=x86 tags 或者 make ARCH=arm tags
  • 查看二进制文件内容: hexdump -C file 或者 xxd file
  • 数组赋值1:
array1=(1 2 3 4)
array2=(${array1[*]})
  • 数组赋值2:
array1=(1 2 3 4)
name="array1"
eval array2=(\${${name}[*]})

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 ==

posted @ 2013-08-21 14:06  摩斯电码  阅读(1219)  评论(0编辑  收藏  举报