shell命令基础+adb.md

copyFile-Android项目编译copy

语言类:

《深度探索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:]] 标点符号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值