Linux 终端
PocketCode 的终端在手机上为你提供真正的 shell:运行在原生伪终端上的 BusyBox ash,以你的项目文件夹作为主目录,带有标签页、分屏和一个包含 20 个工具的面板。远程工作(SSH 主机、SFTP、端口转发)有单独的页面。

它是什么,以及如何打开
终端不属于主界面五个页面(pager)之一:它以全屏浮层的形式打开在应用之上。有三种进入方式。
- 1点按导航栏中的 工具 按钮,在 开发工具 面板中选择 终端。
- 2打开命令面板并运行 打开终端(「打开终端会话」)。
- 3在 主页 上点按 终端 快捷操作。它是默认显示的三个快捷操作之一。
界面一览
终端由三个界面(起始页、终端、SSH)组成,它们共用同一个标签栏、同一个工具面板和同一套工具页。本页涵盖起始页、本地终端界面以及本地 shell 的全部工具;SSH 界面另有单独页面。
| 界面 | 如何进入 | 你可以做什么 |
|---|---|---|
| 起始页 | 最先打开。在会话中点 返回 会回到这里。 | 选择 本地 Shell、快速连接 或 浏览主机。从上方的胶囊按钮恢复正在运行的会话。 |
| 终端(本地 shell) | 起始页上的 本地 Shell,或某个本地会话的胶囊按钮。 | 标签页、分屏、在输出中搜索、输入栏、手势,以及下面所有工具。 |
| SSH 界面 | 起始页上的 快速连接 或 浏览主机。 | 远程标签页,配有各自的 32 个工具。详见 SSH 页面。 |
| 停靠的工具面板 | 宽屏上自动出现(660 dp 或更宽,且未使用分屏)。 | 一排工具图标,下方显示当前打开的工具。本地 shell 有 20 个工具。 |
| 工具菜单 | 标签栏中的扳手按钮(更多选项),在没有停靠面板时可用。 | 本地 shell 有六个分类、搜索操作… 和一行 常用。可以把任意工具作为全屏工具页打开。 |
| 代码片段 | 面板工具;菜单 → 代码片段。 | 98 条内置命令、你自己的命令、文件夹和 用 AI 生成。 |
| 命令历史 | 面板工具;菜单 → 会话。 | 搜索、加星标、重新运行和删除你在此标签页发送过的命令。 |
| 文件管理器 | 面板工具;菜单 → Linux 工具。 | 浏览文件夹,新建文件夹或文件,打印文件内容,删除(会先确认)。 |
| Git 面板 | 面板工具;菜单 → Linux 工具。 | 通过 JGit 查看仓库的状态、分支、日志,并执行相关操作。 |
| 进程 | 面板工具;菜单 → Linux 工具。 | 列出、筛选、排序并终止进程。 |
| 系统信息 | 面板工具;菜单 → Linux 工具。 | 操作系统、内核、运行时间、用户,以及手机型号和 Android 版本。 |
| 磁盘使用 | 面板工具;菜单 → Linux 工具。 | 每个分区一张卡片,带使用率条。 |
| 网络 | 面板工具;菜单 → Linux 工具。 | 针对某个目标运行 ping、nslookup、traceroute、curl、wget 或 dig。 |
| 环境变量 | 面板工具;菜单 → Linux 工具。 | 列出、搜索、添加、编辑和取消设置变量。 |
| 别名管理器 | 面板工具;菜单 → 会话。 | 列出、创建、运行和删除别名。 |
| 后台任务 | 面板工具;菜单 → 会话。 | 列出任务、终止某个任务、把某个任务切到前台。 |
| 快捷脚本(Pro) | 面板工具;菜单 → 自动化。 | 保存多行脚本并逐行运行。 |
| 键盘宏(Pro) | 面板工具;菜单 → 自动化。 | 保存按键序列并发送到会话。 |
| Expect 规则(Pro) | 面板工具;菜单 → 自动化。 | 当输出中出现某个模式时,自动作出应答。 |
| 录制 | 面板工具;菜单 → 会话 → 开始录制。 | 把标签页录制为 asciinema .cast 文件。 |
| 会话日志 | 面板工具;菜单 → 设置。 | 把会话记录到加密文件,加书签、写备注并分享。 |
| 分享你的开发服务器 | 面板工具;菜单 → 会话。 | 为手机上运行的开发服务器提供一个临时的公开链接。 |
| 配置文件 | 面板工具;菜单 → 安全。 | 创建并启动终端配置文件(见限制)。 |
| 同步与团队 和 导入 / 导出 | 面板工具;菜单 → 设置。 | 本地面板里也有。详见 SSH 页面。 |
| 用 AI 解释 | 输入栏中的闪光按钮,仅在输出看起来像失败时出现。 | 用通俗易懂的语言解释最后 40 行。 |
| 复制到剪贴板? | 当程序请求访问你的剪贴板(OSC 52)时自动出现。 | 复制、忽略,或在本次会话剩余时间内允许。 |
| 该命令读取凭据并向外发送数据 | 在输入栏键入的此类命令运行之前出现。 | 先看清它会触及什么,然后 仍然运行 或取消。 |
起始页
起始页是该模块的首页。它显示标题 终端 和一句话「本地 shell、远程 SSH 和 Linux 工具尽在一处」。
本地 Shell
在终端界面中打开手机上的 shell。名称下方的状态行在 BusyBox 已链接时显示 Busybox 工具就绪,只有 Android 自带 shell 可用时显示 基础 shell。
快速连接 和 浏览主机
通过快速连接或主机列表打开 SSH 界面。详见 SSH 页面。
已打开的会话
卡片上方的胶囊按钮列出仍在运行的会话,方便你跳回其中一个。
窄屏上卡片竖排成一列;宽屏上标题在左,卡片在右。在这里点 返回 会离开终端。
你可以
- 点一下 本地 Shell,即可启动本地 shell。
- 通过胶囊按钮恢复任何正在运行的会话,无论是本地的还是远程的。
- 用 快速连接 或 浏览主机 跳到 SSH 界面。
你不能,以及原因
- 全新安装后,不要完全相信 BusyBox 状态:它只在界面绘制时读取一次,而 BusyBox 是在你第一次打开 shell 时才链接的,所以在你重新打开终端之前,卡片可能一直显示 基础 shell。尚未提供
本地 shell
本地 shell 是手机上的一个真实进程,而不是对它的模拟。
- Shell: BusyBox v1.34.1 的
ash,随应用一起提供,运行在原生伪终端上(TERM=xterm-256color,随屏幕调整大小)。如果 BusyBox 不可用,则回退到 Android 自带的sh。 - Applet: BusyBox 二进制文件导出 373 个 applet。第一次打开 shell 时,PocketCode 会把它们全部链接,其中有
awk、vi、sed、find、tar、gzip、unzip、wget、nc、ping、nslookup、traceroute、ifconfig、ip、netstat、top和less。如果这一步失败,则改为链接一份包含 70 个 applet 的核心列表。应用更新后,下次打开 shell 时会修复这些链接。 - Node: 当构建中包含适用于你设备架构(arm64-v8a 和 x86_64)的
node时,它会被链接进 shell,并设置NODE_OPTIONS=--no-addons。不包含 npm。 - 主目录:
~是你的项目文件夹。ls、grep和diff是带颜色的别名,ll即ls -la(PocketCode 每次启动都会检查 shell 的.ashrc,若有差异就恢复它)。 - 数据库: 本地 PostgreSQL 引擎运行期间,
DATABASE_URL和PG*变量只在本地 shell 中设置,绝不会出现在 SSH 会话里。 - 输出: 输出是一个行列表(每个标签页保留最后 10,000 行)。会绘制颜色和样式(16 色、256 色和 RGB 颜色,粗体、暗淡、斜体、下划线),回车符会让进度条折叠为一行,退格和制表位也能正常工作。光标移动、清屏、鼠标跟踪和其他控制序列会被丢弃。


这里没有什么,以及原因
- 包管理器:没有
apt、dpkg或pkg。应用不会安装软件包。Google Play git。请使用 Git 面板(它通过 JGit 工作)或编辑器中的源代码管理。有意为之python、docker、curl、ssh、scp、zip和nano。它们不在 BusyBox 构建中,应用也不会下载可执行文件。要连接另一台机器,请使用 SSH 界面。Google Play- root、
chroot/proot或 Linux 发行版:shell 只拥有应用自己的用户身份,没有更多权限。设备 - 整屏重绘的程序,如
vi、top或less:由于光标移动被丢弃,它们无法以整屏方式显示。进程 中提供了top -n 1作为胶囊按钮。有意为之
会话、标签页与手势
每个标签页就是一个会话。标签栏由本地和 SSH 两个界面共用,但每个界面只显示自己类型的标签页。
标签页、分屏与搜索
- + 会在此界面再打开一个本地 shell(在 SSH 界面中则打开主机列表)。
- 长按标签页可选择 重命名 和 关闭其他标签页(远程标签页还有 复制会话)。关闭本地标签页会立即生效;关闭其他标签页会先询问。
- 每个标签页都有一个状态点(本地标签页始终为绿色);当你在别处时某个标签页收到了新输出,它会多出一个点。记录或录制开启期间,栏中会显示 LOG 和 REC 胶囊。
- 分屏按钮依次切换 水平拆分、垂直拆分、不拆分。第二个窗格显示下一个标签页,活动窗格有强调色边框,点按窗格即可聚焦。分屏是 Pro 功能。
- 放大镜(搜索输出)会打开 在输出中搜索…,带有计数(「第 N / 共 M」)以及上一个、下一个按钮。它会在一行的任意位置匹配文本,忽略大小写,每个分屏窗格单独搜索。
- 广播(把你输入的内容发送到每个已连接的标签页)和 多路复用 Shell 属于远程标签页,详见 SSH 页面。
手势与按键
| 双击输出区域 | 发送 Ctrl+C,停止正在运行的命令。 |
| 在输出区域滑动 | 发送方向键:左右滑动移动光标,上下滑动浏览 shell 历史。 |
| 双指捏合输出区域 | 调整文字大小,范围 8 到 24。大小会被记住。 |
| 长按输出区域 | 弹出菜单,包含 复制此行、复制输出 和 清空终端。 |
| 点按链接 | 网址会在浏览器中打开。 |
| 音量键 | 在设置了 音量键导航:开 时,充当向上和向下方向键。默认关闭,开关位于工具菜单的 设置 下。 |
输入栏
- 带有 发送 的单行输入框。你从这里发送的所有内容都会加入此标签页的命令历史。
- 输入时最多出现五条建议:已知命令、此标签页历史中的命令,以及以
/或~开头的路径(仅限本地 shell,只展开一层)。 - 上一条命令 会沿着此标签页的历史向后翻。
- 附加文件 用来选择文件。在本地 shell 中,它会被复制到你的项目文件夹,若重名则追加
(1)、(2),并把它的路径插入输入框。在远程标签页中,它会上传到/tmp。 - 当最新输出看起来像失败时,会出现 用 AI 解释(见下文)。
会话界面的限制
- 一排额外按键(ESC、TAB、Ctrl、F1 到 F12)。你能发送的按键只有 Ctrl+C(双击)、方向键(滑动)以及宏发送的内容。尚未提供
- 从输出中打开文件:文件路径和
file:line:column引用会被高亮,但点按没有反应。只有网址会打开。尚未提供 - 免费版同一界面的第二个会话,以及分屏。Pro
会话可能弹出的提示
复制到剪贴板?(OSC 52)
当会话中的程序请求把文本放到你的剪贴板上时,自动出现。
命令、脚本或远程服务器都可以请求终端复制文本。PocketCode 会先询问你,因为粘贴到终端的文本可能会执行命令。
你可以
- 阅读「该会话想要将 N 个字符复制到剪贴板」以及文本预览。
- 点按 复制 或 忽略。
- 勾选 在本次会话剩余时间内允许。这个选择保存在内存中,会话结束后即被忘记。
你不能,以及原因
- 在不询问你的情况下,让会话写入你的剪贴板。有意为之
该命令读取凭据并向外发送数据
当你从输入栏发送的命令触及凭据存储,并且还会把数据发送到某处时出现。
对话框会说明命令触及什么、数据去往何处。这是警告,不是拦截:它针对从教程复制来或由 AI 建议的命令,因为这类命令的第二个效果很容易被忽略。
你可以
- 阅读命令所做的两件事。
- 点按 仍然运行 发送它,或取消。
你不能,以及原因
- 让它拦截命令,或捕获任何不经过输入栏的内容。有意为之
工具面板
除了键入命令之外,你做的大部分事情都发生在工具里。它们有两种出现方式,取决于所在的界面。
本地 shell 的 20 个工具,按面板顺序
代码片段、命令历史、文件管理器、Git 面板、进程、系统信息、磁盘使用、网络、环境变量、别名管理器、后台任务、快捷脚本、键盘宏、Expect 规则、录制、会话日志、分享你的开发服务器、配置文件、同步与团队 和 导入 / 导出。远程标签页再增加 12 个,共 32 个(见 SSH 页面)。
停靠面板
在宽屏(660 dp 或更宽)且未使用分屏时,一个 380 dp 的面板会停靠在右侧:上面是一排图标,下面是所选工具。始终会选中一个工具(第一次是 代码片段),面板会记住上一次的选择。标签栏中的 V 形箭头(收起面板)可以把它折叠起来。
工具菜单
在手机上,或开启分屏时,扳手按钮(更多选项)会打开一个菜单,其中有搜索框(搜索操作…)、一行 常用(某个操作使用两次后会出现在这里,最多六个)以及这些分类:
| 分类 | 本地 shell 中的操作 |
|---|---|
| 会话 | 分享你的开发服务器、分屏布局、命令历史、别名管理器、后台任务、复制输出、清空终端、开始录制 |
| Linux 工具 | 文件管理器、进程、网络、磁盘使用、系统信息、环境变量、Git 面板 |
| 代码片段 | 所有片段 和八个分类快捷方式(系统、Docker、Git、数据库、安全、监控、网络、文件与文本) |
| 自动化 | 键盘宏、快捷脚本、Expect 规则 |
| 安全 | 配置文件 |
| 设置 | 会话日志、同步与团队、导入 / 导出、音量键导航:开 / 音量键导航:关 |
在 SSH 标签页上还有第七个分类 连接,其他分类里的操作也更多。复制输出和清空终端也在输出区域的长按菜单里。

- 在宽平板上停靠面板时,找不到 音量键导航:开/关:那里不绘制工具菜单。(开启分屏后,扳手按钮会回来。)设备
Linux 工具
这些工具是你原本要键入的命令的快捷方式。它们显示的列表由一个独立的非交互式 shell 读取(每次读取上限为 15 秒和 512 KB)。你通过它们做出的修改(创建、删除、终止、导出)会作为普通命令键入到你的会话中,因此你也能在输出里看到。
文件管理器
面板工具 文件管理器;菜单 → Linux 工具。
基于 ls -la 构建的文件夹浏览器。
你可以
- 打开文件夹,用 上一级 返回上一层。
- 创建文件夹(新建文件夹,
mkdir -p)或空文件(新建文件,touch)。 - 点按文件,用
cat在会话中打印它。 - 用垃圾桶图标删除条目。会先弹出标题为 删除 <名称>? 的 删除 对话框:该文件,或该文件夹及其中所有内容,将被永久删除,没有回收站,也无法撤销。删除 确认;取消 保留。
- 会话中输入的
rm -rf把路径放在引号里,并对特殊字符做了转义,所以名为$(…)的文件会按名称被删除,而不会被执行。 - 使用 快捷命令 胶囊按钮:
du -sh *、find . -name '*.log'和chmod +x。
你不能,以及原因
- 浏览项目文件夹之外的位置:浏览器止步于此,存放应用凭据的文件夹永远不会打开。有意为之
- 撤销删除,或把删除的内容放入回收站。有意为之
- 查看
ls -la所打印内容之外的所有者、大小或日期。尚未提供
Git 面板
面板工具 Git 面板;菜单 → Linux 工具。
一个小型 Git 面板,有四个标签:状态、分支、日志 和 操作。在本地 shell 上它使用 JGit(没有 git 程序);在 SSH 标签页上它会把 git 命令键入远程 shell。它会从文件管理器所在的文件夹向上查找仓库,或从你的项目文件夹查找。
你可以
- 在当前位置 初始化仓库、全部添加,以及取消暂存所有内容。
- 写提交信息并 提交更改。
- Push、Pull、Fetch、Stash、Stash Pop。
- 切换分支,或用 新建分支 创建分支,以及放弃对某个文件的更改。
你不能,以及原因
- 完整的
git diff或reset:本地面板不会绘制 JGit 做不到的操作。面板自己的脚注会指向编辑器中的源代码管理。有意为之 - 从这里登录 Git 主机:push 和 pull 使用应用其他地方已设置好的凭据,失败时错误信息会显示在该页面中。有意为之
- 处理项目文件夹之外的仓库。有意为之
进程
面板工具 进程;菜单 → Linux 工具。
正在运行的进程,用 ps 读取。
你可以
- 查看 PID、名称、用户、CPU %、MEM % 和状态。
- 按名称或 PID 筛选(筛选进程…)。
- 按 CPU %、MEM % 或 PID 排序。
- 用终止图标停止进程,这会把
kill -9 <pid>键入会话。 - 使用
top -n 1、ps aux --sort=-%mem | head -20和uptime胶囊按钮,并刷新列表。
你不能,以及原因
- 选择其他信号(始终是
-9),或按用户筛选。尚未提供 - 显示进程树。尚未提供
系统信息
面板工具 系统信息;菜单 → Linux 工具。
三个卡片标签:概览(操作系统、内核、运行时间)、硬件(架构,加上你手机的型号、Android 版本和 SDK 级别)和 环境(用户和 id)。
你可以
- 刷新卡片。
- 使用胶囊按钮:
uname -a、uptime、whoami、free -h和env | sort会发送按钮上写的命令。cpuinfo 发送cat /proc/cpuinfo,model 发送getprop ro.product.model(找不到时退回 DMI 产品名称),$PATH 发送echo $PATH,$SHELL 发送echo $SHELL。
你不能,以及原因
- 把内存、CPU 或主机名显示为单独的卡片。尚未提供
磁盘使用
面板工具 磁盘使用;菜单 → Linux 工具。
每个分区一张卡片,数据来自 df -hP,带使用率条以及 已用、可用 和 总计 大小。
你可以
- 刷新卡片。
- 使用
df -h、du -sh * | sort -rh | head -20和find / -size +100M 2>/dev/null胶囊按钮。
你不能,以及原因
- 查看 inode,或
df -hP的列之外的更多信息。尚未提供
网络
面板工具 网络;菜单 → Linux 工具。
打开它会运行 ifconfig(或 ip addr)并显示结果。输出以纯等宽文本显示在该页面中,而不是会话里。
你可以
- 选择一个工具(发送 5 个包的
ping、nslookup、traceroute、用于查看响应头的curl、用作可达性检查的wget、dig),输入主机、地址或 URL,然后点按 运行。 - 使用
ifconfig、netstat -tlnp和ss -tuln胶囊按钮。
你不能,以及原因
- 在本地 shell 上运行
curl或dig:BusyBox 构建不包含它们,所以会以「未找到」的提示结束。Google Play - 运行超过 15 秒,或打印超过 512 KB 的内容。有意为之
环境变量
面板工具 环境变量;菜单 → Linux 工具。
用 env 列出的变量,可以搜索。
你可以
- 用 新建变量 添加(名称必须以字母或下划线开头,且只能使用字母、数字和下划线)。它会以
export NAME='value'发送。 - 用 编辑变量 编辑,或删除它,这会发送
unset。
你不能,以及原因
- 确保列表与你已打开的会话一致:它由另一个 shell 读取,所以你手动
export的变量可能不会出现。有意为之
别名管理器
面板工具 别名管理器;菜单 → 会话。
会话的别名,用 alias 列出。
你可以
- 用 新建别名 创建(名称可用字母、数字、下划线和连字符)。它会以
alias name='command'发送。 - 点按别名运行它,或删除它(
unalias)。 - 点按四个 建议 别名之一(
ll、cls、gs、..)。gs是git status,本地 shell 无法运行它。
你不能,以及原因
- 在 shell 关闭后保留别名:PocketCode 每次启动 shell 都会检查
.ashrc,若与固定模板不同就重写它,所以对它的修改不会保留。有意为之 - 确保列表与你已打开的会话一致:它由另一个 shell 读取。有意为之
后台任务
面板工具 后台任务;菜单 → 会话。
用 jobs -l 列出的任务。没有任务时,该页面会显示「没有后台任务」和「使用命令 & 在后台运行」。
你可以
- 终止任务(
kill <pid>;pid 为 1 或更小,或应用自己的 pid,会被拒绝)。 - 把任务切到前台(
fg %N)。
你不能,以及原因
- 看到你正在键入命令的那个 shell 的任务:列表来自另一个 shell,所以你在标签页里用
&启动的任务通常不会出现。有意为之
代码片段与历史
可复用的命令,以及你已经运行过的命令。
代码片段
面板工具 代码片段(面板打开时默认选中的那个);菜单 → 代码片段。
98 条现成命令,分为 14 个分类,在终端第一次运行时写入,另外还有你自己的。在本地 shell 上,六条 软件包 片段会被隐藏,因此显示 92 条。
你可以
- 按分类胶囊按钮(系统、Docker、Git、Nginx、Node/PM2、数据库、安全、部署/CI-CD、监控、网络、软件包(仅限 SSH 标签页)、文件、文本、用户、自定义)和文件夹筛选。
- 点按片段,把它的命令放进输入栏。在你发送之前不会运行。
- 用 新建片段 创建:名称、命令、分类、描述和文件夹。用 AI 生成 会把「查找大于 100MB 的文件」这样的一句话变成片段。它需要已连接的 AI 服务商,第一次会征求同意。
- 把片段移到文件夹,创建或删除文件夹,以及删除片段。
- 使用占位符:
${DATE}(yyyy-MM-dd)、${DATETIME}(yyyy-MM-dd_HH:mm:ss)和${TIMESTAMP}(毫秒)会在你点按片段时填入。${HOST}、${USER}和${PORT}会在从已保存主机打开的标签页上填入。其他内容保持原样,已保存主机所属分组或配置文件中的环境变量除外。 - 在免费版最多保存 10 条你自己的片段:98 条内置片段不计入上限。
你不能,以及原因
- 在免费版保存超过 10 条你自己的片段。98 条内置片段不计入,所以 + 按钮(带有 PRO 标记)只有在你已有 10 条自己的片段时才会打开 Terminal Pro。带有片段的导入会停在同一个上限。Pro
- 在本地 shell 上看到 软件包 片段:没有可运行它们的包管理器。Google Play
- 在本地标签页填充
${HOST}、${USER}或${PORT}:没有主机时,它们保持键入时的样子。有意为之
命令历史
面板工具 命令历史;菜单 → 会话。
你从此标签页的输入栏发送的命令。
你可以
- 用 搜索命令… 搜索。
- 给命令加星标,把它保留在 收藏 下。
- 再次运行某条命令,或删除它。
- 点按 清除。对话框写着「这将移除此标签页历史中的所有命令。收藏将被保留。」
你不能,以及原因
- 在标签页关闭后保留历史,或在标签页之间共享:它每个标签页只保存最后 100 条命令,且存放在内存中。有意为之
- 看到你直接键入 shell 的内容:只记录从输入栏发送的命令。有意为之
自动化(Pro)
快捷脚本、键盘宏和 Expect 规则是 Pro 功能:限制出现在保存它们时,以及运行快捷脚本时。在免费版上,这些页面可以打开,会显示 PRO 标记,当你尝试保存时会出现 Terminal Pro。付费墙把它们列为 高级自动化(Expect 规则、Watchdog、宏)。
快捷脚本
面板工具 快捷脚本;菜单 → 自动化。
多行脚本,一键发送到会话。
你可以
- 用 新建脚本 创建脚本(名称、描述和脚本文本),并可搜索、编辑和删除。
- 点按 运行:每一行都会发送到会话,行与行之间间隔 150 毫秒。空行和以
#开头的行会被跳过。
你不能,以及原因
- 在没有 Pro 的情况下保存或运行脚本。Pro
- 中途停止脚本,或按分类整理脚本:没有停止按钮,表单也不询问分类。尚未提供
键盘宏
面板工具 键盘宏;菜单 → 自动化。
一个命名的按键序列,以原始字节的形式发送到会话。
你可以
- 添加宏:名称、按键序列 和可选的描述。
- 点按宏即可发送,或删除它。
- 在序列中使用这些转义,且只有这些:
\n(回车)、\t(Tab)、\x1b(ESC)、\x03(Ctrl+C)、\x04(Ctrl+D)和\x1a(Ctrl+Z)。
你不能,以及原因
- 在没有 Pro 的情况下创建宏。Pro
- 把宏按钮放到输入栏:宏只能从这个页面运行。尚未提供
Expect 规则
面板工具 Expect 规则;菜单 → 自动化。
当输出中出现某个模式时,PocketCode 会替你键入应答。规则会对每个已打开会话的输出逐行检查,一行只会由第一条匹配的规则应答。
你可以
- 添加规则:一个 要检测的模式、使用正则表达式(关闭表示该行包含这段文本,忽略大小写;开启表示该行中任意位置能找到这个正则表达式)、一个 自动响应 和一段描述。
- 开启或关闭某条规则,或删除它。
你不能,以及原因
- 在没有 Pro 的情况下创建规则。Pro
- 在响应中添加换行:PocketCode 已经会在其后按下回车(该页面写着「响应将自动发送并加上回车」),所以加
\n会发送两次。有意为之
配置文件
配置文件是终端中最不完善的部分。把它们列在这里,是因为这个页面确实出现在面板和菜单里。
面板工具 配置文件;菜单 → 安全。
一个 终端配置文件 列表。应用自带五个:Default、Bash、Dev (Node)、Docker 和 Python Env。
你可以
- 创建、编辑、复制和删除配置文件,并把其中一个设为默认。
- 填写名称、shell 类型、shell 路径、工作目录、主题、字号、启动命令、环境变量、回滚行数、响铃、图标和颜色。
- 点按 启动,打开一个标签页并发送该配置文件的启动命令。
你不能,以及原因
- 保留配置文件:配置文件不会写入存储,所以应用重启后别指望它们还在。尚未提供
- 让 shell 类型、主题、字体、环境变量或工作目录生效:启动 基本只做了打开标签页和发送启动命令这些事。尚未提供
- 为 SSH 主机创建配置文件:表单里没有主机选择器。尚未提供
- 运行出厂配置文件里的命令:Docker 和 Python 不在本地 shell 中。Google Play
录制与日志
保存会话所打印内容的两种方式。两种都是免费的。
录制
面板工具 录制;菜单 → 会话 → 开始录制。
「将会话保存为 asciinema .cast 文件,稍后可回放。」该文件为 asciicast v2 格式,命名为 session_<name>_<date>.cast,未加密。
你可以
- 对当前聚焦的标签页执行 开始录制 和 停止录制。录制期间会显示 REC 胶囊。
- 在 已保存的录制 下查看你的文件。
- 也可以在 会话日志 中找到录制:它保存在同一个存储里,所以可以在那里标记和分享,并且计入 100 条的上限。
你不能,以及原因
- 在应用内回放录制:它只会被列出。请到别处用 asciinema 回放。尚未提供
会话日志
面板工具 会话日志;菜单 → 设置。
会话所打印全部内容的纯文本日志,加密存储在设备上(AES-256-GCM,密钥保存在 Android Keystore 中)。纯文本只在记录期间存在;停止后文件即被封存。
你可以
- 开始记录 和 停止记录。记录期间会显示 LOG 胶囊。
- 对日志使用 标记(一颗星),添加 备注(「发生了什么、为何重要」),并显示 仅显示已标记。
- 分享 日志:它会被解密成一份临时副本,并交给系统分享面板。
你不能,以及原因
- 保留超过 100 份日志:最旧的会被丢弃,你标记过的除外。有意为之
- 按文本或日期搜索日志:你只能看到每份日志的日期和已标记筛选。尚未提供
分享你的开发服务器
通往你手机上运行的开发服务器的公开链接。
面板工具 分享你的开发服务器;菜单 → 会话。
当手机上有开发服务器在运行(从项目启动)时,该页面写着「为本机 N 端口上运行的服务器生成一个公开地址」。链接通过 SSH 远程转发到 localhost.run 发出:无需账号,也无需额外软件。
你可以
- 点按 创建链接,然后点 复制链接。如果失败,点 重试。
- 随时点按 停止分享。开发服务器停止时,链接也会自动关闭。
你不能,以及原因
- 没有服务器时分享:该页面会写着「目前没有运行中的开发服务器。请先打开一个项目。」有意为之
- 保留同一个地址,或使用你自己的域名:链接是临时的(「每次都不同,停止分享即失效」),并且在分享开启期间,任何拿到它的人都能访问该服务器。第三方
- 离线时分享。需要网络
用 AI 解释
命令失败时,用通俗易懂的语言给你帮助。
输入栏中的闪光按钮(用 AI 解释)。只有最新输出看起来像失败时才会出现。
PocketCode 会把标签页的最后 40 行(最多 8 KB)在先屏蔽密钥后发送给你已连接的 AI 服务商,并在 AI 解释 中显示回答:什么失败了、为什么,以及接下来该运行什么。它最多等待 60 秒。你使用的是自己的服务商,所以 PocketCode 不产生任何费用。
你可以
- 阅读解释,并点按 复制解释。
- 阅读标题下的那一行:「最后 40 行会发送给你连接的 AI 服务商,其中的密钥已被遮盖。」
你不能,以及原因
- 在设置中没有连接 AI 服务商的情况下使用它:该页面会显示「没有收到解释。请在设置中确认已连接 AI 服务商后重试。」需要网络
- 用按钮运行 AI 建议的命令:该页面只会显示并复制它。文本不会被保存。有意为之
外观
颜色和字体不在终端本身里设置。
- 在 设置 的 外观 下,打开 终端外观:主题、字体、文字大小、壁纸和背景不透明度。
- 共有 11 个终端主题,外加 跟随应用(选择器里共 12 张卡片)。五个免费(跟随应用、PocketCode Dark、PocketCode Light、Dark 和 Light),七个是 Pro(Dracula、Solarized Dark、Monokai、One Dark、Catppuccin Mocha、Gruvbox Dark 和 Nord)。从应用市场安装的终端主题也是 Pro。
- 捏合输出区域同样可以调整文字大小(8 到 24)。
SSH、SFTP 与远程工具
SSH 界面、SFTP 以及所有远程功能都有单独的页面。它们与你刚读到的标签栏、面板和菜单共用,另外多出 12 个工具(共 32 个)。
- 所在位置: 主机和分组、快速连接、主机密钥与键盘交互式登录、SSH 密钥(包括绑定到设备的密钥)、SFTP、端口转发、Watchdog、Webhooks、包管理器、云服务商、串口和远程桌面。
- 同样在此面板中: 同步与团队 和 导入 / 导出 也出现在本地工具列表中。它们在 SSH 页面中介绍。在 同步与团队 中,创建、查找或加入团队房间时,Android 13 及更高版本会请求本地网络(附近设备)权限,该权限的说明和连接错误会以应用的语言显示。
- 远程标签页上的 Pro: 第二个已保存的主机、第二个端口转发、广播、Watchdog 和 Webhooks。它们的限制见 SSH 页面。
免费版与 Pro
本地终端对哪些功能设了限制。其他一切都是免费的。
| 功能 | 免费版 | Pro |
|---|---|---|
| 同时活动的会话数(按界面计,终端和 SSH 各有一个名额) | 1 个 | 不限 |
| 分屏 | 不包含 | 包含 |
| 创建键盘宏、快捷脚本和 Expect 规则(以及运行快捷脚本) | 不包含 | 包含 |
| 你自己的片段 | 最多 10 条;98 条内置片段不计入。超过 10 条后,添加或导入都会打开 Terminal Pro | 无上限 |
| 终端主题 | 4 个内置,外加 跟随应用 | 全部 11 个,外加 跟随应用,以及来自应用市场的主题 |
| 终端字体 | 仅 Default | Default 外加另外 7 种 |
| 本地 shell、Linux 工具、Git 面板、历史、别名、环境变量、录制、会话日志、分享你的开发服务器、用 AI 解释、配置文件 | 包含 | 包含 |
隐私与安全
- 本地 shell 以 PocketCode 自身的权限运行,不是沙箱。第一次使用时,会有一条提示(关于此终端)说明这一点。
- 你的项目在
~中。工具页停留在该文件夹内,从不打开存放应用凭据的文件夹。 - 会话日志使用 AES-256-GCM 和 Keystore 密钥加密保存在设备上。录制是纯文本的
.cast文件。分享日志会把它解密成一份临时副本。 - 命令历史保存在内存中,每个标签页最后 100 条命令,不会写入磁盘。
- 你从输入栏发送的命令如果读取了凭据存储并同时向外发送数据,会在运行前弹出警告。
- 程序在没有你确认的情况下无法写入你的剪贴板(OSC 52)。
- 本地 PostgreSQL 引擎的
DATABASE_URL和PG*变量只在本地 shell 中设置,且只在引擎运行期间有效。它们绝不会发送到 SSH 会话。 - 有意离开设备的内容:用 AI 解释 会在一次性同意后,把最后 40 行(已屏蔽密钥)发送给你连接的 AI 服务商。代码片段中的 用 AI 生成 会把你输入的那句话发送给同一个服务商。分享开启期间,分享你的开发服务器 会经由 localhost.run 转发。
限制
本地终端的主要限制,每条都附有原因。详情见上面的各节。
- 整屏重绘的程序(
vi、top、less)无法以整屏方式显示。有意为之 - shell 中没有包管理器、
git、python、docker、curl、ssh或zip。Google Play - 没有 root,也没有 Linux 发行版:shell 使用的是应用自己的用户身份。设备
- PocketCode 运行在 64 位设备(arm64-v8a 和 x86_64)上,需要 Android 9 或更高版本。没有 32 位版本。设备
- 免费版每个界面一次只能有一个活动会话,且没有分屏、宏、脚本或 expect 规则。Pro
- 没有额外按键行(ESC、TAB、Ctrl、F1 到 F12),输出中的文件路径也无法打开。尚未提供
- 配置文件不会被保存,其大部分字段不会生效;录制无法在应用内回放。尚未提供
- 环境变量、别名和任务列表由另一个 shell 读取,而不是你打开的会话。有意为之
- 在宽平板上停靠面板时,不显示工具菜单(及其音量键开关)。设备
- 分享你的开发服务器 的链接是临时的,并且需要网络连接。第三方
常见问题
基础 shell
当 本地 Shell 卡片还找不到 BusyBox 的 ash 时,会显示 基础 shell。BusyBox 在你第一次打开 shell 时链接,应用更新后会再次链接,所以先打开一次本地 shell 再回来:此时它应该显示 Busybox 工具就绪。在此之前,你使用的是 Android 自带的 sh,它缺少 awk 和 tar 之类的 applet。
Terminal Pro
你请求了免费版不包含的功能:第二个会话、分屏、保存键盘宏、快捷脚本或 Expect 规则,添加第 11 条自己的片段,或在 SSH 上添加第二个已保存的主机或端口转发。继续使用基础版 会关闭这个提示;解锁 Terminal Pro 会打开付费墙。
代码片段里的 + 会打开 Terminal Pro
你已经有 10 条自己的片段,这是免费版的上限;98 条内置片段不计入。删除一条来腾出位置,或解锁 Terminal Pro。你仍然可以点按任何内置片段来使用它。
此处没有 Git 仓库
Git 面板会从文件管理器当前所在的文件夹向上查找 .git 文件夹,或从你的项目文件夹查找。请在你的项目文件夹中打开文件管理器,或点按 初始化仓库。
没有收到解释。请在设置中确认已连接 AI 服务商后重试。
用 AI 解释 需要一个带有密钥或登录的服务商。请在 AI 设置中连接一个,然后重试。它也会在 60 秒后放弃。
未能生成片段 — 请换个说法再试
用 AI 生成 期望你用一句话提出一个请求,并回复名称、一行命令和描述。请说明你想做什么,而不是你设想中的命令。
目前没有运行中的开发服务器。请先打开一个项目。
分享你的开发服务器 分享的是你的项目所启动的开发服务器。请先从项目中启动服务器;之后该页面会显示它的端口。
该命令读取凭据并向外发送数据
你即将运行的命令会触及凭据存储,并且还会把数据发送到网络。如果你是从别处复制的,请先阅读,再点按 仍然运行。
复制到剪贴板?
会话中的某个程序请求把文本放到你的剪贴板上。只有在你自己请求时,才点按 复制。
打开 shell 或连接主机后才能录制
录制 录制的是当前聚焦的标签页。请先打开本地 shell,再开始录制。
无法附加文件 / 无法准备日志以供分享
文件无法复制到会话中,或日志无法解密用于分享。请重试;如果仍然失败,请换一个文件,或停止并重新开始记录。
没有「用 AI 解释」按钮
该按钮只在最新输出看起来像失败时出现。请再次运行失败的命令,或者从最近一次失败的输出中阅读解释。
我的别名或变量在新 shell 里不见了
你从这些页面创建的别名和变量只存在于那个会话中;PocketCode 每次启动都会恢复 .ashrc。请把反复使用的命令放进快捷脚本(Pro)或代码片段里。