语言类:
《深度探索C++对象模型》,对应的英文版是《Inside C+++ Object Model》
程序编译、链接、加载类:
《链接器和加载器》,对应的英文版是《Linker and Loader》
《程序员的自我修养:链接、装载和库》
操作系统类:
《Linux内核设计与实现》,对应的英文版是《Linux Kernel Development》
《深入理解Linux内核》,对应的英文版是《Understanding the Linux Kernel》
《深入Linux内核架构》,对应的英文版是《Professional Linux Kernel Architecture》
《Linux内核源代码情景分析》
网络类:
《Linux网络体系结构:Linux内核中网络协议的设计与实现》,对应的英文版是《The Linux Networking Architecture: Design and Implementation of Network Protocols in the Linux Kernel》
《深入理解LINUX网络技术内幕》,对应的英文版是《 Understanding Linux Network Internals》
设备驱动类:
《Linux设备驱动程序》,对应的英文版是《Linux Device Drivers》
《精通Linux设备驱动程序开发》,对应的英文版是《Essential Linux Device Drivers》
虚拟机类:
《Java SE 7虚拟机规范》
《深入Java虚拟机》,对应的英文版是《Inside the Java Virtual Machine》
《Oracle JRockit: The Definitive Guide》
嵌入式类:
《嵌入式Linux开发》,对应的英文版是《Embedded Linux Primer》
《构建嵌入式Linux系统》,对应的英文版是《Building Embedded Linux Systems》
ARM体系架构类:
《ARM嵌入式系统开发:软件设计与优化》,对应的英文版是《ARM System Developer’s Guide: Designing and Optimizing System Software》
综合类:
《深入理解计算机系统》,对应的英文版是《Computer Systems: A Programmer’s Perspective》
// 放弃单个文件修改,注意不要忘记中间的"–",不写就成了检出分支了!
git checkout – filepathname
// 放弃所有的文件修改
git checkout .
一、adb启动activity:
$ adb shell
$ am start -n {包(package)名}/{包名}.{活动(activity)名称}
如:启动浏览器
am start -n com.android.browser/com.android.browser.BrowserActivity
二、adb启动service:
$ adb shell
$ am startservice -n {包(package)名}/{包名}.{服务(service)名称}
如:启动自己应用中一个service
am startservice -n com.android.traffic/com.android.traffic.maniservice
三、adb发送broadcast:
$ adb shell
$ am broadcast -a <广播动作>
如:发送一个网络变化的广播
am broadcast -a android.net.conn.CONNECTIVITY_CHANGE
shell命令基础 Linux
mk -shell语法 复制文件
#拷贝文件到指定目录并可重命名文件,指定的目录不存在的会自动创建,拷贝文件只能一个个调用
TWW_PLATFORM=tww
define product_copy_files
$(shell mkdir -p out/target/product/$(TWW_PLATFORM)/$(2) ; \
cp -f $(1) out/target/product/$(TWW_PLATFORM)/$(2)/$(3) ;)
endef
#可卸载app包名声明,参数为APP包名
define addpkgname_to_sysfile
$(shell grep -wxq $(1) vendor/mediatek/proprietary/frameworks/base/data/etc/pms_sysapp_removable_vendor_list.txt ; \
if [ $$? -ne 0 ];then sed -i '$$a\'$(1)'' vendor/mediatek/proprietary/frameworks/base/data/etc/pms_sysapp_removable_vendor_list.txt ; fi)
endef
#拷贝文件到指定目录,不改变原来文件名称,可批量拷贝
define copy_libs_to_system
$(shell mkdir -p out/target/product/$(TWW_PLATFORM)/$(2) ; \
cp -rf $(1) out/target/product/$(TWW_PLATFORM)/$(2)/ ;)
endef
#调用
$(call xy_copy_libs_to_system,xx/xx/xx,system/app)
source build/envsetup.sh && lunch 12 构建环境 编译产品代码为12的系统
./build/envsetup.sh && lunch
mmm +(某apk的路径) 单独编译某个模块
mmm vendor/qcom/qualcomms/proprietary/packages/Video/ 单独编译android.mk的
find ./out/target/product/ -name “GalaVideo*” | xargs rm -rf 寻找删除
列出指定配置表中的所有条目
HWPRA-H:/ $ settings list global
取出指定配置表中指定条目的值
HWPRA-H:/ $ settings get global add_users_when_locked
0
设置(不存在就添加)条目的值
HWPRA-H:/ $ settings put global sms_outgoing_check_max_count 5
adb查看系统服务列表以及检查服务状态
adb shell service list
adb shell service check 服务名
查看解析器:sudo cat /etc/shells
一般来说,我们在写shell脚本的时候,需要指定解析器,否则就使用默认的解析器
shell开始
shell脚本以 #!/bin/bash
开头
cd 进入文件夹
touch **.sh
创建脚本文件
echo "#!/bin/bash" >> **.sh
echo "echo 'hello world' >> **.sh
sh **.sh
–>编写脚本 输出hello world
ls命令是Linux中最常用的命令之一。ls是list的缩写
命令格式: ls [选项] [文件名] ls **.sh
shell变量
系统变量:$ShELL
$HOMO–>home path is
$PATH–>path is
$PWD–> pwd is
$USER–> user is
自定义变量
a =10
echo $a
shell
Shell脚本-Vim编辑器用法
Linux命令大全
超神之路
Android架构
adb pull /sdcard/Pictures d:\zz\ 将手机文件推送到电脑
adb push 反之
Linux命令 :命令名称、命令参数与命令对象之间要用空格进行分隔,且严格区分大小写字母
命令名称 [命令参数] [命令对象]
参数有长格式和短格式: 参数可以用长格式(完整单词),也可以用短格式(单个字母缩写),两者分别用“–”与“-”作为前缀
实例:man --help (长) man -h(短)
Ctrl+c键:终止命令运行
Ctrl+d键:EOF,键盘输入结束
Ctrl+l:clear ,清屏
常用系统工作命令
echo命令
echo命令用于在终端设备上输出字符串或变量提取后的值,语法格式为:“echo [字符串] [$变量]”
echo tww.com —>该命令会在终端屏幕上显示如下信息:tww.com
echo $SHELL---->拿到变量SHELL的值,输出:/bin/bash
date命令
date -->2021年 07月 30日 星期五 15:28:58 CST
date “+%Y-%m-%d %H:%M:%S” -->2020-09-05 09:14:35
timedatectl命令
timedatectl命令用于设置系统的时间,英文全称为:“time date control”,语法格式为:“ timedatectl [参数]”。
timedatectl命令中的参数以及作用
参数 作用
status 显示状态信息
list-timezones 列出已知时区
set-time 设置系统时间
set-timezone 设置生效时区
reboot命令
reboot 重启系统,最好是管理员执行
poweroff命令
同上,关闭系统。
wget命令
wget命令用于在终端命令行里下载网络文件,英文全称为:“web get”,语法格式为:“wget [参数] 网址”。
参数 作用
-b 后台下载模式
-P 下载到指定目录
-t 最大尝试次数
-c 断点续传
-p 下载页面内所有资源,包括图片、视频等
-r 递归下载
# wget https://www.linuxprobe.com/docs/LinuxProbe.pdf
目录操作
pwd命令
pwd命令用于显示用户当前所处的工作目录,英文全称为:“print working directory”,输入后回车执行即可。
pwd–> /etc
cd命令
cd命令用于切换当前的工作路径,英文全称为:“change directory”,语法格式为:“cd [参数] [目录]"
“cd -”命令返回到上一次所处的目录,使用“cd…”命令进入上级目录,以及使用“cd ~”命令切换到当前用户的家目录,亦或使用“cd ~username”切换到其他用户的家目录,就像在游戏中使用了“回城”技能那样。例如,切换进/etc目录中:cd /etc
ls命令
ls命令用于显示目录中的文件信息,英文全称为:“list”,语法格式为:“ls [参数] [文件名称]”。
使用ls命令的“-a”参数看到全部文件(包括隐藏文件),使用“-l”参数可以查看文件的属性、大小等详细信息。将这两个参数整合之后,再执行ls命令即可查看当前目录中的所有文件并输出这些文件的属性信息
list -al---->查看当前目录中的所有文件并输出这些文件的属性信息
tree命令
tree命令用于以树状图的形式列出目录内容及结构,输入后回车执行即可
find命令
find命令用于按照指定条件来查找文件所对应的位置,语法格式为:“find [查找范围] 寻找条件”。
参数 作用
-name 匹配名称
-perm 匹配权限(mode为完全匹配,-mode为包含即可)
-user 匹配所有者
-group 匹配所有组
-mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n 匹配访问文件的时间(-n指n天以内,+n指n天以前)
-ctime -n +n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
-nouser 匹配无所有者的文件
-nogroup 匹配无所有组的文件
locate命令
locate命令用于按照名称快速搜索文件所对应的位置,语法格式为:“locate 文件名称”。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LxwMpA3N-1629452442587)(_v_images/20210730154810620_13706.png)]
文本文件编辑命令
cat命令 和 more命令
cat命令用于查看纯文本文件(内容较少的) 语法格式为:“cat [参数] 文件名称”
more命令用于查看纯文本文件(内容较多的),语法格式为:“more [参数] 文件名称”
cat -n tww.doc -->前面有行号 more initial-setup-ks.cfg (查看initial-setup-ks.cfg)
head命令
head命令用于查看纯文本文件的前N行,语法格式为:“head [参数] 文件名称”
文件目录管理命令
touch命令
touch命令用于创建空白文件或设置文件的时间,语法格式为:“touch [参数] 文件名称”
touch a.txt
–>a.txt
touch命令中的参数及其作用
参数 作用
-a 仅修改“读取时间”(atime)
-m 仅修改“修改时间”(mtime)
-d 同时修改atime与mtime
touch -d "2020-05-04 15:44" anaconda-ks.cfg
mkdir命令
mkdir命令用于创建空白的目录,英文全称为:“make directory”,语法格式为:“mkdir [参数] 目录名称”。
除了能创建单个空白目录外,mkdir命令还可以结合-p参数来递归创建出具有嵌套叠层关系的文件目录:
mkdir tww
–>tww cd tww
mkdir -p a/b/c/d/e
cp命令
p命令用于复制文件或目录,英文全称为:“copy”,语法格式为:“cp [参数] 源文件名称 目标文件名称”。
在Linux系统中,复制操作具体分为3种情况:
如果目标文件是目录,则会把源文件复制到该目录中;
如果目标文件也是普通文件,则会询问是否要覆盖它;
如果目标文件不存在,则执行正常的复制操作。
cp命令中的参数及其作用
参数 作用
-p 保留原始文件的属性
-d 若对象为“链接文件”,则保留该“链接文件”的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr(p、d、r为上述参数)
cp a.txt b.txt
mv命令
mv命令用于剪切或重命名文件,英文全称为:“move”,语法格式为:“mv [参数] 源文件名称 目标文件名称”。
[root@linuxprobe ~]# mv x.log linux.log [root@linuxprobe ~]# ls install.log linux.log
rm命令
rm命令用于删除文件或目录,英文全称为:“remove”,语法格式为:“rm [参数] 文件名称”。
rm命令中的参数及其作用
参数 作用
-f 强制执行
-i 删除前询问
-r 删除目录
-v 显示过程
file命令
file命令用于查看文件的类型,语法格式为:“file 文件名称”
tar命令
tar命令用于对文件进行打包压缩或解压,语法格式为:“tar 参数 文件名称”。
参数 作用
-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有哪些文件
-z 用Gzip压缩或解压
-j 用bzip2压缩或解压
-v 显示压缩或解压的过程
-f 目标文件名
-p 保留原始的权限与属性
-P 使用绝对路径来压缩
-C 指定解压到的目录
[root@linuxprobe ~]# tar czvf etc.tar.gz /etc
tar: Removing leading `/' from member names
/etc/
/etc/fstab
/etc/crypttab
/etc/mtab
/etc/fonts/
/etc/fonts/conf.d/
/etc/fonts/conf.d/65-0-madan.conf
/etc/fonts/conf.d/59-liberation-sans.conf
/etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
/etc/fonts/conf.d/59-liberation-mono.conf
/etc/fonts/conf.d/66-sil-nuosu.conf
………………省略部分压缩过程信息………………
4个最常用的转义字符如下所示。
反斜杠(\):使反斜杠后面的一个变量变为单纯的字符。
单引号(’’):转义其中所有的变量为单纯的字符串。
双引号(""):保留其中的变量属性,不进行转义处理。
反引号(``):把其中的命令执行后返回结果。
Linux系统中的通配符及含义
通配符 含义
-
任意字符
? 单个任意字符
[a-z] 单个小写字母
[A-Z] 单个大写字母
[a-Z] 单个字母
[0-9] 单个数字
[[:alpha:]] 任意字母
[[:upper:]] 任意大写字母
[[:lower:]] 任意小写字母
[[:digit:]] 所有数字
[[:alnum:]] 任意字母加数字
[[:punct:]] 标点符号