pkg 命令搜索、安装、卸载软件包,安装 10+ 常用终端工具,理解 Termux 的 $PREFIX 与 $HOME 目录结构;熟练使用 ls/cp/mv/rm 等文件操作命令,理解管道与重定向的组合威力,配置 ~/.bashrc 个性化环境,用 grep 和 find 精准搜索文件内容,并编写你的第一个 bash 脚本。上一篇文章中你已经完成了 Termux 安装和换源,现在该往这个空荡荡的终端里装东西了。Termux 用的是自己的包管理器 pkg,它是 apt 的简化封装,命令更短、更好记。把 pkg 想象成手机上的应用商店,只不过你用文字而不是手指来操作。
最常用的命令,没有之一。一次可以装多个包:
执行后会看到下载进度条和解包信息。如果遇到 E: Unable to locate package 错误,说明你的源没更新,先跑一遍 pkg update。
不确定包名时用搜索。比如想找一个截图工具:
会列出所有名字或描述里含 "screenshot" 的包。注意搜索结果中的包名是 包名/版本号 格式,斜杠前面才是你要填给 pkg install 的名字。
卸载时加 -y 跳过确认:
列出当前已安装的所有包,配合 grep 可以快速筛选:
这条命令的输出类似 python/3.12.3-1 aarch64,包含包名、版本号和 CPU 架构。管道符 | 的用法后文会详细讲。
update 刷新软件源索引(不装东西),upgrade 升级所有已安装的包到最新版。养成定期跑的习惯:
pkg 底层调用的还是 apt,所以 apt install、apt search 等命令也能用,只是 pkg 更短,适合手机键盘输入。两者效果完全相同。| 命令 | 作用 | 示例 |
|---|---|---|
pkg install |
安装软件包 | pkg install python |
pkg search |
搜索软件包 | pkg search nginx |
pkg uninstall |
卸载软件包 | pkg uninstall tree |
pkg list-installed |
列出已装包 | pkg list-installed |
pkg update |
刷新源索引 | pkg update |
pkg upgrade |
升级所有包 | pkg upgrade -y |
刚装好的 Termux 是个毛坯房,连 tree 命令都没有。下面这批工具是后续所有操作的标配,一次性装齐:
每个包的作用:
coreutils:核心工具包,含 ls、cp、mv、rm、cat、head、tail 等基础命令
findutils:提供 find、xargs 等文件查找工具
grep:文本搜索,后续找代码全靠它
sed + awk:流式文本编辑和数据处理,Linux 三剑客之二
tree:以树形结构显示目录,比 ls 更直观
unzip + zip + tar:压缩解压三件套
less:分页查看长文本,比 cat 更适合阅读大文件
安装完后验证一下 tree 是否就绪:
pip install httpie(Python 包)或 pkg install curl(替代方案)。并非所有桌面 Linux 的包名都能在 Termux 中找到,遇到找不到时先 pkg search 搜一下。
你现在已经能装软件了,但要知道 Termux 的文件系统跟桌面 Linux 有一个关键差异:它不是从根目录 / 开始的。因为 Android 不给 App 访问系统根目录的权限,Termux 在 /data/data/com.termux/files/ 下建了自己的迷你 Linux 目录树。
Termux 把它的整个系统装在一个叫 $PREFIX 的路径下。输入以下命令查看它的实际值:
这个路径等价于桌面 Linux 的 /usr,下面装了所有软件包的文件。关键子目录:
$PREFIX/bin:可执行文件,你安装的命令都在这里
$PREFIX/etc:配置文件,如 apt/sources.list(软件源列表)
$PREFIX/lib:库文件,Python 包的 .so 文件在这
$PREFIX/share:共享数据,如 man 手册、bash 补全脚本
$PREFIX/tmp:临时文件,重启后可能被清理
Termux 启动时默认在 $HOME 目录,它的实际路径是:
$HOME 就是你在这个手机 Linux 里的家,你的代码项目、配置文件、SSH 密钥都会放在这里。用 cd ~ 可以随时回到这里(~ 是 $HOME 的简写)。
上一篇你执行过 termux-setup-storage,它在 $HOME 下创建了一组符号链接,指向手机的共享存储:
这意味着你在 Termux 里 cp ~/storage/downloads/report.txt . 就能把手机下载目录的文件拷贝到工作区。后文会详细讲文件操作命令,这里先记住这条路径。
echo $PREFIX 和 echo $HOME 随时查看这两个路径。写脚本时用变量名 $PREFIX 而非硬编码路径,这样脚本在任何设备上都能跑。把前面学到的命令串起来,完整地审视你的 Termux 环境。依次执行以下命令:
第 2 行的 wc -l 是统计行数命令,配合管道符 | 把 pkg list-installed 的输出行数出来。刚装好的 Termux 大约有 60-80 个包,装完上面的工具后会到 90+ 。
如果 ls ~/storage/downloads 能列出你手机下载目录的文件,说明存储权限配置成功,后面传文件就畅通无阻了。如果报 No such file or directory,回到 01 篇执行 termux-setup-storage 并授权。
前面你已经装好了 coreutils,里面的命令就是你接下来每天都要用的。把这批命令分成三组来记:看文件、动文件、读文件。
pwd 告诉你现在在哪,ls -lah 列出当前目录的详细内容,cd 切换目录。手机屏幕小,-h 参数让文件大小显示为 KB/MB 而非原始字节数,阅读更友好。
ls 确认路径,或用 echo rm -rf ~/tmp/* 预览将要执行的命令。rm -rf 没有回收站,删了就是删了。
cat 适合看短文件,less 适合看长文件(支持上下翻页和搜索),head/tail 只看开头或结尾几行。在 Termux 软键盘上,less 中的 q 退出键需要先按 Termux 的 Esc 键再按 q。
单个命令的力量有限,真正让 Shell 强大的是把多个命令串起来。管道和重定向就是做这件事的胶水。把命令想象成工厂流水线上的工位,管道负责把上一个工位的成品传给下一个工位,重定向负责把产品存进仓库。
数据流向:ls -la ~/ 列出家目录所有文件 → 管道 | 把输出交给 grep → grep ".bashrc" 从中筛出含 ".bashrc" 的行。管道可以连续串联多个命令。
| 符号 | 作用 | 文件不存在时 | 文件已存在时 |
|---|---|---|---|
> |
覆盖写入 | 创建新文件 | 清空后重写 |
>> |
追加写入 | 创建新文件 | 末尾添加 |
< |
从文件读取输入 | 报错 | — |
管道和重定向可以自由组合,这是终端效率的核心:
环境变量是 Shell 的全局配置,它们决定了终端的行为方式。你之前用过的 $PREFIX 和 $HOME 就是两个环境变量。现在来学习如何查看和自定义它们。
PATH 是最重要的环境变量。当你在终端输入 python 时,Shell 会按 PATH 中列出的目录顺序去查找 python 这个可执行文件。如果某个目录不在 PATH 里,那里的程序就不能直接用名字调用。
比如你自己在 ~/bin/ 下放了一个脚本 mytool.sh,不把 ~/bin/ 加进 PATH 的话,就得每次写完整路径 ~/bin/mytool.sh 才能运行。
在终端里直接执行 export PATH=$PATH:~/bin 只对当前会话生效,关掉 Termux 再开就没了。要永久生效,需要写进 ~/.bashrc:
~/.bashrc 在每次打开新终端会话时自动执行。~/.profile 则在登录时执行。在 Termux 中两者效果基本相同,通常改 ~/.bashrc 即可。修改后用 source ~/.bashrc 立即生效,不用关掉重开。文件多了之后,你面临两个问题:一是在文件内容里找关键词,二是在一堆文件里找某个文件。grep 解决第一个,find 解决第二个。这两个命令是 Linux 终端使用频率最高的工具之一。
grep -rn 是最常用的组合:-r 递归搜索子目录,-n 在结果前显示行号。输出格式为 文件路径:行号:匹配行内容,方便你快速定位。
grep -rn "关键词" 目录/,一条命令搞定。find 更适合按文件名、类型、时间等属性找文件本身。把本篇学到的所有知识综合起来,编写一个 bash 脚本:接收一个目录路径,统计其中各类型文件的数量并输出报告。这个脚本用到了变量、管道、重定向、grep、find 等全部知识点。
保存为 ~/filestats.sh,然后运行:
脚本核心逻辑拆解:第 15 行是最精华的一行管道串联——find 找所有文件 → sed 提取扩展名 → sort 排序 → uniq -c 去重计数 → sort -rn 按数量降序 → head -10 只取前 10 名。六个命令用管道串成一条数据流水线。
pkg search 搜索 "man" 关键词,找到手册页工具的包名,用 pkg install 安装它。安装后运行 man ls 查看手册。再在 ~/.bashrc 中添加别名 alias p="pkg",source 生效后验证 p list-installed 是否正常工作。man,执行 pkg install man;然后 echo 'alias p="pkg"' >> ~/.bashrc && source ~/.bashrc;执行 p list-installed 确认输出正常。
$PREFIX/bin 目录下最大的 3 个文件,并将结果保存到 ~/top3-bin.txt。再用 pkg list-installed 配合 grep 筛选出所有名字包含 "python" 的已安装包,用 wc -l 统计有多少个。提示:需要用到 ls -lS(按大小降序)、head 和 >。ls -lS $PREFIX/bin/ | head -4 > ~/top3-bin.txt(head -4 因为第一行是 total 汇总行);pkg list-installed | grep python | wc -l,预期输出 3-5 个。
filestats.sh 脚本,增加一个功能:除了按扩展名统计外,再统计总文件大小(用 du 或 find ... -exec stat),并计算每个扩展名的平均文件大小。提示:可以用 awk 做数学运算,也可以用 bash 的算术扩展 $((...))。