1、替换当前目录下所有字符串
在Android的开发过程中,要将Android移植到自己的平台并将所有关于Android.mk字符串重命名为Mydroid.mk。
#sed -i s/"Android.mk"/"Mydroid.mk"/g `grep -rl "Android.mk" ./`
首先grep当前目录下包含”Android.mk”字符串的文件,然后输入给sed进行替换。注意包住grep命令的是`(TAB键上面的字符),而不是’(单引号)。
可在grep命令后面加上–exclude_dir=”.git”排除对.git/ 目录下文件的替换。
2、查看某个xxx命令的帮助
#man xxx
3、rename批量文件操作
将Android项目中所有文件夹下名字为Androd.mk的文件重命名为Mydroid.mk
#find ./ -name "Android.mk" | xargs rename "s/Android.mk/Mydroid.mk/g"
4、scp 局域网内拷贝
假设一份Android的source code在A(192.168.1.2)电脑上(~/work/A_Android),要将其拷贝到同一局域网内的B电脑(192.168.1.3 用户名为:xxx)的目录(~/work/B_Android)下:
#scp -r ~/work/A_Android/ xxx@192.168.1.3:~/work/B_Android
5、查看某个目录的占用空间
#du -sh ./
6、软连接
#ln -s entity_file virtual_file
其中entity_file为真是存在的文件,virtual_file为软连接生成的文件。
7、环境变量
#export MYVAR=true // 添加环境变量 MYVAR
#env | grep MYVAR // 在环境变量中查找 MYVAR
#unset MYVAR // 删除环境变量 MYVAR
8、获取当前CPU温度
#cat /sys/class/thermal/thermal_zone0/temp
获取到的值除以1000就是当前CPU的摄氏温度了。
9、挂载只读分区
#mount -o remount rw /system
-o : 指定加载文件系统的选项;
remount: 为 -o 的选项,重新加载设备,常用于改变设备的状态;
rw: 为 -o 的选项,以可读写模式加载;
/system: 重新将挂载的只读的/system 分区挂载为可读写。
10、挂载U盘
#mount -t vfat /dev/block/sda1 /mnt/udisk1
其中sda1是根据u盘识别过来的,后面的数字有可能会有差异。
11、复制粘贴
在Linux shell窗口下”ctrl + shift + c” 和 ”ctrl + shift + v” 为复制粘贴。
shift + insert 可以进行粘贴。
12、编译过程中的信息输出到文件
#make 2>&1 | tee build.log
13、串口工具minicom的使用
#sudo minicom -s
启动minicom的配置选项,通过字母选择配置选项。启动minicom之后可以先按 ctrl+a 然后再按 z 可以出现帮助界面,之后选择对应字母可以配置minicom的功能。选择”Serial port setup”并做如下配置:
如果说minicom只输入打印信息但是键盘无法输入,此时是由于打开硬件流控,设置”Hardware Flow Control” 为 NO 即可。
minicom保存log
首先打开minicom,然后按一下ctrl + a,再按z键,会出现下面这个界面:
看到Capture on/off这项了吗,按下L键,命名要保存的log名称即可。
14、! 的神奇用法
http://www.linuxidc.com/Linux/2015-05/117774.htm
! 是可以指定执行前面执行过的第几条命令,通常跟 history命令搭配。比如说经常会出现这种情况,有个命令 xxx,此时你去执行它,比如
#xxx argv1 ~/work/other
这样会提示你没有权限执行 xxx 命令,正常你会重新做如下处理:
#sudo xxx argv1 ~/work/other
但是此时我们可以使用 !! 来替代上次的命令,可以使用
#sudo !!
你可以运行 !-1、!-2 或者 !-7 等命令来执行你记录序列中的倒数第一条命令、倒数第二条命令已经倒数第七条等等
15、查找命令
可以使用 ctrl + r,然后键入你要查找的关键字符串,此时会将已经执行过的命令自动补全。
(reverse-i-search)`make ker': make kernelimage
其中 make ker 是我敲入的,而 make kernelimage 是查找的结果,回车就可以执行 make kernelimage 的操作。
16、grep 忽略某个目录
#grep -rn “xxx” -R --exclude-dir=Dir_Name
17、while true
假设我们要持续cat 某一个GPIO的状态,不用一直执行如下的命令:
#cat /sys/class/gpio/gpio88/value
我们可以在 shell 下执行 while true 命令来连续执行某个命令,比如说:
#while true
> do
> cat /sys/class/gpio/gpio88/value
> sleep 2
> done
其中 do 和 done 中间为要循环执行的命令,sleep 2表示休眠2s。
18、反汇编
使用 objdump
工具反汇编生成的vmlinux
文件,将反汇编的结果输出给vmlinux.log
#../prebuilts/gcc/linux-x86/arm/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-objdump -d -l -f -g -S vmlinux > vmlinux.log
19、grep两个字符串
Victor@Victor-HP:/$cat /proc/1/status
Name: init
State: S (sleeping)
Tgid: 1
Ngid: 0
Pid: 1
PPid: 0
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 64
Groups:
NStgid: 1
NSpid: 1
NSpgid: 1
NSsid: 1
VmPeak: 33900 kB
VmSize: 33860 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 4296 kB
VmRSS: 3496 kB
VmData: 1636 kB
VmStk: 136 kB
VmExe: 248 kB
VmLib: 3068 kB
VmPTE: 88 kB
VmPMD: 12 kB
VmSwap: 272 kB
Threads: 1
SigQ: 0/15244
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 00000001a0016623
CapInh: 0000000000000000
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff
CapBnd: 0000003fffffffff
Seccomp: 0
Cpus_allowed: ff
Cpus_allowed_list: 0-7
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 4450
nonvoluntary_ctxt_switches: 2503
比如说我只想要VmSize
和VmRSS
的内容,可以使用如下命令:
#cat /proc/1/status | grep -E 'VmSize|VmRSS'
Victor@Victor-HP:/$cat /proc/1/status | grep -E 'VmSize|VmRSS'
VmSize: 33860 kB
VmRSS: 3496 kB