adb‑shell 全套命令实操总结
区分两类:
- shell 内置命令 :
cd,依赖同一个 shell 会话,不适合单独adb shell cd xxx- 独立可执行程序 :
ls、pwd、rm、chmod、su、pm、dumpsys、cat,支持单次adb shell 命令
| 命令 | 全称 | 作用 |
|---|---|---|
| cd | change directory | 切换进入某个文件夹 |
| pwd | print working directory | 打印当前所在目录 |
| ls | list | 列出文件夹里面的文件 |
| rm | remove | 删除文件 / 文件夹 |
| pm | package manager | 安卓应用包管理 |
| chmod | change mode | 修改文件权限 |
| dumpsys | dump system service | 打印系统服务运行状态 |
| cat | concatenate | 输出打印文本文件内容 |
| su | switch user | 切换 root 超级管理员 |
记忆口诀
cd 走,pwd 查,ls 看列表; su 提权,rm 删,cat 读,chmod 改门禁; pm 管应用,dumpsys 查系统。
| 命令 | 作用 | 是否适合 adb shell 单次执行 |
|---|---|---|
| cd | 切换目录 | ❌不适合 |
| pwd | 打印当前路径 | ✅可以 |
| ls | 列出目录 | ✅可以 |
| rm | 删除文件目录 | ✅可以 |
| chmod | 修改权限 | ✅可以(root 操作加 su‑c) |
| su | 切换 root | ✅交互用居多 |
| pm | 应用包管理 | ✅可以 |
| dumpsys | 打印系统服务 | ✅可以 |
| cat | 读取文本文件 | ✅可以 |
小故事版本
- cd 走进文件夹,
- pwd 我在哪?
- ls 看看都有啥;
- su 拿到管理员权限,
- rm 扔掉不要它,
- cat 打开读内容,
- chmod 设置门禁卡;
- pm 管理安装包,
- dumpsys 系统台账全扒下。
一、 cd (change directory) 切换目录
1、使用:
⚠️不要用
adb shell cd /xxx,进程结束状态丢失。✅正确:进入交互式 shell
cmd
bash
adb shell
cd /data/local/tmp #进入tmp目录
cd .. #退回上一级
cd / #回到根目录
2、介绍:
cd = change directory ,切换目录(改变当前所在文件夹),是 Linux / Android shell 的内置命令。
只改 shell 内部的「当前工作目录」,不会读写文件,没有打印输出,成功就安静无提示。
常用用法
sh
bash
# 进入 /data/local/tmp 这个文件夹
cd /data/local/tmp
# 返回上一级文件夹
cd ..
# 回到根目录
cd /
# 回到自己的家目录(adb shell 默认目录)
cd
搭配 pwd 看当前在哪
pwd → print working directory,打印你现在所处路径
sh
bash
cd /data/local/tmp
pwd
#输出:/data/local/tmp
关键点(adb 里最容易踩坑)
cd只是改当前 shell 进程内部状态,不是修改磁盘文件。- 如果你用:
cmd
bash
adb shell cd /data/local/tmp
adb 创建一个临时进程 → cd 切换目录 → 进程直接销毁。
目录状态跟着进程消失,下一次
adb shell ls不会留在这个目录。
👉所以:cd 一定要在交互式 shell 里面用
cmd
bash
adb shell #进入长存活shell会话
cd /data/local/tmp
pwd
ls
整个会话里面目录会记住,直到 exit 退出。
通俗比喻
把 shell 想象成一个窗口,cd就是窗口 "打开哪个文件夹"。
- 临时窗口(adb shell cd xxx):打开文件夹立刻把窗口关掉,下次又是全新窗口。
- 交互 shell(adb shell):窗口一直开着,cd 之后就停留在这个文件夹,后续操作都在这里。
记住:✅ ls、rm、pm、dumpsys 是独立程序,可以 adb shell 直接跑;⚠️ cd、export(环境变量)属于 shell 内部状态,依赖会话存活。
二、ls (list) 列出目录文件
1、使用:
cmd
bash
# 单次执行,直接给完整路径
adb shell ls /data/local/tmp
adb shell ls -l /system/priv-app #详细权限列表
adb shell ls -la /data/local/tmp #包含隐藏文件
2、介绍:
ls = list,列出文件夹里面的文件 / 子目录,Linux/Android 的查看目录命令。
基础用法
sh
bash
# 列出【当前文件夹】下所有内容
ls
# 指定路径,直接列出某个目录
ls /data/local/tmp
ls /system/priv-app
常用参数(加空格跟在 ls 后面)
sh
bash
ls -l # 详细列表:权限、所有者、大小、时间、文件名
ls -a # 显示隐藏文件(以 . 开头的文件)
ls -la # -l + -a 组合,最常用
注意: - 后面是参数(选项),l = long 长格式,a = all 全部文件 注意: ls -l (小写 L,不是数字 1)
| 命令 | 效果 |
|---|---|
ls |
只显示文件名,简洁,看不到隐藏文件 |
ls -l |
详细权限 / 时间,看不到隐藏文件 |
ls -a |
显示所有(含隐藏),信息简短 |
ls -la⭐ |
详细信息 + 全部隐藏文件,工作最常用 |
三、 pwd (print working directory) 打印当前路径
1、使用:
cmd
bash
adb shell
cd /data/local/tmp
pwd
# 单次串联
adb shell "cd /data/local/tmp && pwd"
2、介绍:
pwd = print working directory打印当前所在的文件夹路径。
简单大白话:告诉我,我现在身处哪个目录下面。
示例(交互式 shell 里面)
sh
bash
adb shell
cd /data/local/tmp
pwd
#输出:/data/local/tmp
cd /system/priv-app
pwd
#输出:/system/priv-app
也可以单次 adb shell 执行
cmd
arduino
adb shell "cd /data/local/tmp && pwd"
输出:/data/local/tmp
四、 rm (remove) 删除文件 / 文件夹
1、使用:
⚠️无回收站,谨慎操作
cmd
bash
# 删除文件
adb shell rm /data/local/tmp/test.apk
# 删除文件夹,‑r递归,‑f强制
adb shell su -c "rm -rf /system/priv-app/TestApp"
2、介绍:
rm = remove,删除文件或者文件夹,Linux/Android 的删除命令。
⚠️高危命令,删除没有回收站,删完直接消失。
常用写法
sh
bash
# 删除单个文件
rm test.apk
# 删除文件夹(必须加 -r)
rm -r myfolder
adb 两种使用方式
✅方式 1:单次直接执行(带完整路径,推荐)
cmd
bash
adb shell rm /data/local/tmp/signed-car.apk
✅方式 2:进入交互式 shell
cmd
bash
adb shell
cd /data/local/tmp
rm signed-car.apk
常用参数
-r:递归,删除文件夹以及文件夹里面全部内容-f:强制删除,不弹出确认提示,不存在也不报错
车载调试最常用组合:
rm -rf
sh
bash
rm -rf /system/priv-app/VolvoAdapterService
删掉整个 VolvoAdapterService 目录,需要 root 权限,先 su
五、 chmod (change mode) 修改文件权限
1、使用:
system 下推送 apk 后必须修复权限,标准 755
cmd
bash
adb shell su -c "chmod 755 /system/priv-app/TestApp/TestApp.apk"
# -R 递归修改整个目录
adb shell su -c "chmod -R 755 /system/priv-app/TestApp"
2、介绍:
chmod = change mode 修改文件 / 文件夹的权限,Linux / Android 命令。
Android 每个文件都有三套权限:所有者、用户组、其他用户(别的进程)能不能读、写、执行。
车载系统里面,system 下 apk 缺少执行权限,会直接装不上、不启动,就要用
chmod。
最常用数字权限(八进制)
644:普通文件,读读写,不能执行(txt、配置文件)755:apk、二进制、文件夹标准权限,可读可执行,这是 system 下 app 最常见权限。
sh
bash
# 设置文件权限755
chmod 755 /data/local/tmp/test.apk
# 修改整个文件夹里面所有文件权限(‑R 递归)
chmod -R 755 /system/priv-app/VolvoAdapterService
修改
/system目录需要suroot 权限。
参数
-R递归:文件夹 + 内部全部文件一起改权限
adb 两种写法
✅单次执行
cmd
arduino
adb shell su -c "chmod -R 755 /system/priv-app/VolvoAdapterService"
✅交互式 shell
sh
bash
adb shell
su
chmod -R 755 /system/priv-app/VolvoAdapterService
六、su (switch user) 获取 root 权限
1、使用:
只有工程 debug 固件可用;量产车机报 Permission denied
cmd
bash
# 交互模式获取root,提示符$ → #
adb shell
su
# 单条命令以root执行
adb shell su -c "mount -o rw,remount /system"
七、 pm (package manager) 应用包管理
1、使用:
cmd
bash
adb shell pm list packages #列出全部应用包名
adb shell pm list packages -3 #只看第三方应用
adb shell pm install /data/local/tmp/a.apk
adb shell pm uninstall com.xxx.test
adb shell pm disable-user com.xxx.system #冻结系统应用
adb shell pm enable com.xxx.system
2、介绍:
pm = Package Manager ,安卓的包管理工具,是 Android 系统自带程序,用来操作应用 APK。
位置:/system/bin/pm
常用 adb shell pm 命令(你车载调试天天用)
cmd
bash
# 列出手机/车机上所有安装的app包名
adb shell pm list packages
# 只看第三方应用,排除系统app
adb shell pm list packages -3
# 安装apk
adb shell pm install /data/local/tmp/xxx.apk
# 卸载app(普通应用)
adb shell pm uninstall shturl.cc/B
# 禁用应用(系统app不能卸载,就disable冻结)
adb shell pm disable-user com.volvocars.datacenter.china
# 启用被禁用的应用
adb shell pm enable com.volvocars.datacenter.china
关键点
pm是独立可执行程序,可以直接单次 adb shell 调用,不像 cd 依赖 shell 会话状态。
cmd
adb shell pm list packages ✅完全没问题
也可以进交互式 shell 里面敲:
sh
adb shell
pm list packages
两种效果一样。
- 系统预装 app 很多不能
uninstall,会提示 not installed for 0,要用disable‑user禁用。
高频参数记忆
--user 0:操作主用户(车机一般就 user 0)-r:安装时保留数据,覆盖安装-g:自动授予全部运行时权限-t:允许安装测试包
示例完整安装:
cmd
arduino
adb shell pm install --user 0 -r -g -t /data/local/tmp/signed‑car.apk
八、 dumpsys 打印系统服务状态
1、使用:
cmd
perl
adb shell dumpsys activity #activity任务栈
adb shell dumpsys package com.volvocars.xxx #应用运行时信息
adb shell dumpsys power #电源休眠状态
adb shell dumpsys window #窗口弹窗
#导出到电脑文件方便搜索
adb shell dumpsys package com.xxx > dump.txt
2、介绍:
dumpsys = dump system service 把 Android 系统服务的运行状态、信息打印输出出来,安卓调试神器。
Android 内部有一大堆系统服务:Activity、Package、NFC、Window、Power、Connectivity......dumpsys 就是去读取这些正在运行服务的内存状态,输出大量文本日志。
常用格式
cmd
adb shell dumpsys 服务名
你工作高频用到的
cmd
perl
# 查看Activity栈、页面任务栈
adb shell dumpsys activity
# 查看已安装包信息、应用权限
adb shell dumpsys package com.volvocars.datacenter.china
# 查看nfc服务状态(你之前查车机NFC)
adb shell dumpsys nfc
# 电源、休眠状态
adb shell dumpsys power
# 窗口、弹窗信息
adb shell dumpsys window
# 所有服务全部打印(输出超级巨大,不推荐)
adb shell dumpsys
两种使用方式
✅单次 adb shell 直接跑(最常用)
cmd
adb shell dumpsys activity
✅进入交互式 shell 再执行
sh
adb shell
dumpsys activity
dumpsys 是独立程序,不需要 cd 切换目录,不需要 root(大部分) 。
小技巧:Windows 把输出保存到文件,方便搜索日志
cmd
lua
adb shell dumpsys package com.xxx > dump.txt
执行后,当前 cmd 文件夹生成 dump.txt,可以用记事本打开搜索关键字。
九、cat (concatenate) 查看文本文件内容
1、使用:
cmd
bash
adb shell cat /data/local/tmp/config.txt
adb shell su -c "cat /sys/class/power_supply/battery/capacity"
2、介绍:
cat = concatenate读取文件内容,把文件全部内容输出打印到控制台。
大白话:直接查看文本文件内容。
基础用法
sh
bash
# 打印文件内容
cat /data/local/tmp/config.txt
adb 两种写法
✅单次直接执行
cmd
bash
adb shell cat /data/local/tmp/config.txt
✅交互式 shell
sh
bash
adb shell
cat /data/local/tmp/config.txt