Skip to the content.

首页 | Blogs | 项目合集 | Bilibili↗
←返回 | 创建:2024-07-20 | 最后更新:2025-03-21
此页面的短链接฿

此内容原作者:@Phoenix-Soup
授权代传

版本号:20240420

或者查看该作者同名自动任务App脚本

使用Ctrl+F或Command+F快速索引
当前命令收录量:未统计

shell作为一款交互式的解释执行命令语言,且具有部分程序设计语言特性,主要用于命令行管理系统。
以下为在长期使用中,收集记录能用于编写脚本的【原生安卓】shell命令中文说明。(测试系统miui14,大部分为非root)
受限于解释执行的特性,执行效率不及编译执行的代码语言。不推荐用于编写大型或时效性要求苛刻的脚本

获取正在运行的服务列表
这个\t可以用U+0009字符代替。
service list | sed -nE 's/^[0-9]+\t([^:]*).*/\1/p'

与service交互的三种方式

  1. cmd <参数>:与指定服务开放给shell的api进行交互
  2. dumpsys :获取服务开放给dumpsys命令接口的所有运行状态和内部信息
  3. 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 <持续时间(ms)>
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选项

activity标志自用:

intent使用说明详见此处฿
(24年12月10日intent参数规范不显示,估摸为安卓大版本更新临时下架)

Activity调试

start-activity / start 命令用于启动Activit start 子命令选项

打开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

国民APP常用Activity URL收录฿
shell指令跳转应用URL scheme教程指令汇总฿

杀应用

强制停止应用,无论如何。 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调用,原因有四:

  1. 命令有误
  2. 权限名称不为系统内部主要使用的名称
  3. 厂商定制的权限无名称
  4. 另起炉灶的权限管理系统没有接入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脚本文件

安卓上的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)
$_ 获取最后一个参数


无标题

感谢[「执行Shell指令」规则导出工具฿](https://gist.github.com/kdxhub/e0344e79dbdc5d99e5e75bab853f2927)