仅 205KB 的 Linux 模拟神器——Termux
本文最近更新于 2019 年 10 月 15 日「 星期二 」
Termux 是一个基于 Android 平台的 Linux 模拟器。是一个安装包仅 205KB [V0.75]的普通的手机 App,可以直接从应用商店下载安装,支持免 root 运行,安装好后无需特别设置,打开即用。
下载地址
- F-Droid: f-droid.org/en/packages/com.termux/
- Google Play: play.google.com/store/apps/details?id=com.termux
应用截图
(以下截图来自官网)
相关网站
- 官网:termux.com
- GitHub: github.com/termux/termux-app
基本操作
打开 Termux 是一个命令行界面:
- 长按屏幕将显示菜单项(包括复制、粘贴、更多),此时屏幕也会出现可选择的复制光标
- 从左向右滑动将显示隐藏式导航栏,可以新建、切换、重命名会话 session 和调用弹出输入法
另外,常用的手机输入法并没有功能键——无法输入 esc、ctrl、alt、tab…
Termux 提供的解决方案是:
- 音量 - 键模拟 ctrl,所以按下音量 - 键 + c 即等效于 ctrl+c
- 音量 + 键 + q 显示扩展键(也可以从左向右滑动,显示隐藏式导航栏,然后长按左下角的 KEYBOARD):esc、ctrl、alt、tab、-、/、|
有多种方式提高输入效率:
快速上手
其文件系统相对于安卓根目录的路径如下:
- 根目录为
/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 提供了特殊的环境变量 PREFIX
和 TMPPREFIX
。
和 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 了:
- 首先,通过
whoami
命令取得用户名4 - 输入
passwd
修改密码(passwd
命令可以通过pkg install termux-auth
安装) - 保持 Termux 和其他终端在同一网络
- 通过
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 等,也可以根据实际需求配置和运行相应的程序。
扩展阅读
-
一个输入法应用。提供一切需要的按键,帮助我们在 Android 上输入快捷键组合、特殊符号,提高 coding 和 cli 效率。下载地址 GitHub。 ↩
-
在电脑中使用浏览器连接 Termux,以支持在网页中使用 terminal。Jupyter Notebook 是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。附给初学者的 Jupyter Notebook 教程 ↩
-
参考 Termux 镜像使用帮助 ↩
-
Android 系统对每个应用都创建了一个用户便于控制权限,这些用户名大多是类似 u0_a123 的格式。 ↩
麦子(Jason),没做过英语老师的印象大使不是合格的通信工程师。
戳「这里」约。
最近更新
留言互动