Linux之常用命令备忘
1、模糊查找字符串
# find . "*" | xargs grep "ro.hardware" -rn --color
# find -name "*.rc" | xargs grep "ro.hardware" -rn --color
# find -name "*.rc" | xargs grep -rn --color "ro.hardware"
//过滤不想看到的字符串中: -E 和 \ 转义字符用法相同
# adb logcat | grep -vE "SurfaceFlinger|cnss-daemon"
# adb logcat | grep -v "SurfaceFlinger\|cnss-daemon\|wpa_supplicant"
//递归删除*.pyc文件
# find . -name "*.pyc" -print | xargs rm -rf
# find . -name “*.pyc” -exec rm '{}' +
2、指定文件名查找字符串
# find -name AccSensor.cpp | xargs grep "ro.hardware" -rn
3、查找多个字符串
# grep "ro.hardware" . -rn --color
# grep -irnE "video|audio"
# ls | egrep 'video|v4l2' //egrep对grep的扩展,支持|符号查询
注意:-irnE:
i: 不区分大小写
r:递归查找
n:显示字符串所在的行号
E: 可查找多个字段
--color: 显示字体颜色
4、
<1> 删除指定一类文件(解决有些文件名中包含空格的问题)
# find . -name "*.jpg" -print0 | xargs -0 rm
注意:这里的-print0是告诉find命令,在每个输出后面以'\0'作为结束。-0是告诉xargs,使用'\0'来分隔输入,而不是空白符。这样就避免出现问题了。
<2> 删除所有.svn文件
# find -name "*.svn" | xargs rm -rf
<3>scp 同一局域网主机之间拷贝文件
# scp 用户名@192.168.1.2:/home/用户名/test.txt ./ //从远程主机拷贝到本地
# scp ~/test.txt 用户名@192.168.1.2:/home/用户名/ //从本地拷贝到远程主机
5、把符合要求的文件名添加.bak后缀
# find . -name "*.jpg" -print0 | xargs -0 rm -I {} mv {} {}.bak
注意:其中的-I {}是告诉xargs,后面的命令中,用{}表示占位符,将会被实际的参数替代。这样就行了。
其他有用的参数还有:
-n: 用于指定每次传递几个参数
-d: 用于指定切分输入内容时,具体的分隔符,其他更多的参数,就参考man xargs吧。
6、后台启动程序并且不输出任何log信息
# ./test &>/dev/null & 等价于 ./test 2>/dev/null >/dev/null&
# cat test.txt &>/dev/null &
7、查看内存和cpu
# top //查看cpu占用率
# adb shell top -m 30 -t -d 3 -s cpu
# adb shell top -m 30 -t -d 3 -s cpu | grep <进程名> //只显示某个进程中线程的信息
注:-m 30:只显示cpu占用率最高前30;-t :只显示线程而不是进程 ;-d 3:每3秒更新一次;-s cpu:按cpu占用率排序
# procrank //查看内存。Uss:为当前程序所占内存(不包括库文件等)
# adb shell dumpsys meminfo //查看内存占用率
# adb shell dumpsys meminfo <pid/包名> //查看个程序的内存占用率
8、nm查看动态库、静态库、可执行文件
nm:选项
-A 在每个符号信息的前面打印所在对象文件名称;
-C 输出demangle过了的符号名称;
-D 打印动态符号;
-l 使用对象文件中的调试信息打印出所在源文件及行号;
-n 按照地址/符号值来排序;
-u 打印出那些未定义的符号;
# nm -A ./* | grep h264
# nm -A *.a
# nm -a *.so
# nm -A a.out
9、ffmpeg命令参考
# ffmpeg -f v4l2 -i /dev/video0 output.mp4 //ffmpeg 获取摄像头/dev/video0并输出.mp4文件
//Camera出来的数据为yuv格式
# ffplay -f rawvideo -video_size 1920x1080 a.yuv //ffplay播放yuv文件命令
//将mp4视频中的音视频信息,以json格式返回
# ffprobe -v quiet -print_format json -show_format -show_streams video.mp4
或
# ffprobe -show_format -show_streams video.mp4
//ffplay播放rgb原始数据
# ffplay -f rawvideo -pixel_format rgb24 -s 480*480 video.rgb
//查看bmp格式信息
# ffmpeg -i 222.bmp -hide_banner
Duration: N/A, bitrate: N/A
Stream #0:0: Video: bmp, bgra, 1920x1080, 25 tbr, 25 tbn, 25 tbc
//ffplay显示bmp格式
# ffplay -pixel_format bgra -s 300x500 222.bmp
# ffplay -pixel_format bgra -s 300*500 222.bmp
//ffplay播放16bit 2通道 44100采样频率的pcm音频数据
# ffplay.exe ./play.pcm -f s16le -channels 2 -ar 44100
10、android进入recovery模式更新固件
# adb reboot recovery
11、查看modem的log
# adb logcat -b radio -s RIL
12、操作指定的多个文件
# chmod +x /home/{run.sh,build.sh}
13、查看进程对应的log信息
# adb logcat | grep "993" //bluetooth情况
14、查看进程所打开的文件
# adb shell lsof 993
# adb shell lsof audio.primary.so
15、以root权限查看文件
# adb shell su -c 'cat /data/misc/wifi/wpa_supplicant.conf'
# du -sh /data
16、date在logcat中使用
# adb logcat -s NetlinkEvent | tee $(date "+%Y:%m:%d-%H:%M:%S".log)
# adb logcat | packages-$(date "+%Y-%m-%d-%H:%M:%S"-123.log)
17.编译android与tar打包命令
//test.sh
make update-api -j$(grep -c ^processor /proc/cpuinfo)
make -j$(grep -c ^processor /proc/cpuinfo) 2>&1 | tee build_All.log
make otapackage -j$(grep -c ^processor /proc/cpuinfo) 2>&1 | tee build_ota.log
OUTPUT_FILE="packages-$(date "+%Y-%m-%d-%H-%M-%S"-ROM)"
mkdir $OUTPUT_FILE
tar -zcvf ${OUTPUT_FILE}.tar.gz $OUTPUT_FILE
18.解压rootfs.img跟文件系统方法
# sudo mount -o loop rootfs.img /tmp
# mkdir test
# sudo cp -rf /tmp/* test
# sudo chown user:user test
# sudo chmod 777 test -R //不加权限,压缩会报错
# tar zcvf test.tar.gz test