Termux 快速上手
Termux 是一个终端仿真器应用,通过大量的移植到安卓系统上的命令行工具进行了增强。主要目标是为你的安卓手机提供操作Linux命令行般的体验,不需要Root和任何特殊设置。
工作原理
终端模拟器一般是通过调用 execve 来执行命令行程序,再把标准输入,输出和错误流显示到屏幕上。 安卓上大部分终端应用都只提供很少的工具,一般来自系统本身或者其它的Root工具。我们决定更进一步,移植GNU/Linux系统下的常见软件到Android系统上。 Termux即不是虚拟机也不是什么模拟环境。提供的所有包都是使用Android NDK交叉编译的。安卓系统并不提供完整的文件系统访问权限,因此Termux安装软件的时候不可以直接安装到标准目录/bin, /etc, /usr ,/var 等等。替代方案是将所有文件安装到Termux应用的私有目录下:
/data/data/com.termux/files/usr
我们称这个目录为"前缀",并且在Termux shell中存在"$PREFIX"环境变量指向这个目录。需要注意的是这个目录并不能转移到SD卡,原因如下:
- 文件系统必须支持unix权限系统和一些特殊文件,例如符号连接、sockets文件。
- 这个前缀在交叉编译时是被硬编码在生成的可执行文件中的。
除了前缀外,用户可以将文件存放至家目录,同样存在环境变量"$HOME",指向:
/data/data/com.termux/files/home
然而,Termux与传统Linux发型版的区别并不只有文件系统而已,更详细的信息请参阅:Termux 与 Linux 的区别。
Termux 可以做什么?
Termux 有许多用法:
- 使用 Python 处理数据。
- 在合适的开发环境中编程。
- 用定时工具下载和管理文件和页面。
- 学习Linux命令行的基础知识。
- 作为SSH客户端。
- 同步和备份文件。
用法不止以上这些。我们的存储库中有超过1000个包可用。如果没有想找的包,还可以自己来编译 - 我们有多种构建工具,包括编译器像C, C++, Go, Rust 等等。也可以使用NodeJS, Python, Ruby 等解释执行的语言。
Termux 并不是一个Root工具,不会提供Root权限,除非你的技术超强,足以破坏安卓系统的安全策略。
需要Root么?
Termux 主要面向非Root用户,所以通常不需要Root设备。 除非你有以下需求:
- 修改设备的固件。
- 控制操作系统或内核的参数。
- 以非交互方式安装或卸载应用。
- 得到对文件系统的完全读写权限。
- 直接访问硬件设备例如蓝牙、Wi-Fi模块或者串口通信。
- 通过chroot在Android上安装Linux发行版。
- 完全控制你的设备。
如果没有以上需求,尽量不要Root你的设备,Root的坏处一般大于好处。
小提示
- 学习shell脚本!
- 保持软件包最新! 按一定频率或者最少在安装新软件包之前运行一次
pkg upgrade
。不更新或降级使用有可能会产生一些不必要的问题。 - 永远不要忘记做备份!如果没有备份,一旦产生问题,你将无法回滚。开发人员尤其要注意备份项目使用到的编译器,解释器和依赖项,因为Termux并不提供旧版本的软件包。
- 不要运行未知的命令!从网络上下载的脚本要检查好再运行。
- 仔细阅读所有的输出内容!阅读提示信息有助于解决可能出现的问题。
命令和shell脚本
了解命令并学习如何高效使用终端。
- https://linuxjourney.com/
- http://mywiki.wooledge.org/BashGuide
- https://www.tldp.org/LDP/Bash-Beginners-Guide/html/
下面的链接可能更适合高级用户:
在运行以上教程中的例子时请注意:Termux并不是一个Linux发行版。由于某些路径不存在和Linux命令在Termux发行版中的其他差异,导致某些命令不能正确执行,例如: ls /home
如何对Termux项目作出贡献?
最好的方式是:
- 完善Termux官方Wiki。
- 提交bug。
- 提交软件包更新。
- 帮助修复bug或改进并提交源代码。
Termux 的所有的源代码都可在Github找到: https://github.com/termux