替换当前目录下所有字符串
在Android的开发过程中,要将Android移植到自己的平台并将所有关于Android.mk
字符串重命名为Mydroid.mk
。
1 | sed -i s/"Android.mk"/"Mydroid.mk"/g `grep -rl "Android.mk" ./` |
首先grep
当前目录下包含Android.mk
字符串的文件,然后输入给sed
进行替换。注意包住grep
命令的是\`
(TAB键上面的字符,不包括\
),而不是’
(单引号)。 可在grep
命令后面加上–exclude_dir=".git"
排除对.git/
目录下文件的替换。
查看某个xxx命令的帮助
man xxx
rename批量文件操作
将Android项目中所有文件夹下名字为Androd.mk
的文件重命名为Mydroid.mk
。前面的是替换字符串。
1 | find ./ -name "Android.mk" | xargs rename "s/Android.mk/Mydroid.mk/g" |
scp 局域网内拷贝
假设本地一份Android的source code在A(192.168.1.2)电脑上(~/work/A_Android),要将其拷贝到远程同一局域网内的B电脑(192.168.1.3 用户名为:xxx)的目录(~/work/B_Android)下:
1 | scp -r ~/work/A_Android xxx@192.168.1.3:~/work/B_Android |
查看某个目录的占用空间
du -sh ./
软连接
ln -s entity_file virtual_file
: 其中entity_file
为真实存在的文件,virtual_file
为软连接生成的文件。
设置环境变量
export MYVAR=true
: 添加环境变量MYVAR
env | grep MYVAR
: 在环境变量中查找MYVAR
unset MYVAR
: 删除环境变量MYVAR
获取当前CPU温度
1 | cat /sys/class/thermal/thermal_zone0/temp |
获取到的值除以1000就是当前CPU的摄氏温度了。
挂载只读分区为可读写分区
mount -o remount rw /system
-o
: 指定加载文件系统的选项;remount
: 为-o
的选项,重新加载设备,常用于改变设备的状态;rw
: 为-o
的选项,以可读写模式加载;/system
: 重新将挂载的只读的/system
分区挂载为可读写。
挂载U盘
mount -t vfat /dev/block/sda1 /temp
挂在文件系统
mount -t ext4 /dev/block/mmcblk0p1 /system
复制粘贴
在Linux shell窗口下ctrl + shift + c
和ctrl + shift + v
为复制粘贴。 shift + insert
也可以进行粘贴。
编译过程中的信息输出到文件
make 2>&1 | tee build.log
串口工具minicom的使用
sudo minicom -s
启动minicom的配置选项,通过字母选择配置选项。
- 启动后的minicom可以先按
ctrl+a
然后再按z
可以出现帮助界面,之后选择对应字母可以配置minicom的功能。选择Serial port setup
并做如下配置,可配置串口信息: 如果说minicom只输入打印信息但是键盘无法输入,此时是由于打开硬件流控,设置
Hardware Flow Control
为NO
即可。打开minicom,然后按一下
ctrl + a
,再按z
键,会出现下面这个界面,看到Capture on/off
这项了吗,按下l
键,命名要保存的log名称即可保存log。
! 的神奇用法
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
等命令来执行你记录序列中的倒数第一条命令、倒数第二条命令已经倒数第七条等等。
查找历史命令
可以使用ctrl + r
,然后键入你要查找的关键字符串,此时会将已经执行过的命令自动补全。
1 | (reverse-i-search)`make ker': make kernelimage |
其中make ker
是我敲入的,而make kernelimage
是查找的结果,回车就可以执行make kernelimage
编译kernel的操作。
grep 忽略某个目录
grep -rn “xxx” -R --exclude-dir=Dir_Name
grep两个字符串
1 | Victor@Victor-HP:/$cat /proc/1/status |
比如说我只想要VmSize
和VmRSS
的内容,可以使用如下命令:cat /proc/1/status | grep -E 'VmSize|VmRSS'
1 | Victor@Victor-HP:/$cat /proc/1/status | grep -E 'VmSize|VmRSS' |
while true
假设我们要持续cat 某一个GPIO的状态,不用一直执行如下的命令:
1 | cat /sys/class/gpio/gpio88/value |
我们可以在 shell 下执行 while true 命令来连续执行某个命令,比如说:
1 | while true |
其中do
和done
中间为要循环执行的命令,sleep 2
表示休眠2s。
反汇编
使用objdump
工具反汇编生成的vmlinux
文件,将反汇编的结果输出给vmlinux.log
。
1 | ../prebuilts/gcc/linux-x86/arm/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-objdump -d -l -f -g -S vmlinux > vmlinux.log |
复制大文件
当要大量复制(或移动)文件时cp ./*.patch patch/
,有时会提示如下错误-bash: /bin/cp: 参数列表过长
,解决办法:
1 | find . -name "*.patch" -exec cp {} ./patch/ \; |
提示:在使用-exec
参数时,必须以\;
结尾,而且之前要有一个空格,否则,系统会提示find遗漏-exec参数,命令将无法执行
。