本文最近更新于 2019 年 10 月 15 日「 星期二 」

Termux 是一个基于 Android 平台的 Linux 模拟器。是一个安装包仅 205KB [V0.75]的普通的手机 App,可以直接从应用商店下载安装,支持免 root 运行,安装好后无需特别设置,打开即用。

下载地址

应用截图

(以下截图来自官网)

相关网站

基本操作

打开 Termux 是一个命令行界面:

  • 长按屏幕将显示菜单项(包括复制、粘贴、更多),此时屏幕也会出现可选择的复制光标
  • 从左向右滑动将显示隐藏式导航栏,可以新建、切换、重命名会话 session 和调用弹出输入法

另外,常用的手机输入法并没有功能键——无法输入 escctrlalttab

Termux 提供的解决方案是:

  • 音量 - 键模拟 ctrl,所以按下音量 - 键 + c 即等效于 ctrl+c
  • 音量 + 键 + q 显示扩展键(也可以从左向右滑动,显示隐藏式导航栏,然后长按左下角的 KEYBOARD):escctrlalttab-/|

有多种方式提高输入效率:

  • 蓝牙键盘
  • Hacker’s Keyboard1
  • 在电脑中使用 SSH 接入 Termux
  • Jupyter Notebook2

快速上手

其文件系统相对于安卓根目录的路径如下:

  • 根目录为 /data/data/com.termux/files/
1 $ cd /
2 $ pwd
  • 其用户 HOME 目录在 /data/data/com.termux/files/home/
1 $ echo $HOME
  • Linux 的 /bin/etc 等目录在 /data/data/com.termux/files/usr/
1 $ echo $PREFIX

熟悉 Linux 的朋友可能会发现,这个 HOME 路径看上去不太一样。另外为了方便,Termux 提供了特殊的环境变量 PREFIXTMPPREFIX

和 Linux 类似,Termux 有自己的软件源,可通过 cat $PREFIX/etc/apt/sources.list 查看。

1 $ cat $PREFIX/etc/apt/sources.list
2 # The main termux repository:
3 deb https://dl.bintray.com/termux/termux-packages-24 stable main

「可选操作」使用如下命令自动替换官方源为清华大学 TUNA 镜像源3

1 sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux stable main@' $PREFIX/etc/apt/sources.list
2 apt update && apt upgrade

这样就将 Termux 的软件源切换到了清华大学镜像.

1 $ sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux stable main@' $PREFIX/etc/apt/sources.list
2 $ cat $PREFIX/etc/apt/sources.list
3 # The main termux repository:
4 #deb https://dl.bintray.com/termux/termux-packages-24 stable main
5 deb https://mirrors.tuna.tsinghua.edu.cn/termux stable main
6 $

之后可以继续安装软件,例如:

1 apt install vim
2 apt install git
3 apt install wget
4 apt install curl
5 apt install openssh

需要说明的是 Termux 除了支持 apt 命令外,还在此基础上封装了 pkg 命令,例如:

 1 pkg search <query> # 搜索包
 2 pkg install <package> # 安装包
 3 pkg uninstall <package> # 卸载包
 4 pkg reinstall <package> # 重新安装包
 5 pkg update # 更新源
 6 pkg upgrade # 升级软件包
 7 pkg list-all # 列出可供安装的所有包
 8 pkg list-installed # 列出已经安装的包
 9 pkg shoe <package> # 显示某个包的详细信息
10 pkg files <package> # 显示某个包的相关文件夹路径

提升效率

SSH 接入 Termux

由于 sshd 是包含在 openssh 包中的,因此我们首先需要在 Termux 中安装 openssh:

1 pkg install openssh

安装好之后,我们需要通过 sshd 命令手工启动 sshd。

可以使用下面命令来验证 SSH 服务是否开启(需要指出的是,sshd 监听的是 8022 端口而不是 22 号端口):

1 ssh localhost -p 8022

如果 SSH 服务有问题,可以检查 sshd 日志,在 Termux 上执行:

1 logcat -s 'syslog:*' 

确保 SSH 服务正常后,接下来就可以准备在 PC 等其他终端上面登陆 Termux 了:

  1. 首先,通过 whoami 命令取得用户名4
  2. 输入 passwd 修改密码(passwd 命令可以通过 pkg install termux-auth 安装)
  3. 保持 Termux 和其他终端在同一网络
  4. 通过 ifconfig 查看手机的 IP(ifconfig 命令可以通过安装 net-tools 包取得:apt install net-tools

在其他终端输入如下命令:

1 ssh <username>@<IP> -p 8022

出现如下显示即登陆成功。

 1 $ ssh ***@192.168.xxx.xxx -p 8022
 2 ***@192.168.xxx.xxx's password:
 3 
 4 Welcome to Termux!
 5 
 6 Wiki:            https://wiki.termux.com
 7 Community forum: https://termux.com/community
 8 Gitter chat:     https://gitter.im/termux/termux
 9 IRC channel:     #termux on freenode
10 
11 Working with packages:
12 
13  * Search packages:   pkg search <query>
14  * Install a package: pkg install <package>
15  * Upgrade packages:  pkg upgrade
16 
17 Subscribing to additional repositories:
18 
19  * Root:     pkg install root-repo
20  * Unstable: pkg install unstable-repo
21  * X11:      pkg install x11-repo
22 
23 Report issues at https://termux.com/issues
24 
25 $

当然也可以通过密钥的方式接入 Termux,具体方法可以搜索“SSH 密钥认证”。

Jupyter Notebook 接入 Termux

通过 ifconfig 查看手机的 IP 地址备用。

安装 Jupyter Notebook:

1 apt install clang python python-dev fftw libzmq libzmq-dev freetype freetype-dev libpng libpng-dev pkg-config
2 pip install jupyter
3 jupyter notebook --ip=0.0.0.0

根据上面命令的输出,在 PC 等终端浏览器中输入 <手机 IP>:<port>,接下来会要求输入 token,token 在 Jupyter Notebook 运行起来后的输出中可以得到。

输入 token 后,即可使用浏览器来访问 Termux,选择 Terminal 进入 Termux 的 terminal 界面,和通过 SSH 进入几乎一样。

扩展阅读:

管理员身份

Termux 支持 root 和未 root 设备使用。

手机无 root 权限

利用 proot 工具来模拟某些需要 root 权限的环境,通过以下命令安装 proot:

1 pkg install proot

然后终端下面输入:

1 termux-chroot

即可模拟 root 环境。在该环境下,相当于进入了 home 目录,可以很方便地进行一些配置。输入 exit 可退回到普通用户身份。

手机已取得 root 权限

安装 tsu(一个 su 的 Termux 版本),用于在 Termux 上代替 su:

1 pkg install tsu

然后终端下面输入 tsu 即可切换 root 用户,这时会弹出 root 授权提示,正常授予即可。同样,在管理员身份下,输入 exit 可退回到普通用户身份。

应用实例

分享一些 Termux 的使用案例,供参考。

创建软链接

通过“软链接”提升操作和使用效率。例如:

1 $ pwd
2 /data/data/com.termux/files/home
3 $
4 $ ln -s /storage/emulated/0/ storage
5 $ ls -l
6 total 0
7 lrwxrwxrwx 1 root root 20 Oct 15 10:42 storage -> /storage/emulated/0/
8 $

Termux:API

Termux:API 用于访问手机硬件,实现更多的可玩性,例如可以实现如下功能:

  • 访问电池信息
  • 获取相机设备信息
  • 获取本机设备信息
  • 获取设置剪贴板信息
  • 获取通讯录信息
  • 获取设置手机短信
  • 拨打号码
  • 振动设备
  • 等等

需要安装 Termux:API,下载地址:Google Play

安装 Termux:API 应用后,Termux 里面必须安装对应的包才可以调用手机 API。

1 pkg install termux-api

例如:

 1 termux-battery-status # 获取电池信息
 2 termux-camera-info # 获取相机信息
 3 termux-clipboard-get # 查看当前剪贴板内容
 4 termux-clipboard-set cn.apkjam.com # 设置新的剪贴板内容
 5 termux-contact-list # 获取通讯录列表
 6 termux-sms-inbox # 查看短信内容列表
 7 termux-sms-send # 发送短信
 8 termux-sms-send -n number(s)  recipient number(s) - separate multiple numbers by commas # 支持同时发送多个号码,实现群发的效果
 9 termux-telephony-call # 拨打电话
10 termux-wifi-connectioninfo # 获取当前 WiFi 连接信息
11 termux-wifi-scaninfo # 获取最近一次 WiFi 扫描信息

想要获取更多关于 Termux:API 介绍,可参考 Termux:API

内网穿透

借助 ngrok 或者 frp 可以将通过 Termux 搭建的网站映射到外网。

环境搭建

在 Termux 中可以很方便地安装 Ruby、Python、Go、Node.js 等,也可以根据实际需求配置和运行相应的程序。

扩展阅读

  1. 一个输入法应用。提供一切需要的按键,帮助我们在 Android 上输入快捷键组合、特殊符号,提高 coding 和 cli 效率。下载地址 GitHub

  2. 在电脑中使用浏览器连接 Termux,以支持在网页中使用 terminal。Jupyter Notebook 是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。附给初学者的 Jupyter Notebook 教程

  3. 参考 Termux 镜像使用帮助

  4. Android 系统对每个应用都创建了一个用户便于控制权限,这些用户名大多是类似 u0_a123 的格式。