首页 | Blogs | 项目合集 | Bilibili↗
←返回 |
创建:2024-07-20 | 最后更新:2025-03-21
此页面的短链接฿
授权代传
版本号:20240420
或者查看该作者同名自动任务App脚本
使用Ctrl+F或Command+F快速索引
当前命令收录量:未统计
shell作为一款交互式的解释执行命令语言,且具有部分程序设计语言特性,主要用于命令行管理系统。
以下为在长期使用中,收集记录能用于编写脚本的【原生安卓】shell命令中文说明。(测试系统miui14,大部分为非root)
受限于解释执行的特性,执行效率不及编译执行的代码语言。不推荐用于编写大型或时效性要求苛刻的脚本
获取正在运行的服务列表 这个 \t 可以用U+0009 字符代替。 |
service list | sed -nE 's/^[0-9]+\t([^:]*).*/\1/p' |
与service交互的三种方式
- cmd
<参数>:与指定服务开放给shell的api进行交互参数> - dumpsys
:获取服务开放给dumpsys命令接口的所有运行状态和内部信息 - service call
<参数>:直接调用服务开放给shell的内部方法,详见https://www.coolapk.com/feed/59841133 。此命令返回的皆为16进制,若失败大体可总结为权限不够、厂商改动、参数错误。(*参数具有Android版本差异,本文不记录。*)参数>
获取/bin目录下的所有文件 | ls -pR /bin | sed '/[\/]/d' |
该目录中存放着程序经常调用的动态链接库、系统程序和所有命令的二进制文件
模拟用户操作
模拟输入事件命令手册 常用选项 –longpress:长按 –doubletap:双击 |
input -h |
★模拟滑动指令 第一第二个数字是滑动的起始坐标 第三第四个数字是滑动的结束坐标 第五个数字是滑动用时,单位毫秒 |
input swipe 500 800 500 300 1000 |
★模拟拖放指令 格式:input draganddrop |
input draganddrop 900 1600 500 800 1000 |
★模拟键盘组合键 格式: input keycombination <-t 时间(ms)> <keycode 1> <keycode 2> 时间项为可选 |
input keycombination -t 250 KEYCODE_CTRL_LEFT KEYCODE_W |
★向当前焦点文本框输入文本Phoenix-Soup 仅支持ASCII编码字符 |
input text Phoenix-Soup |
KeyEvent键码详见此处฿
在Android4.4之前,input keyevent命令所需要的键码只支持数字,之后的版本支持键码名称(例:
KEYCODE_BACK
)
全局设备
返回键 | input keyevent KEYCODE_BACK |
HOME键 | input keyevent KEYCODE_HOME |
菜单键 | input keyevent KEYCODE_MENU |
电源键 | input keyevent KEYCODE_POWER |
APP切换键,移动设备会将其解释为打开最近任务 | input keyevent KEYCODE_APP_SWITCH |
唤醒键,移动设备会将其解释为亮屏 | input keyevent KEYCODE_WAKEUP |
休眠键,移动设备会将其解释为熄屏 | input keyevent KEYCODE_SLEEP |
麦克风静音键 | input keyevent KEYCODE_MUTE |
扬声器切换静音键 | input keyevent KEYCODE_VOLUME_MUTE |
降低音量 | input keyevent KEYCODE_VOLUME_DOWN |
增加音量 | input keyevent KEYCODE_VOLUME_UP |
重启命令-p :关机 |
reboot |
强制重启 ⚠︎未保存的数据会丢失 |
reboot force |
重启到恢复模式 | reboot recovery |
重启到Fastboot模式 | reboot bootloader |
键盘按键
按住W约300ms,其他文本键同理 | input keyevent --longpress KEYCODE_W |
输入0,其他文本键同理 | input keyevent KEYCODE_0 |
刷新/F5 其他功能键同理 | input keyevent KEYCODE_F5 |
大写键 | input keyevent KEYCODE_CAPS_LOCK |
输入/ | input keyevent KEYCODE_SLASH |
双击空格键 | input keyevent --doubletap KEYCODE_SPACE |
回车键 | input keyevent KEYCODE_ENTER |
Backspace键 | input keyevent KEYCODE_DEL |
Delete 键 | input keyevent KEYCODE_FORWARD_DEL |
ESC键 | input keyevent KEYCODE_ESCAPE |
TAB键 | input keyevent KEYCODE_TAB |
左Shift键 | input keyevent KEYCODE_SHIFT_LEFT |
左Ctrl键 | input keyevent KEYCODE_CTRL_LEFT |
左Alt键 | input keyevent KEYCODE_ALT_LEFT |
向上翻页 | input keyevent KEYCODE_PAGE_UP |
向下翻页 | input keyevent KEYCODE_PAGE_DOWN |
键盘Home键 | input keyevent KEYCODE_MOVE_HOME |
键盘End键 | input keyevent KEYCODE_MOVE_END |
方向键 上 | input keyevent KEYCODE_DPAD_UP |
方向键 下 | input keyevent KEYCODE_DPAD_DOWN |
方向键 左 | input keyevent KEYCODE_DPAD_LEFT |
方向键 右 | input keyevent KEYCODE_DPAD_RIGHT |
媒体播放
★媒体播放/暂停 | input keyevent KEYCODE_MEDIA_PLAY_PAUSE |
恢复播放 | input keyevent KEYCODE_MEDIA_PLAY |
暂停播放 | input keyevent KEYCODE_MEDIA_PAUSE |
播放下一个媒体 | input keyevent KEYCODE_MEDIA_NEXT |
播放上一个媒体 | input keyevent KEYCODE_MEDIA_PREVIOUS |
便捷键
搜索 | input keyevent KEYCODE_SEARCH |
剪切 | input keyevent KEYCODE_CUT |
复制键 | input keyevent KEYCODE_COPY |
粘贴 | input keyevent KEYCODE_PASTE |
放大 | input keyevent KEYCODE_ZOOM_IN |
缩小 | input keyevent KEYCODE_ZOOM_OUT |
精细功能
请求系统截屏 | input keyevent KEYCODE_SYSRQ |
点击相机快门 | input keyevent KEYCODE_CAMERA |
结束/拒接电话/锁屏 | input keyevent KEYCODE_ENDCALL |
下拉通知栏并切换到控制中心(如果存在) | cmd statusbar expand-settings |
收起状态栏/控制中心 | cmd statusbar collapse |
控制中心添加指定磁贴,会插入首位,shell无法管理位置 磁贴为应用中具备android.permission.BIND_QUICK_SETTINGS_TILE权限的Service |
cmd statusbar add-tile <service> |
控制中心移除指定磁贴 | cmd statusbar remove-tile <service> |
录屏,不包括音频流 –time-limit 30:录屏30秒,默认3分钟 –size:调整分辨率,默认跟随系统 –bit-rate:调整比特率,默认20Mbps –verbose:命令行中显示日志信息 更多见 –help |
screenrecord --time-limit 30 --size 720x1280 --bit-rate 6000000 /storage/emulated/0/录屏.mp4 |
截取屏幕 并输出到 /storage/emulated/0/目录下 仅支持png格式 更多见screencap –help |
screencap /storage/emulated/0/screen.png |
查看通知
获取已有通知id列表 从安卓10或11开始,下面命令需要的通知id为该命令输出的一整行,不能单以数字作为id使用 |
cmd notification list |
根据通知id获取该通知的相关信息 | cmd notification get <通知ID> |
应用包常用操作指令
am的更多子命令见指令:
cmd activity
pm的更多子命令见指令:cmd package
am, pm指令的参数能使用INTENT
intent选项
-a
: action(动作)-d
: data_uri(数据链接)-t
: mime_type (数据链接类型)-c
: category(intent类别)-n
: component(带包名前缀的组件名称 activity/service)--e...
: 各类数据类型的参数,不赘述-f
: flags(标志)格式通用16进制,也可支持10进制
activity标志自用:
0x00800000
:启动时不保存在最进任务中。(截止安卓13无效)0x10000000
:将指定activity移至前台,若后台没有,则创建一个0x08000000
:允许同个activity重复启动。权限标志0x00010000
:启动时无动画过度0x00004000
:启动的Activity返回键退出会返回桌面0x00001000
:分屏创建Activity
intent使用说明详见此处฿
(24年12月10日intent参数规范不显示,估摸为安卓大版本更新临时下架)
Activity调试
start-activity / start 命令用于启动Activit start 子命令选项
-W
: 等待焦点加载完毕(加载过程为异步)-S
: 在启动Activity前强制停止目标应用--user <USER_ID>
: 指定以哪个用户身份运行。--windowingMode <WINDOWING_MODE>
: 指定活动启动的窗口模式。(Android14以上限定)
打开QQ群 | am start -d ''mqqwpa://im/chat?chat_type=group&uin=群号'' |
★拨打电话:114514 -d:指定启动activity的url数据 |
am start -a android.intent.action.CALL -d tel:114514 |
拨号界面输入10086 | am start -W -a android.intent.action.DIAL -d tel:10086 |
短信界面输入内容准备发送至10086 exit_on_sent表示发送完成后是否退出 |
am start -a android.intent.action.SENDTO -d sms:10086 --es sms_body "短信内容" --ez exit_on_sent true |
使用浏览器打开网址 命令末尾包名表示指定应用,不指定则为默认 |
am start -a android.intent.action.VIEW -d "https://baidu.com" -t text/html -S mark.via.gp |
-t:指定传递数据的MIME 类型。text/html表示-d传递的数据为网页。详细฿
播放本地音乐 | am start -a android.intent.action.VIEW -d "file:///storage/emulated/0/Music/Дедлайн.flac" -t audio/flac com.netease.cloudmusic |
以秒为单位,开始倒计时3秒 | am start -a android.intent.action.SET_TIMER --ei android.intent.extra.alarm.LENGTH 3 -e android.intent.extra.alarm.MESSAGE '计时器名称' |
打开闹钟界面新建闹钟 不指定时间参数则使用当前时间 |
am start -a android.intent.action.SET_ALARM --ei android.intent.extra.alarm.HOUR 19 --ei android.intent.extra.alarm.MINUTES 59 -e android.intent.extra.alarm.MESSAGE '称名的钟闹' -e android.intent.extra.alarm.RINGTONE "<铃声文件的路径>" |
启动用户999上的设置项监视器 | am start --user 999 -n allsettings.observer/allsettings.observer.MainActivity |
获取最近任务中指定应用所有的Task ID (ID数量说明该应用在最近任务中占用的卡片数量) |
printf "$(dumpsys activity recents | sed -nE 's/.*Task\{.*#([^ ]*).*<应用包名>.*/\1/p')" |
根据指定activity获取Task_ID | printf "$(am stack list | sed -nE 's/.*=([^:]*).*<包名>\/<Activity名称>.*/\1/p')" |
根据Task_ID获取 包名/Activity名 | printf "$(am stack list | grep "taskId=<Task_ID>" | awk '{print $2}')" |
最近任务stack相关信息 | am stack list |
根据STACK_ID移除最近任务卡片 杀应用效果等价于am kill命令,不及等价于手动滑走卡片am stop-app命令 在MIUI中,STACK_ID=Task_ID |
am stack remove <STACK_ID> |
根据最近任务中的Task_ID切换应用焦点 | am task focus <Task ID> |
⚠ 请先阅读相关指令了解如何解锁 将指定用置于前台并锁定,除了桌面不允许使用其他应用 |
am task lock <Task_ID> |
解除应用锁定 | am task lock stop |
杀应用
强制停止应用,无论如何。 | am force-stop [--user <用户ID> | all | current] <应用包名> |
终止指定应用进程,仅在能数据安全的情况下 | am kill [--user <用户ID> | all | current] <应用包名> |
终止指定应用进程和服务,仅在能数据安全的情况下。 | am stop-app [--user <用户ID> | all | current] <应用包名> |
权限
以人类语言输出指定应用拥有的权限 参数: -s:简短摘要。 -d:仅列出危险权限。 -u:仅列出用户将看到的权限。 |
pm list permissions -s <应用包名> |
获取指定应用权限状态 权限标识推荐使用应用“appops”获取 格式: appops get [--user <USER_ID>] [–attribution <归属标签>] <应用包名|应用包UID> <权限主名称> ①USER_ID ②归属标签 ③权限标识 为可选 |
appops get --user 0 bin.mt.plus |
更改指定应用权限 格式: appops set [--user <USER_ID>] [--uid] <应用包名 | 应用uid> <权限主名称> <模式> -<MODE> 参数的可选值包括:允许(allow)、忽略(ignore)、拒绝(deny)、默认(default)-[--uid] :仅为特殊权限使用,若为普通权限,请删除 |
appops set --user 0 --uid bin.mt.plus REQUEST_INSTALL_PACKAGES allow |
shell只接受权限的主名称,不接受权限标识更改权限。
若无法shell调用,原因有四:
- 命令有误
- 权限名称不为系统内部主要使用的名称
- 厂商定制的权限无名称
- 另起炉灶的权限管理系统没有接入shell (例:MIUI)
获取具有指定权限的所有应用包名 说明: ①[ ] 中的内容为可选项 ②MODE:为权限状态 |
appops query-op [--user <USER_ID>] <权限标识> [<MODE>] |
安装卸载
提取安装包路径 | pm path <应用包名> | sed -nE 's/package:(.+)/\1/p' |
安装应用 屎山安卓想要使用命令安装只能读写/data/local/tmp/目录,部分手机厂商不会进行自动清理,请手动 参数: -d:降级安装应用 -r:重新安装应用 --user <用户ID> | all | current :指定用户id |
pm install -d /data/local/tmp/安装包.apk |
安装已存在在设备上的应用 ★推荐为其他user_id安装应用 –user 值可替换成(all)全部、(current)当前用户 –wait 为可选项 |
pm install-existing --user 10 --wait <应用包名> |
卸载应用 ⚠部分系统应用卸载后重启会变砖,若要卸载,请确保该应用卸载后没有变砖的风险。 参数: -k:保留数据卸载 --user <用户ID> | all | current :指定用户id–versionCode version_code:仅在应用具有给定的版本代码时卸载 |
pm uninstall -k <应用包名> |
对系统应用卸载更新 | pm uninstall-system-updates <系统应用包名> |
冻结解冻
冻结指定应用--user user_id :指定要为哪位用户冻结软件包。不加此参数默认冻结所有 |
pm disable-user --user 999 <软件包名> |
解冻指定应用 | pm enable --user 999 <软件包名> |
停用应用(可多选应用):桌面图标变灰,提示shell禁止运行--user 为可选项 |
pm suspend --user 10 <应用包名> <应用包名> |
启用应用(可多选) | pm unsuspend --user 10 <应用包名> <应用包名> |
隐藏应用:从设置中的应用管理、桌面中隐藏,且使用常规api获取应用列表的app无法看到 原生安卓仅需shizuku权限,但第三方厂商可能需Root,且特性可能会被更改。(小米该命令为隐藏+冻结) |
pm hide <包名> |
破隐应用 | pm unhide <包名> |
app服务
启动一个后台服务 选项: --user <USER_ID> |
am start-service [<选项>] <service> |
应用App Manager可看哪些服务支持命令启动
<service>
格式为:包名/service名称
启动一个前台服务(通知中心可进行交互服务) 选项: --user <USER_ID>1 <service> 格式为:包名/service名称 |
am start-foreground-service [<选项>] <service> |
停止指定service | am stop-service [<选项>] <service> |
获取应用正在运行的服务的详细信息 格式:dumpsys activity services <应用包名>/<服务名>服务名>应用包名> |
dumpsys activity services com.tencent.mobileqq |
获取指定应用正在运行的service 删除 | awk '!a[$0]++' 获取同名service多开的实例数量 |
dumpsys activity services <应用包名> | sed -nE 's/.*cmp=([^ }]*).*/\1/p' | awk '!a[$0]++' |
其他操作
清除应用数据--user user_id :指定user用户–cache-only:仅清除缓存,仅Android14及以上可用 |
pm clear --user 999 <应用包名> |
不改变系统全局语言,通过设置指定应用的区域更改该应用语言 –locales:设置语言标签 可选:–user |
cmd locale set-app-locales <应用包名> --locales en-US |
切换webview内核APP包 | cmd webviewupdate set-webview-implementation <pkg...> |
其他信息获取
获取app的常驻内存大小,单位:千Byte | printf $(pidof <应用包名> | xargs ps | grep <应用包名> | awk '{print $(NF-4)}') |
获取指定应用的窗口模式 | printf $(dumpsys activity recents | sed -nE 's/ *.*<应用包名>.*mode=([^ ]*).*/\1/p') |
获取指定应用的窗口可见性 | printf $(dumpsys activity recents | sed -nE 's/ *.*<应用包名>.*visible=([^ ]*).*/\1/p') |
内存使用情况 例:dumpsys meminfo <应用包名>应用包名> |
dumpsys meminfo |
提取焦点应用包名 | printf "$(dumpsys window displays | grep "mFocusedApp" | grep -v "AppWindowToken" | awk '{print $(NF-1)}' | awk -F "/" '{print $1}')" |
获取焦点activity完整名称 (适用于非侧重与用户交互场合,写应用、MVEL表达式) |
printf "$(dumpsys window displays | sed -nE 's/.*mCurrentFocus.*u[0-9]+ ([^}]*).*/\1/p')" |
获取焦点activity简略名称 (系统会自动补全。适用于侧重与用户交互场合,shell交互) |
printf "$(dumpsys window displays | sed -nE 's/.*mFocusedApp.*u[0-9]+ ([^}]*).*/\1/p')" |
获取指定应用在系统中各User下的身份ID | printf "$(pm list packages -U | sed -nE 's/.*<应用包名>.*:(.*)/\1/p' | tr "," "\n")" |
输出所有应用包 参数: -d:仅输出已冻结应用 -e:仅输出已启用的应用 -s:仅输出系统应用 -3:仅输出第3方应用 –user user_id:输出指定用户下的应用 -u:在输出列表中包含 保留数据卸载 的应用,非主用户应用无效 -U:输出应用在每个user_id下的身份ID |
pm list packages |
系统ID相关
格式:id <选项> <用户>: 打印用户和组的 ID 信息。 如果不指定用户,默认显示当前用户的 ID -G:显示用户所属的所有组 ID。 -Z:仅显示安全上下文(SELinux 的上下文标签)。 -g:仅显示有效组 ID。 -n:将数字 ID 显示为用户名或组名(需与 -G、-g 或 -u 结合使用)。 -r:显示真实 ID 而非有效 ID。 -u:仅显示有效用户 ID。用户>选项> |
id --help |
谁啊我?哦,安卓没我事 | whoami |
切换用户权限命令,需root | su --help |
获取临时root权限,仅限当前shell会话 | sudo |
(Change Mode)命令:修改文件或目录权限 | chmod --help |
(Change Owner)命令:更改文件或目录所有者 | chown --help |
(Change Group)命令:更改文件或目录的组(group),让某个用户组对文件或目录拥有管理权限 | chgrp --help |
手机分身必备
查看手机上的User ID | pm list users |
查看设备支持的最大用户数 | pm get-max-users |
获取系统能够支持的最大同时运行用户数 | pm get-max-running-users |
获取当前user ID序号 | am get-current-user |
获取指定系统中user id的运行状态 | am get-started-user-state <用户ID序号> |
输出所有用户及其详细信息,包括用户类型 | dumpsys user |
启动并切换手机用户 | am switch-user <用户id序号> |
后台启动用户 | am start-user <用户id序号> |
后台停止用户 | am stop-user <用户id序号> |
新建用户 | pm create-user <用户名> |
⚠一、设备不支持有线启动shizuku的用户请勿使用!非机主用户无法进入开发者选项界面 ⚠二、非官方途径新建的用户,不被提供图标切换用户的服务;不被提供官方 管理多用户 的服务功能;也无法知晓机主用户是否来通知 三、分身用户较机主用户有较多的功能缺失
创建指定类型用户,需root,未测试 | cmd package create-user <--用户类型> --pre-create-only 名称 |
设置用户权限 开关1和0?需root,未测试 | cmd package set-user-restriction --user 13 no_config_locale 1 |
删除用户 ⚠id为0的用户是主用户,禁止删除 否则后果自负 |
pm remove-user <用户id序号> |
解锁设备,仅限无锁屏密码 『MIUI无效,未查到从何版本失效,需root模块』 |
am unlock-user <用户id序号> |
uuidgen |
生成随机UUID |
通信相关
提取当前WIFI名称 | printf "$(cmd wifi status | sed -n 's/.*SSID: "\([^"]*\)".*/\1/p')" |
执行WiFi扫描并输出扫描结果 | cmd wifi start-scan; sleep 5; cmd wifi list-scan-results |
输出已保存的WiFi | cmd wifi list-networks |
忘记WiFi “network Id”从已保存的WiFi中获取 |
cmd wifi forget-network <networkId> |
开启热点,需root权限 详见命令: cmd wifi | grep '^ start-softap' -A 100 | grep '^ stop-softap' -B 100 | sed '$d' |
cmd wifi start-softap <热点名称> wpa2 <热点密码> -b 5 |
关闭热点,需root权限 | cmd wifi stop-softap |
★检测已连接的蓝牙设备 | settings get global AllConnectedBluetoothDevicesInfo |
sim卡装载情况 | getprop gsm.sim.state |
编辑紧急号码列表,仅限有sim卡 选项 -a: 添加紧急号码,只允许数字 ‘0’ 到 ‘9’,’*‘,’#’ 或 ‘+’ -r: 删除紧急号码 -p: 输出紧急号码列表 |
cmd phone emergency-number-test-mode -a <号码> |
获取IP地址 | ifconfig | grep Mask |
获取 Mac 地址 需root权限 |
cat /sys/class/net/wlan0/address |
电池调试指令
获取电池状态信息 | dumpsys battery |
获取当前电量 | cmd battery get level |
伪装电池状态 不同系统数字代表的含义不一,以下部分值为MIUI所表达的含义: 2:正在充电 3:未充电 5:已充满 |
dumpsys battery set status 3 |
伪装充电状态为直流充电 | dumpsys battery set ac 1 |
伪装充电状态为无线充电 | dumpsys battery set wireless 1 |
伪装充电状态为usb充电 | dumpsys battery set usb 1 |
伪装断开充电 | dumpsys battery unplug |
伪装电量为999 数字请勿过大,否则会重启 |
dumpsys battery set level 999 |
伪装电池温度,精度0.1℃ 将set改为get,删除末尾值即可获取当前值 |
cmd battery set temp 209 |
复原电池状态 | dumpsys battery reset |
获取Doze模式白名单列表 添加[+-<应用包名>]为编辑Doze模式的白名单。(非root用户无法编辑system及以上等级的前缀)应用包名> |
dumpsys deviceidle whitelist [+-<应用包名>] |
Doze介绍:独立于省电模式和应用省电策略之外的省电机制,触发条件为锁屏后长时间静止设备。在此模式下系统仅允许基本功能和白名单应用运行
持有唤醒锁 需root 唤醒锁:持有后设备锁屏5秒后不会进入休眠状态,保持cpu活跃,会有无良程序乱耗电的风险 |
echo a >sys/power/wake_lock |
释放唤醒锁 需root | echo a >sys/power/wake_unlock |
获取settings命令使用手册 该命令能管理系统部分代码实现上较为简单的设置 |
settings |
常用开关
硬件
检测蓝牙开关 | settings get global bluetooth_on |
★关闭蓝牙 开启将disable改为enable |
svc bluetooth disable |
检测wifi开关 | settings get global wifi_on |
★开启wifi 关闭将enable改为disable |
svc wifi enable |
检测数据开关 mobile_data替换成mobile_data0或mobile_data1即可分别检测两张SIM卡的数据开关 |
settings get global mobile_data |
★开启数据网络 关闭将enable改为disable |
svc data enable |
获取定位开关状态 | cmd location is-location-enabled |
开启定位。(Android12以上定位仅包含GPS)true/false |
cmd location set-location-enabled false |
开启WIFI辅助定位扫描以供应用或service使用,改进精准度 关闭将1改为0 |
settings put global wifi_scan_always_enabled 1 |
开启蓝牙辅助定位扫描以供应用或service使用,改进精准度 关闭将1改为0 |
settings put global ble_scan_always_enabled 1 |
检测手电筒是否开启,无shell可开关 | settings get global torch_state |
★关闭NFC 开启将disable改为enable |
svc nfc disable |
获取电源调试相关信息 | svc power |
获取USB功能调试相关命令,有更改usb连接(仅充电、MTP、PTP等)功能的命令 | svc usb |
模式
检测护眼模式是否开启 | settings get system screen_paper_mode_enabled |
开启护眼模式 关闭将1改为0 |
settings put system screen_paper_mode_enabled 1 |
检测勿扰模式是否启用 | settings get global zen_mode |
开启勿扰模式 (on)可替换成(alarms)仅允许闹钟、(priority)仅允许重要信息、或(off) |
cmd notification set_dnd on |
检测夜间模式是否开启 | settings get system dark_mode_enable |
开启夜间模式 yes/no |
cmd uimode night yes |
开启极暗模式 1开0关 |
settings put secure reduce_bright_colors_activated 1 |
调整极暗模式下变暗百分比 | settings put secure reduce_bright_colors_level 99 |
检测省电模式是否开启 | settings get system POWER_SAVE_MODE_OPEN |
检测性能模式是否开启 | settings get system POWER_PERFORMANCE_MODE_OPEN |
开启性能模式
如要关闭,请执行下面的关闭规则,或是手动 关 开 关 一遍性能模式,以免部分设置键没关闭导致电量浪费
关闭均衡模式的调度 开启将0改为1 |
settings put system POWER_BALANCED_MODE_OPEN 0 |
启动性能模式:优先分配资源给当前应用 关闭将1改为0 |
settings put system POWER_PERFORMANCE_MODE_OPEN 1 |
启动预关闭模式:判断性能模式是否忘关? 关闭将performance改为enhance |
settings put system POWER_SAVE_PRE_HIDE_MODE performance |
启动速度模式:解锁性能上限 关闭将1改为0 |
settings put system speed_mode 1 |
开启省电模式
非官方途径开启省电模式,诸如账户同步,锁屏清理等省电调度之外的功能将不会有变动
settings put system POWER_SAVE_MODE_OPEN 1 |
|
疑似用于增强省电效果『miui用?』 | settings put system POWER_SAVE_PRE_HIDE_MODE ultimate |
关闭省电模式
settings put system POWER_SAVE_MODE_OPEN 0 |
settings put system POWER_SAVE_PRE_HIDE_MODE enhance |
『魅族专用』开省电模式 关闭改2为0 |
settings put secure mz_current_power_mode 2 |
检测隐身模式是否启用 | settings get secure key_invisible_mode_state |
切换隐身模式,需进入控制中心有隐身磁贴的界面执行该命令(Android13) | cmd statusbar click-tile com.miui.securitycenter/com.miui.permcenter.settings.InvisibleModeTileService |
隐身模式❗仅限安卓14以上,无状态栏图标 关闭将1改为0 |
settings put secure key_invisible_mode_state 1 |
检测飞行模式是否开启 | settings get global airplane_mode_on |
开启飞行模式 关闭将enable改为disable |
cmd connectivity airplane-mode enable |
检测5G开关 | settings get global fiveg_user_enable |
开启5G
★仅限电信,移动/联通/国外的SIM卡请将通讯技术规则的put改为get,末尾值删除以查看配置值
5G图标 | settings put global 5g_icon_group_mode0 2 |
开启5G网络 | settings put global fiveg_user_enable 1 |
切换主卡通讯技术组合 运营商:电信 |
settings put global preferred_network_mode 33,32 |
切换副卡通讯技术组合 运营商:电信 |
settings put global preferred_network_mode1 33 |
关闭5G
★仅限电信,移动/联通/国外的SIM卡请将通讯技术规则的put改为get,末尾值删除以查看配置值
5G图标 | settings put global 5g_icon_group_mode0 0 |
关闭5G网络 | settings put global fiveg_user_enable 0 |
切换主卡通讯技术组合 运营商:电信 |
settings put global preferred_network_mode 10,32 |
切换副卡通讯技术组合 运营商:电信 |
settings put global preferred_network_mode1 10 |
检测自动亮度是否开启 | settings get system screen_brightness_mode |
开启自动亮度 关闭将1改为0 |
settings put system screen_brightness_mode 1 |
检测自动旋转是否开启 | settings get system accelerometer_rotation |
开启自动旋转 关闭将1改为0 |
settings put system accelerometer_rotation 1 |
获取当前屏幕亮度值 | settings get system screen_brightness |
调整屏幕亮度,UI系统不同上限不一 | settings put system screen_brightness 10 |
无极调节亮度,范围0~1 oled屏只有在强光下才能拉满 |
cmd display set-brightness 0.026 |
检测蓝牙是否半开启『MIUI专用』 | settings get global bluetooth_restricte_state |
检测自由窗口开启状态 -1为关闭,0为开启 |
settings get secure freeform_window_state |
开发者选项
★打开指针位置 关闭将1改为0 |
settings put system pointer_location 1 |
★显示触摸小白点 关闭将1改为0 |
settings put system show_touches 1 |
窗口动画时长 默认1.0 |
settings put global window_animation_scale 0.675 |
过度动画时长 默认1.0 |
settings put global transition_animation_scale 0.675 |
程序动画时长 默认1.0 |
settings put global animator_duration_scale 0.675 |
充电时设备不锁定,值: 0: 关闭 1: 交流供电 2: USB供电 3: 交流+USB(1+2) 4: 无线供电 5: 交流+无线(1+4) 6: USB+无线(2+4) 7: 全部 |
settings put global stay_on_while_plugged_in 7 |
始终开启移动数据网络 关闭将1改为0 |
settings put global mobile_data_always_on 1 |
开启时间悬浮窗『MIUI专用』 关闭将1改为0 |
settings put system miui_time_floating_window 1 |
进入演示模式
settings put system sysui_tuner_demo_on 1 |
am broadcast -a com.android.systemui.demo -e command enter |
退出演示模式
settings put system sysui_tuner_demo_on 0 |
am broadcast -a com.android.systemui.demo -e command exit |
显示后面更新的控件布局边界,不推荐 关闭将true改为false |
setprop debug.layout true |
显示设置
更改屏幕色彩模式 数字代表第几种色彩风格 |
settings put system screen_optimize_mode 1 |
修改色温 默认为2;1为暖色温;3为冷色温 |
settings put system screen_color_level 2 |
调整字体大小 默认1.0 获取当前值将put改为get,并删除指令末尾的数字 |
settings put system font_scale 1.1 |
检测屏幕dpi | wm density |
检测屏幕分辨率 | wm size |
更改dpi值 | wm density 560 |
修改屏幕分辨率 安卓13及以上若非屏幕物理比例,会自动拉伸 ⚠低版本安卓慎改:重启不会自动恢复,还有shizuku会掉 |
wm size 1440x3200 |
恢复屏幕dpi | wm density reset |
恢复屏幕分辨率 | wm size reset |
修改刷新率
修改屏幕刷新率 | settings put secure user_refresh_rate 90 |
修改屏幕峰值刷新率 如果不应用此规则,帧率则不会立即变化 |
settings put system peak_refresh_rate 90 |
『MIUI专用』与前俩规则使用可修改为60帧档 | settings put secure miui_refresh_rate 60 |
色盲
开启色盲模式 关闭将1改为0 |
settings put secure accessibility_display_daltonizer_enabled 1 |
绿色弱、绿色盲 | settings put secure accessibility_display_daltonizer 12 |
红色弱、红色盲 | settings put secure accessibility_display_daltonizer 11 |
蓝色弱、蓝色盲 | settings put secure accessibility_display_daltonizer 13 |
全色盲 | settings put secure accessibility_display_daltonizer 0 |
开启颜色反转 关闭将1改为0 |
settings put secure accessibility_display_inversion_enabled 1 |
其他设置
自动锁屏调整为60秒后 如果调整为设置选项之外的值,请勿进入息屏设置界面 |
settings put system screen_off_timeout 60000 |
开启息屏显示
开启息屏显示 关闭将1改为0 |
settings put secure aod_mode_user_set 1 |
息屏显示附属开关 关闭与息屏显示一同将1改为0 |
settings put secure doze_always_on 1 |
应用敏感行为提醒 关闭将1改为-1 获取当前值将put改为get,并删除指令末尾的数字 |
settings put secure PERMISSION_USE_WARNING 1 |
有通知时显示状态栏图标 关闭将1改为0 |
settings put system status_bar_show_notification_icon 1 |
输入法相关
获取可用输入法列表 | ime list -s |
获取当前的输入法 | settings get secure default_input_method |
切换输入法 格式:ime set <输入法>输入法> |
ime set com.android.inputmethod.latin.LatinIME |
禁用指定输入法 | ime disable com.android.inputmethod.latin.LatinIME |
启用指定输入法 | ime enable com.android.inputmethod.latin.LatinIME |
修改系统时间 数字为计算机纪元时至目标时间的毫秒数 |
cmd alarm set-time 1684559651447 |
修改系统时区 | cmd alarm set-timezone America/New_York |
Olson ID见英文维基百科(大陆地区可能无法访问)฿
调整鼠标指针速度 范围从-7至7 |
settings put system pointer_speed 0 |
获取目前开启无障碍权限的应用服务列表 | settings get secure enabled_accessibility_services |
更改已开启的无障碍服务列表 格式: settings put secure enabled_accessibility_services <要开启的无障碍服务名>要开启的无障碍服务名> |
settings put secure enabled_accessibility_services com.x8bit.bitwarden/com.x8bit.bitwarden.Accessibility.AccessibilityService |
☆隐藏项:开关三指手势 1为开启,0为关闭 |
settings put system enable_three_gesture 1 |
☆隐藏项:锁屏显示指纹 1为开启,0为关闭 |
settings put secure gxzw_icon_aod_show_enable 1 |
状态栏
打印状态栏图标及其出现顺序 | cmd statusbar get-status-icons |
☆隐藏键:获取当前隐藏的状态栏图标 | settings get secure icon_blacklist |
显示手机分身图标 | settings get global open_second_space_status_icon |
☆隐藏键:添加隐藏的状态栏图标,安卓10以上部分图标无法隐藏 zen:勿扰模式 ime:闹钟 volume:音量 nfc:NFC airplane:飞行模式 |
settings put secure icon_blacklist ime,zen, |
始终显示蓝牙图标 『MIUI专用』 1为开启,0为关闭 |
settings put system bluetooth_always_show_icon_value 1 |
向 StatusBarManager 发送0至多个禁用选项FLAG(逐个解析)。 FLAG选项: none - 重新启用所有组件 search - 禁用搜索 home - 禁用导航主页 recents - 禁用最近/概览 notification-peek - 禁用通知预览 statusbar-expansion - 禁用状态栏扩展 system-icons - 禁用系统图标出现在状态栏 clock - 禁用时钟出现在状态栏 notification-icons - 禁用通知图标出现在状态栏 |
cmd statusbar send-disable-flag <FLAG> |
获取设置项信息的app分享฿
密码:ap0h
查找命令版本 部分命令无此选项 |
命令 --version |
Linux命令
以下多为安卓版自带的Linux精简命令,只够执行简单操作
推荐ROOT后打上busybox或使用termux
计算
expr: 基本算数运算 加+ 减- 乘* 除/ 比较=>«br>乘法在安卓shell环境中会被识别为通配符,无法使用 |
expr 3 - 10 |
⭐bc: 任意精度计算命令 详见命令:bc –help |
printf "2^3" | bc |
$(( )) :Bash脚本中用于执行算术运算的结构 加+ 键- 乘* 除/ 取余数% 指数** 位运算:https://www.baeldung.com/linux/bash-bitwise-operators |
$((x + y)) |
时间
命令格式:date [-u] [-r FILE] [-d DATE] [+FORMAT] 支持的输入格式: 1. MMDDhhmm[[CC]YY][.ss]:POSIX 格式。 2. @Unix纪元至今秒数[.小数]:从 1970-01-01 午夜起的秒数。 3. YYYY-MM-DD [hh:mm[:ss]]:ISO 8601 格式。 4. hh:mm[:ss]:当天的24小时制时间。 选项 -d:指定时间而非当前时间显示 + -r:使用指定文件的修改时间代替当前时间。 -u:使用 UTC 时间而不是当前时区。 所有输入格式都可以跟随小数秒数和/或 UTC 偏移,如 -0800。 所有输入格式可以以 TZ="id" 开头,单独设置输入时区,与输出时区分开。否则,环境变量 $TZ 设置两者。 TZ="Africa/Nairobi" date -d "2024-03-24 16:04:06 +0300" +FORMAT 指定显示格式字符串,使用 strftime(3) 语法: %%:字面上的 % %n:换行符 %t:制表符 %S:秒(00-60) %M:分钟(00-59) %m:月份(01-12) %H:小时(0-23) %I:小时(01-12) %p:AM/PM %y:两位数的年份(00-99) %Y:四位数的年份 %C:世纪 %a:星期几的缩写 %A:星期几的全称 %u:星期几(1-7,1=星期一) %b:月份的缩写 %B:月份的全称 %Z:时区名称 %j:一年中的第几天(001-366) %d:几号(01-31) %e:几号( 1-31) %N:纳秒(仅输出) 其他格式: %U:一年中的第几周(0-53,以星期天为起始) %W:一年中的第几周(0-53,以星期一为起始) %V:一年中的第几周(1-53,以星期一为起始,少于4天的周不计入本年) 预定义格式: %F:"%Y-%m-%d" %R:"%H:%M" %T:"%H:%M:%S" %z:时区(-0800) %D:"%m/%d/%y" %r:"%I:%M:%S %p" %h:"%b" %:z:时区(-08:00) %x:本地日期 %X:本地时间 %c:本地日期时间 %s:Unix纪元时间(从 1970-01-01 起的秒数) |
date |
获取时间,+之后为定义时间格式 | date +"%Y-%m-%d %H:%M:%S" |
获取当前时间戳 | date +%s |
将时间戳946698314转换为具体时间 +后面定义时间格式,不加则为默认 |
date -d @946698314 "+%Y-%m-%d %H:%M:%S" |
延时微秒,shell不准 | usleep 10000 |
文本
格式化输出命令工具,默认不添加换行符。需”“进行规范指定参数 安卓shell环境不完整,参数故不做解释 |
printf "兄\n弟\n,\n你\n好\n香" |
分享个有用语法:
printf "$(命令)"
可清理输出末尾所有的连续换行符。双引号可保证能打印多行参数,若仅有单行参数,可不加
简单输出文本或变量值,默认末尾添加换行符 -n: 不在末尾添加换行符 命令详细见–help |
echo -n Hello world |
根据Unicode编码获取符号会用到的网站(也适用于正则):此处฿
截至24年12月,安卓shell支持正则的命令依旧不支持PCRE(\d,\w,\s等转义序列)和断言(”(?=)”等) 语法。
辅助编写正则฿
正则可视化฿
⭐逐行文本简单处理/编辑命令。全文输出默认末尾添加换行符 常用语法: sed [选项] ‘<编辑范围><编辑命令><操作标志>' 选项 -n:仅打印处理过的内容 -E:扩展正则表达式(\d\s这些。不支持断言语法) -i:就地编辑文件 -f:从脚本文件读取编辑命令 编辑范围:指定行数或满足正则匹配的行 编辑命令: 替换:s/old/new/ 删除:d 插入:i 追加:a 操作标志: /g:全局替换。 /i:忽略大小写匹配 /p:打印以编辑行(需结合 -n) 命令详细见--help,使用详细见AI操作标志>编辑命令>编辑范围> |
sed --help |
⭐文本分析提取及数据处理工具 选项 -F -v <var=value>:设置变量初始值 -f 安卓上的awk命令为简省版,并无详细说明,相较主流版本的特性未试验是否全部可用 特性还有内置变量、语法、函数,受限篇幅不详细说明,若有需求请问ai |
awk |
复杂文本编辑和提取工具 Android没有 |
perl |
以字段、字符等简单模式提取工具 | cut --help |
文本统计工具 | wc --help |
⭐排序文本行 与其他命令组合亦可用于简单排序数组 | sort --help |
⭐文本搜索命令:正则匹配、递归搜索、行统计等 | grep --help |
tr:将终端的标准输入进行取补集、替换、去重或删除指定字符,并输出的命令 不使用-选项:替换字符。例 printf "hello world" | tr 'a-z' 'A-Z' 输出结果: HELLO WORLD -c/-C:取 SET1 的补集(即替换不在 SET1 中的字符) 例: printf "hello 123" | tr -c 'a-z' 'X' 输出结果:helloXXXX -d:删除字符。例: printf "hello 123" | tr -d '0-9' 输出结果:hello -s:去重字符。例: printf "fuuuuuuuuuuuuuck~" | tr -s 'u' 输出结果:fuck~ |
tr [-cds] SET1 [SET2] |
head命令:获取文件开头指定行数或指定字节到标准输出(终端) 选项 -n -c -q:多文件下从不打印头信息 -v:单文件下始终打印头信息 |
head [选项] [FILE1] <FILE2> |
获取文件末尾指定行数或指定字节到标准输出(终端) | tail --help |
将行按逆序输出 | tac <FILE...> |
不常用
iconv --help |
转换文件文本编码 |
nl --help |
给文本添加行号 |
paste --help |
按格式合并文本各行 |
comm --help |
竖列已排序文本比较。适用于终端 |
uniq --help |
报告或排除文本中重复的行 |
strings --help |
字符串提取工具。适用于非文本文件提取可读文本 |
seq --help |
生成数字序列 |
文件
切换终端工作目录 安卓无自带 |
cd |
显示当前终端工作目录 | pwd --help |
ls命令:列出目录下的文件 输出格式: -l:展示常用细节信息 -h:人类可读大小 (与-l使用) -m:逗号分隔 -n:同”-l”,但以数字形式显示uid/gid -o:同”-l”,但不显示gid -g:同”-l”,但不显示uid 内容显示: -a:显示隐藏文件 -c:以文件属性变动时间显示 (-l) -u:以访问/创建时间显示 (-l) -d:只显示指定目录,不显示内容 -i:inode 号码,文件唯一标识码 -p:目录末尾添加/ -s:显示文件大小,单位kb -R:递归输出所有子目录内容 排序方式(不使用则默认名称排序): -S:大小排序 -t:时间排序 -r:倒序排列 |
ls -a -lh /storage/emulated/0 |
⚠小白请注意:安卓系统中/storage/emulated/0/目录下存在多份链接,实为链接同一份文件,请谨慎操作
du命令:统计文件大小 参数: -a:显示隐藏文件 -h:以人类可读方式显示文件大小 -c:详细显示各子文件的大小,最后显示总和 -s:仅显示总和,不显示子文件详细 -k -m -g:分别以kb、mg、gb为单位显示大小 |
du -sh /storage/emulated/0/tencent |
查看磁盘使用情况命令 termux无法使用自带命令 |
df --help |
stat: 获取文件的详细信息 -c: 输出指定文件的指定信息 转义序列:①%s: 文件大小(byte) ②%F: 判断文件夹/文件 ③%x, %y %z: 创建/访问、内容修改、文件属性变动时间 ④%X, %Y, %Z: 各类时间戳 ⑤%u: uid ⑥%U: uid名称 ⑦%g: gid ⑧%G: gid名称 ⑨%m: 获取挂载点,实际目录位置 详见:stat –help |
stat -c %u /storage/emulated/0/你好.txt |
★获取并输出文件的内容 文件名”-“(双引号内)为标准输入 |
cat <文件路径> |
mkdir命令:创建文件夹 选项 -p:创建多级目录,若是上级目录不存在,也会一并创建 -v:命令行输出结果 |
mkdir -p /storage/emulated/0/top.xjunz.tasker/file |
删除空目录 | rmdir --help |
⭐创建临时文件或目录 适用于脚本 | mktemp --help |
touch命令:创建文件 参数: -c:即使文件不存在,也不会被创建 -a -m:分别更新文件的访问与修改时间 -d “YYYY-MM-DD HH:MM:SS”:更改文件的访问和修改日期为指定时间 -r <参考文件>:使用参考的文件的时间戳作为指定文件的访问和修改时间参考文件> |
touch -c /storage/emulated/0/你好.txt |
rm命令:删除文件。多个文件使用空格分隔 ⚠请谨慎操作,误删贵重数据概不负责。root机请勿删除根目录文件,有变砖风险 选项 -r:删除目录及其子文件 -f:允许删除空气。root权限可以强制删除仅读文件 -v:输出执行信息 |
rm -r <文件路径> |
cp命令:复制文件至指定目录。亦可实现粘贴后重命名 参数: ⚠无root请勿随意复制移动/sdcard/Android/data目录下的文件,存在文件权限丢失风险。(非目录所属应用无权访问) -T:将目标视为(粘贴后)需要重命名的名称。 -t:将命令中<文件路径>与<目标文件夹>取反。与-T不兼容 -a:递归目录及其子文件,保留文件属性复制 -f:删除无法覆盖的文件再覆盖。需要root -r:复制目录及其子文件 -n:当目标已存在,那么取消执行 -u:当目标已存在,如果被复制的文件较新,那么覆盖 -v:输出执行信息目标文件夹>文件路径> |
cp -an <原文件路径> <目标文件夹> |
mv命令:移动文件至指定目录。亦可重命名文件 ⚠root机请勿移动根目录文件,有变砖风险 无root请勿随意复制移动/sdcard/Android/data目录下的文件,存在文件权限丢失风险。(非目录所属应用无权访问) 参数: -T:将目标视为(移动后)需要重命名的名称。 -t:将命令中<文件路径>与<目标文件夹>取反。与-T不兼容 -f:删除无法覆盖的文件再覆盖。需要root -n:当目标已存在,那么取消执行 -v:输出执行信息目标文件夹>文件路径> |
mv -n <原文件路径> <目标文件夹> |
文本或目录下文件名比较 | diff --help |
⭐搜索文件 | find --help |
检查给定的文件并判断其类型。(测试仅图片文本有效,音视频无效) 选项 -b 简洁模式(不显示文件名) 有说明但未测试成功: -h 不跟随符号链接(默认) -L 跟随符号链接 -s 显示块/字符设备内容 |
file <选项> <FILE1> [FILE2...] |
???sum命令:计算和校验文件的【各种】哈希值 格式:??? sum [-bcs] [FILE]... 选项 -b:仅显示哈希值,不显示文件名 -c:检查哈希值列表文本中记录的每个文件的哈希值是否正确 -s:无输出,如果所有哈希值匹配则退出状态为 0,否则为 1 |
md5sum --help |
给文件创建快捷链接。❗请勿互相链接造成读取文件时死循环 软链接:链硬链接或数据块地址(跨文件系统用) 硬链接:链储存中的数据块地址 |
ln --help |
文件运行锁 | flock --help |
列出打开的文件 截止Android13原生shell环境无法使用 |
lsof --help |
不常用
分割文件 | split --help |
调整文件大小。日志处理用 | truncate --help |
⭐监视文件系统事件 adb测试失败,疑似需root权限 |
inotifyd --help |
更改文件属性,仅支持ext2/ext3/ext4文件系统 | chattr --help |
在目录树中挂载文件系统或设备,也可用于查找指定目录的文件系统 | mount --help |
调试外置存储设备(例:U盘)命令
resize2fs #需root
mkfs.ext4 #需root
mount.ntfs
检查修复本地设备/挂载设备的文件系统命令:
fsck.erofs
fsck.exfat
fsck.f2fs
fsck.ntfs
fsck_msdos
e2fsck
管理ext2、ext3和ext4文件系统中的碎片文件:e2freefrag
系统调试相关
显示正在运行的进程状态 | ps --help |
向指定PID进程发送终止/特定信号 | kill --help |
向具有指定名称的所有进程发送信号 | killall --help |
获取指定进程pid相关信息 | pidof --help |
进程ID搜索 | pgrep --help |
查看硬件资源占用情况 termux终端执行此命令会被重定向到系统自带toybox环境执行,需打busybox并替换符号链接 |
top --help |
系统内核日志 | dmesg --help |
⭐系统日志查看命令 | logcat -help |
显示SELinux模式 | getenforce |
更改SELinux模式 0宽容 1强制 | setenforce 0 |
更改目录或文件的SELinux安全上下文 | chcon --help |
恢复目录或文件的SELinux安全上下文 | restorecon --help |
实时获取输入设备信息(触摸屏、键盘等) | getevent --help |
实时模拟设备输入信息(触摸屏、键盘等),需root 因shell属于解释执行的命令,实际会有操作滞后性,不推荐 |
sendevent --help |
管理系统更新,需root | update_engine --help |
创建进程间单向通信命名管道 | mkfifo --help |
设置进程I/O调度类 需root | ionice --help |
重新调整I/O优先级 需root | iorenice --help |
跟踪指定进程的所有系统调用和信号 | strace -h |
其他各类分析工具命令:
atrace
traced
traced_perf
traced_probes
tracepath #网络诊断工具
tracepath6 #网络诊断工具ip6版
iperf3 #网络性能测量工具
perfetto
simpleperf
simpleperf_app_runner
trigger_perfetto
heapprofd #堆内存分析工具
网络
获取/设置当前主机名 | hostname --help |
网络调试,文件传输 同义命令:netcat |
nc --help |
ping/ping6指令:连通性测试,会遇路由器缓存导致数据异常情况 termux终端执行此命令会被重定向到系统自带toybox环境执行,需打busybox并替换符号链接? |
ping --help |
网络请求工具:下载、上传、监测、模拟用户及客户端行为或会话 | curl --help |
查看/配置网络接口 | ifconfig --help |
⭐防火墙命令 获取可用配置需root权限 | iptables --help |
⭐防火墙命令 获取可用配置需root权限 | ip6tables --help |
捕获并分析网络流量工具 需root |
tcpdump --help |
监控或管理网络连接,进程管理,故障排查 | ss --help |
命令
设置指令优先级 | nice --help |
退出终端后依旧运行命令。 无说明,问AI |
nohup <命令> |
测量命令的执行时间 | time --help |
限制命令的执行时间 | timeout --help |
周期性执行命令并显示输出 | watch --help |
⭐将标准输入(stdin)或管道输出转换为命令行参数 | xargs --help |
编解码
unzip:解压zip命令。已存在的文件默认提示。 指定排除解压的文件可用shell通配符 选项 -d <路径> :解压目录-n :从不覆盖已有文件(默认情况下:提示是否覆盖)-o :总是覆盖已有文件(无法以目录覆盖文件)-j :忽略压缩包内目录结构,仅解压所有文件-q :不显示执行解压的信息-p :将压缩包内文件内容输出到终端(不区分文件,内容过大会卡死)-l :列出压缩包内容-lq :不显示压缩包名-v :显示各文件压缩详细-t :测试压缩数据,不进行解压-x FILE :排除指定文件 |
unzip <-d 解压目录> <操作> <压缩包路径> [指定解压的文件] [-x 排除解压的文件] |
gunzip:解压gzip压缩包命令。空格分隔多个压缩包。解压的文件位于压缩包同级目录 执行成功后,源文件默认将被删除 选项: -c:将压缩包内文本输出到终端(作为 zcat 使用) -f:允许解压覆盖已存在的文件 / 从终端读取数据解压 -k:保留压缩包 |
gunzip <选项> <文件路径> |
gzip压缩包命令:仅能压缩单个文件,输出的压缩包位于文件同级目录 执行成功后,源文件默认将被删除 选项: -c:将压缩结果输出到终端,二进制(不删除源文件) -k:保留输入文件 -[1-9]:设置压缩级别,范围从 1 到 9(1 表示最快速,6 是默认值,9 表示最佳压缩) -d:解压缩文件(作为 gunzip 使用) -f:若解压文件已存在,强制覆盖 亦可作为终端文本压缩命令 例: echo "Hello, world!" | gzip 输出为二进制 |
gzip <选项> <文件目录> |
无需解压缩,直接读取gzip压缩包内文件内容至标准输出 | zcat --help |
tar压缩包指令 压缩示例 格式: tar <操作> <被执行压缩包文件路径> [可选:额外选项] [可选:-T|-X 被指定或排除的文件] -C <源目录/输出目录> <文件名,创建压缩包用> 主要操作: -c:创建 -x:解压 -t:测试(列出) -f:指定 tar 文件名 可选操作: -v:详细显示操作过程/查看列表则输出文件详细 -o:解压时(?忽略文件所有者信息,不同linux版本具有不同差异 -h:Follow symlinks -m:解压时(?忽略文件的修改时间,不同linux版本具有不同差异 -O:将压缩包内指定文件内容输出到终端。(命令例:tar -xOf /sdcard/1.tar ./file.txt) -J:xz 压缩 (压缩率: 高,速度: 慢) 若出现双层压缩包的情况,请将文件后缀名需为.tar.xz -j:bzip2 压缩 (压缩率: 中,速度: 中) 建议后缀名需为.tar.bz2 -z:gzip 压缩 (压缩率: 低,速度: 快) 建议后缀名需为.tar.gz 上述各种压缩算法工具根据系统差异可能没有,若要使用请root后安装 读取指定文本选择或排除文件: -X:读取指定文本中需排除操作的文件 -T:读取指定文本中需指定操作的文件 文本内格式例:./文件夹/file?.txt (可用通配符) 源目录/输出目录: -C <目录路径>:若仅查看用不着 额外选项(未详细测试,若有歧义,执行tar --help 命令查看原文): --exclude --full-time 使用 -tv 显示秒数 --mode MODE 调整权限 --owner NAME[:UID] 设置文件所有者 --mtime TIME 覆盖时间戳 --group NAME[:GID] 设置文件组 --sparse 记录稀疏文件 --selinux 保存/恢复标签 --restrict 所有文件在一个目录下 --no-recursion 跳过目录内容 --numeric-owner 使用数字 uid/gid,而不是用户/组名 --strip-components NUM 解压时忽略前 NUM 个目录组件 -I PROG 通过 PROG 过滤进行压缩或通过 PROG -d 进行解压 |
tar -cvf /sdcard/备份.tar --exclude .nomedia -X /sdcard/排除指定.txt -C /sdcard/日志 . |
tar压缩包指令 解压示例 提示:若有算法的压缩包必须在操作参数里指定 |
tar -xvjf /sdcard/备份.tar.bz2 -T /sdcard/指定文件.txt -C /sdcard/测试目录 |
tar压缩包指令 查看压缩内容示例 | tar -tvf /sdcard/备份.tar |
以 base64 编码或解码 选项 -d :解码模式(默认为编码)-i :忽略非base64编码字符-w <[0~76]COLUMNS> :编码字符达到0至76个字符换行。0为不换行终端命令示例: printf "U29tZSBiYXNlNjQgZW5jb2RlZCBkYXRhCg==" | base64 -di > /sdcard/文本.txt 解码base64到文件/sdcard/文本.txt |
base64 [操作] <文件路径> |
uuencode编码 | uuencode --help |
uuencode解码 | uudecode --help |
设备杂项信息获取
获取设备最近的5次(触摸屏、键盘等)输入事件距离现在的时间 | dumpsys input | grep "RecentQueue" -A 10 |
获取设备最近一次输入事件结束后距离现在的时间,单位ms | printf $(dumpsys input | grep "RecentQueue" -A 10 | sed -n '/UP/ {h;}; ${x;p;}' | sed -nE 's/.*age=([0-9]*)ms.*/\1/p') |
获取最近一次输入事件距离现在的时间,单位ms | printf $(dumpsys input | grep "RecentQueue" -A 10 | sed -nE '$ {s/.*age=([0-9]*).*/\1/p}' ) |
获取输入法可见高度『MIUI专用?』 | printf "$(dumpsys window | sed -nE 's/.*mInputMethodWindowVisibleHeight=(.*)/\1/p')" |
判断输入法有无弹出 | printf $(dumpsys input_method | grep mInputShown | awk -F "=" '{print $NF}') |
系统全局旋转角度 | printf $(dumpsys window | sed -nE 's/.*mDisplayRotation=ROTATION_([0-9]+).*/\1/p') |
获取快捷方式、应用捷径(App Shortcuts)信息 App Shortcuts即长按应用图标出现的二级快捷方式 安卓12及以上应用会请求加密,需root |
dumpsys shortcut -p com.tencent.mm |
获取系统属性参数:设备的运行状态、硬件配置、网络连接等 | getprop |
获取开机运行时间、系统用户、负载平均值 | uptime |
电源状态、电池健康、充电状态、电池电量、唤醒锁定状态、输入、内存、网络、传感器等 | dumpsys power |
列出系统支持的功能 | pm list features |
获取该设备的蓝牙名称 | settings get secure bluetooth_name |
获取当前自动填充服务名 | settings get secure autofill_service |
获取android_id | settings get secure android_id |
获取CPU状态 | dumpsys cpuinfo |
获取CPU信息 | cat /proc/cpuinfo |
获取内存信息 | cat /proc/meminfo |
变量
获取shell环境变量 | env |
export命令:声明临时(本次shell会话)环境变量 | export name=Phoenix-Soup |
shell内置变量
$RANDOM |
随机数 范围0~32767 |
$SECONDS |
本次shell运行时长(秒) |
$LINENO |
当前行号 (安卓环境无效) |
$PWD |
当前工作目录的路径 (安卓环境无用) |
$? |
上一个命令的退出状态码 |
$0 |
当前脚本的名称 |
$1, $2, ... |
shell传递给脚本的参数,数字是参数序号 |
$# |
传递给脚本的参数个数 |
$@ |
所有传递给脚本的参数,以空格分隔 |
$$ |
当前Shell进程的进程ID(PID) |
$_ |
获取最后一个参数 |