Termux 详解—— Android 平台上完美移植的 Linux 工具集

最近换了新手机,系统是基于 Android Pie(即 Android 9)定制的 MIUI 10 。
Android 相对而言算得上是比较开放的平台,如此说来,不趁此机会乱搞一下难免有些说不过去。。。
额,新手机,刷机Root来一套有点舍不得,好在有 Termux 这个应用。来,耍一耍看上去能够彰显“硬核”范儿的东西。

一、简介

Termux 是 Android 平台上的一个终端模拟器,它将众多 Linux 上运行的软件和工具近乎完美的移植到了手机端。
无需任何复杂的安装和配置过程,软件装好以后即会自动配置一个基本的运行环境,用以执行一些常见的 Linux 命令。
最为关键的是,它还内置了功能健全的包管理工具,可以使用类似于 Ubuntu 系统的 apt (或 pkg)命令安装额外的软件包。

Termux 详解—— Android 平台上完美移植的 Linux 工具集_第1张图片
termux

之所以称它为“模拟器”而非“虚拟机”,是因为它并非像 PC 端的 VirtualBox 等虚拟机软件那样,在宿主机中虚拟出一个完全独立且完整的系统环境,而是类似于 Mingw 等软件,只是提供一个接口,以安装和运行面向新环境交叉编译后的程序。

也可以将此时的手机看作是安装了 Linux 系统的树莓派,可以像 PC 端系统那样运行各种类型的软件,只不过这些软件都是针对特定的 CPU 架构和硬件设备编译过的(交叉编译或者在树莓派系统中本地编译)。
需要注意的是,由于移动端和 PC 端硬件设备的巨大差异,加上 Android 内核和操作系统的限制,能够直接运行的程序毕竟是少数。不过我刚刚算了一下,实际上可直接安装运行的软件足足有 910 个!

Termux 详解—— Android 平台上完美移植的 Linux 工具集_第2张图片
apt list

二、软件包

前面提到的可供安装的近一千个(算上为数众多的基础工具、库文件和开发版软件包)程序和软件,数量虽然远不及桌面系统,面对日常使用、学习任务甚至很多高阶应用也已经算得上绰绰有余了。
举个例子来说,Termux 是可以直接安装配置 Python 编程环境的。想想 Python 社区里浩如烟海的第三方库,甚至还可以根据特定的需求自行编写程序源代码。这里面包含着无限的可能性。

当然这也只是 Python 罢了,那么 Perl、Ruby、Nodejs、Lua、C/C++、Golang、Rust……
我不会拿它去对标电脑上完备的系统环境,单说这种似乎无限的可能性,就已经很值得玩味了。

这里简单的列举下我所熟悉的部分软件:

  • 基础工具:apt、bash、busybox、dpkg、git、htop、make、zsh ……
  • 编程语言:binutils、clang、dart、erlang、golang、lua、nodejs、perl、php、python、ruby、rust ……
  • 服务器软件:apache2、lighttpd、nginx、openssh ……
  • 数据库软件:mariadb、memcached、mosquitto、postgresql、redis、sqlite ……
  • 文本工具和编辑器:emacs、gawk、nano、sed、vim ……
  • 媒体工具:ffmpeg、imagemagick、mpv、sox ……
  • 网络工具:curl、httping、nmap、wget ……
  • 游戏和娱乐:bastet、cmatrix、cowsay、fortune、moon-buggy、nsnake、sl ……

三、有趣的 Terminal 小命令

就先不说具体的环境搭建的步骤了,包含的东西很多,实际上跟电脑端的操作并没有太大的区别。
就简单列举一些我个人非常喜欢的好玩儿的小命令吧。

  • fortune:输出一段格言警句、名著节选或者小笑话等
  • cowsay:将输出的文字内容包含在由 ASCII 字符组成的动物形象的气泡内
  • lolcat:将苍白的输出文字变成绚丽的彩虹色

安装方法

  • fortune:$ apt install fortune
  • cowsay:$ apt install cowsay 或者 $ gem install cowsay
  • lolcat:$ gem install lolcat

其中 apt 版本的 cowsay 依赖 Perl ,安装包整个算起来有点大。所以我比较倾向于使用 gem 命令安装,即作为 Ruby 的第三方库。当然为了使用 gem 命令是要先安装好 Ruby 的:
$ apt install ruby

效果截图

Termux 详解—— Android 平台上完美移植的 Linux 工具集_第3张图片
fortune cowsay lolcat

虽然名字叫 cowsay ,但它所包含的动物形象事实上不只“牛”这一种。
可以使用 cowsay -l 命令列出所有可供选择的动物形象,并通过 cowsay -f animal_name 手动指定另一种动物。

Termux 详解—— Android 平台上完美移植的 Linux 工具集_第4张图片
cowsay -f

另外,其实 cowsay 的每个动物形象都是由对应的 cow 文件(基本就是 ASCII Art 形式的文本文件)定义的,可以自己扩充,篇幅有限不赘述。
类似的小玩意儿还有 sl(突突的小火车)、cmatrix(全屏滚动乱码),试试就知道了。

配置 ssh 服务

前面的截图,估计已经暴露了。。。
我是在电脑上截的图,但程序确实是在手机上运行的。只是在手机端 Termux 上安装了 SSH 服务,远程登录而已。步骤也非常简单:

  • 软件安装:$ apt install openssh
  • 设置远程登录密码:$ passwd
  • 电脑端登录:$ ssh phone_ip -p 8022

电脑上的 ssh 客户端可自行选择,尤其要注意,这里 SSH 服务监听的端口8022
呃,差点忘记了。远程连接之前,先在手机端运行下 sshd 命令启动 SSH 服务。。。

四、高端的命令行游戏

moon-buggy

moon-buggy 是一个非常“酷炫”的命令行版本的跑酷游戏。
虽说游戏界面完全由 ASCII 字符构成,它仍然具备了一个跑酷游戏必需的所有的基本要素。玩下就懂了,蛮神奇的。

Termux 详解—— Android 平台上完美移植的 Linux 工具集_第5张图片
moon-buggy GIF

玩儿到后面貌似还有迎面飞来的障碍物,还可以发射武器弹药?记不太清楚了。。。

nsnake

嗯,不多说了,看名字就知道,贪吃蛇。。。
初始的移动速度有点慢,建议在游戏选项里面改一下。


Termux 详解—— Android 平台上完美移植的 Linux 工具集_第6张图片
nsnake
bastet

就是大名鼎鼎的俄罗斯方块啦。看图:


Termux 详解—— Android 平台上完美移植的 Linux 工具集_第7张图片
bastet

五、oh-my-zsh

手机端输入命令总觉得有点别扭,可能还是不习惯吧。
这时候有个 oh-my-zsh 就显得很有必要了。反正我个人觉得挺好用的,尤其搭配上 zsh-completionszsh-autosuggestionszsh-syntax-highlighting 等插件。
可以对命令行中输入的命令进行语法高亮自动补全等,极大地提高了输入效率。

软件安装

  • oh-my-zsh
$ apt install zsh curl
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
  • zsh-autosuggestions
    $ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

  • zsh-completions
    $ git clone https://github.com/zsh-users/zsh-completions ~/.oh-my-zsh/custom/plugins/zsh-completions

  • zsh-syntax-highlighting
    $ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

软件配置
编辑 ~/.zshrc 文件,将上述插件添加到 plugins 项后面:

Termux 详解—— Android 平台上完美移植的 Linux 工具集_第8张图片
.zshrc

PS:Termux 貌似是没有默认 SHELL 的配置的,所以安装好 oh-my-zsh 以后,打开软件还是直接进入 Bash 界面。
我没有特别去找配置文件的位置,而是用了另外一种方案,,,手动输入 zsh 命令进入,或者,在 ~/.bashrc 文件中加入 zsh 一行内容。。。

六、访问手机文件及 Termux-Api

根据默认的 Android 系统的权限设定,Termux 是无法访问手机存储的。当然可以使用命令进行修改。
只需要输入 termux-setup-storage 命令,即会弹出授权窗口,允许即可。
该命令会在用户主目录下生成 storage 文件夹,里面即包含了到系统主要资源(如手机内存、外置存储卡、Downloads 文件夹、照片等)的链接。

Termux 详解—— Android 平台上完美移植的 Linux 工具集_第9张图片
storage

Termux-Api 是 Termux 软件的一个插件,需要安装额外的 APK 包。并且命令行中也需要使用 $ apt install termux-api 命令安装具体的工具。
它提供了一种以 API 的形式直接访问 Android 系统硬件和资源(如相机电池WiFi短信通讯录指纹GPS等)的途径。

Termux 详解—— Android 平台上完美移植的 Linux 工具集_第10张图片
Termux-Api

如获取电池状态和 WiFi 连接信息:


Termux 详解—— Android 平台上完美移植的 Linux 工具集_第11张图片
battery & wifi

这个感觉可以深挖,用好了可以达到曾经的安卓神器 Tasker 的效果。

今天也不早了,,,就先这样吧。熬,附个软件链接吧。。
Termux and Termux-Api 提取码:i37y
By the way,录了段蛮简陋的视频演示,额,第一次剪。。。

参考资料

Termux Wiki

你可能感兴趣的:(Termux 详解—— Android 平台上完美移植的 Linux 工具集)