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

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

一、简介

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

termux

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

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

apt list

二、软件包

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

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

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

  • 基础工具: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

效果截图

fortune cowsay lolcat

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

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 字符构成,它仍然具备了一个跑酷游戏必需的所有的基本要素。玩下就懂了,蛮神奇的。

moon-buggy GIF

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

nsnake

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


nsnake
bastet

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


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 项后面:

.zshrc

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

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

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

storage

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

Termux-Api

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


battery & wifi

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

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

参考资料

Termux Wiki

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容