Termux 詳解—— Android 平臺(tái)上完美移植的 Linux 工具集

最近換了新手機(jī),系統(tǒng)是基于 Android Pie(即 Android 9)定制的 MIUI 10
Android 相對(duì)而言算得上是比較開放的平臺(tái),如此說(shuō)來(lái)产上,不趁此機(jī)會(huì)亂搞一下難免有些說(shuō)不過(guò)去。蛾狗。晋涣。
額,新手機(jī)沉桌,刷機(jī)Root來(lái)一套有點(diǎn)舍不得谢鹊,好在有 Termux 這個(gè)應(yīng)用算吩。來(lái),耍一似埠兀看上去能夠彰顯“硬核”范兒的東西赌莺。

一、簡(jiǎn)介

Termux 是 Android 平臺(tái)上的一個(gè)終端模擬器松嘶,它將眾多 Linux 上運(yùn)行的軟件和工具近乎完美的移植到了手機(jī)端艘狭。
無(wú)需任何復(fù)雜的安裝和配置過(guò)程,軟件裝好以后即會(huì)自動(dòng)配置一個(gè)基本的運(yùn)行環(huán)境翠订,用以執(zhí)行一些常見的 Linux 命令巢音。
最為關(guān)鍵的是,它還內(nèi)置了功能健全的包管理工具尽超,可以使用類似于 Ubuntu 系統(tǒng)的 apt (或 pkg)命令安裝額外的軟件包官撼。

termux

之所以稱它為“模擬器”而非“虛擬機(jī)”,是因?yàn)樗⒎窍?PC 端的 VirtualBox 等虛擬機(jī)軟件那樣似谁,在宿主機(jī)中虛擬出一個(gè)完全獨(dú)立且完整的系統(tǒng)環(huán)境傲绣,而是類似于 Mingw 等軟件,只是提供一個(gè)接口巩踏,以安裝和運(yùn)行面向新環(huán)境交叉編譯后的程序秃诵。

也可以將此時(shí)的手機(jī)看作是安裝了 Linux 系統(tǒng)的樹莓派,可以像 PC 端系統(tǒng)那樣運(yùn)行各種類型的軟件塞琼,只不過(guò)這些軟件都是針對(duì)特定的 CPU 架構(gòu)和硬件設(shè)備編譯過(guò)的(交叉編譯或者在樹莓派系統(tǒng)中本地編譯)菠净。
需要注意的是,由于移動(dòng)端和 PC 端硬件設(shè)備的巨大差異彪杉,加上 Android 內(nèi)核和操作系統(tǒng)的限制毅往,能夠直接運(yùn)行的程序畢竟是少數(shù)。不過(guò)我剛剛算了一下派近,實(shí)際上可直接安裝運(yùn)行的軟件足足有 910 個(gè)攀唯!

apt list

二、軟件包

前面提到的可供安裝的近一千個(gè)(算上為數(shù)眾多的基礎(chǔ)工具渴丸、庫(kù)文件和開發(fā)版軟件包)程序和軟件革答,數(shù)量雖然遠(yuǎn)不及桌面系統(tǒng),面對(duì)日常使用曙强、學(xué)習(xí)任務(wù)甚至很多高階應(yīng)用也已經(jīng)算得上綽綽有余了。
舉個(gè)例子來(lái)說(shuō)途茫,Termux 是可以直接安裝配置 Python 編程環(huán)境的碟嘴。想想 Python 社區(qū)里浩如煙海的第三方庫(kù),甚至還可以根據(jù)特定的需求自行編寫程序源代碼囊卜。這里面包含著無(wú)限的可能性娜扇。

當(dāng)然這也只是 Python 罷了错沃,那么 PerlRuby雀瓢、Nodejs枢析、Lua、C/C++刃麸、Golang醒叁、Rust……
我不會(huì)拿它去對(duì)標(biāo)電腦上完備的系統(tǒng)環(huán)境,單說(shuō)這種似乎無(wú)限的可能性泊业,就已經(jīng)很值得玩味了把沼。

這里簡(jiǎn)單的列舉下我所熟悉的部分軟件:

  • 基礎(chǔ)工具:apt、bash吁伺、busybox饮睬、dpkg、git篮奄、htop则吟、make、zsh ……
  • 編程語(yǔ)言:binutils狞玛、clang未妹、dart、erlang间校、golang矾克、lua、nodejs憔足、perl胁附、php、python滓彰、ruby控妻、rust ……
  • 服務(wù)器軟件:apache2、lighttpd揭绑、nginx弓候、openssh ……
  • 數(shù)據(jù)庫(kù)軟件:mariadb、memcached他匪、mosquitto菇存、postgresql、redis邦蜜、sqlite ……
  • 文本工具和編輯器:emacs依鸥、gawk、nano悼沈、sed贱迟、vim ……
  • 媒體工具:ffmpeg姐扮、imagemagick、mpv衣吠、sox ……
  • 網(wǎng)絡(luò)工具:curl茶敏、httping、nmap缚俏、wget ……
  • 游戲和娛樂:bastet惊搏、cmatrix、cowsay袍榆、fortune胀屿、moon-buggy、nsnake包雀、sl ……

三宿崭、有趣的 Terminal 小命令

就先不說(shuō)具體的環(huán)境搭建的步驟了,包含的東西很多才写,實(shí)際上跟電腦端的操作并沒有太大的區(qū)別葡兑。
就簡(jiǎn)單列舉一些我個(gè)人非常喜歡的好玩兒的小命令吧。

  • fortune:輸出一段格言警句赞草、名著節(jié)選或者小笑話等
  • cowsay:將輸出的文字內(nèi)容包含在由 ASCII 字符組成的動(dòng)物形象的氣泡內(nèi)
  • lolcat:將蒼白的輸出文字變成絢麗的彩虹色

安裝方法

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

其中 apt 版本的 cowsay 依賴 Perl 讹堤,安裝包整個(gè)算起來(lái)有點(diǎn)大。所以我比較傾向于使用 gem 命令安裝厨疙,即作為 Ruby 的第三方庫(kù)洲守。當(dāng)然為了使用 gem 命令是要先安裝好 Ruby 的:
$ apt install ruby

效果截圖

fortune cowsay lolcat

雖然名字叫 cowsay ,但它所包含的動(dòng)物形象事實(shí)上不只“耪雌啵”這一種梗醇。
可以使用 cowsay -l 命令列出所有可供選擇的動(dòng)物形象,并通過(guò) cowsay -f animal_name 手動(dòng)指定另一種動(dòng)物撒蟀。

cowsay -f

另外叙谨,其實(shí) cowsay 的每個(gè)動(dòng)物形象都是由對(duì)應(yīng)的 cow 文件(基本就是 ASCII Art 形式的文本文件)定義的,可以自己擴(kuò)充保屯,篇幅有限不贅述手负。
類似的小玩意兒還有 sl(突突的小火車)、cmatrix(全屏滾動(dòng)亂碼)姑尺,試試就知道了竟终。

配置 ssh 服務(wù)

前面的截圖,估計(jì)已經(jīng)暴露了切蟋。衡楞。。
我是在電腦上截的圖,但程序確實(shí)是在手機(jī)上運(yùn)行的瘾境。只是在手機(jī)端 Termux 上安裝了 SSH 服務(wù),遠(yuǎn)程登錄而已镰惦。步驟也非常簡(jiǎn)單:

  • 軟件安裝:$ apt install openssh
  • 設(shè)置遠(yuǎn)程登錄密碼:$ passwd
  • 電腦端登錄:$ ssh phone_ip -p 8022

電腦上的 ssh 客戶端可自行選擇迷守,尤其要注意,這里 SSH 服務(wù)監(jiān)聽的端口8022 旺入。
呃兑凿,差點(diǎn)忘記了。遠(yuǎn)程連接之前茵瘾,先在手機(jī)端運(yùn)行下 sshd 命令啟動(dòng) SSH 服務(wù)礼华。。拗秘。

四圣絮、高端的命令行游戲

moon-buggy

moon-buggy 是一個(gè)非常“酷炫”的命令行版本的跑酷游戲雕旨。
雖說(shuō)游戲界面完全由 ASCII 字符構(gòu)成扮匠,它仍然具備了一個(gè)跑酷游戲必需的所有的基本要素。玩下就懂了凡涩,蠻神奇的棒搜。

moon-buggy GIF

玩兒到后面貌似還有迎面飛來(lái)的障礙物,還可以發(fā)射武器彈藥活箕?記不太清楚了力麸。。育韩。

nsnake

嗯克蚂,不多說(shuō)了,看名字就知道座慰,貪吃蛇陨舱。。版仔。
初始的移動(dòng)速度有點(diǎn)慢游盲,建議在游戲選項(xiàng)里面改一下。


nsnake
bastet

就是大名鼎鼎的俄羅斯方塊啦蛮粮∫娑校看圖:


bastet

五、oh-my-zsh

手機(jī)端輸入命令總覺得有點(diǎn)別扭然想,可能還是不習(xí)慣吧莺奔。
這時(shí)候有個(gè) oh-my-zsh 就顯得很有必要了。反正我個(gè)人覺得挺好用的变泄,尤其搭配上 zsh-completions令哟、zsh-autosuggestions恼琼、zsh-syntax-highlighting 等插件。
可以對(duì)命令行中輸入的命令進(jìn)行語(yǔ)法高亮屏富、自動(dòng)補(bǔ)全等晴竞,極大地提高了輸入效率。

軟件安裝

  • 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 項(xiàng)后面:

.zshrc

PS:Termux 貌似是沒有默認(rèn) SHELL 的配置的噩死,所以安裝好 oh-my-zsh 以后,打開軟件還是直接進(jìn)入 Bash 界面神年。
我沒有特別去找配置文件的位置已维,而是用了另外一種方案,已日,垛耳,手動(dòng)輸入 zsh 命令進(jìn)入,或者捂敌,在 ~/.bashrc 文件中加入 zsh 一行內(nèi)容艾扮。。占婉。

六泡嘴、訪問(wèn)手機(jī)文件及 Termux-Api

根據(jù)默認(rèn)的 Android 系統(tǒng)的權(quán)限設(shè)定,Termux 是無(wú)法訪問(wèn)手機(jī)存儲(chǔ)的逆济。當(dāng)然可以使用命令進(jìn)行修改酌予。
只需要輸入 termux-setup-storage 命令,即會(huì)彈出授權(quán)窗口奖慌,允許即可抛虫。
該命令會(huì)在用戶主目錄下生成 storage 文件夾,里面即包含了到系統(tǒng)主要資源(如手機(jī)內(nèi)存简僧、外置存儲(chǔ)卡建椰、Downloads 文件夾、照片等)的鏈接岛马。

storage

Termux-Api 是 Termux 軟件的一個(gè)插件棉姐,需要安裝額外的 APK 包。并且命令行中也需要使用 $ apt install termux-api 命令安裝具體的工具啦逆。
它提供了一種以 API 的形式直接訪問(wèn) Android 系統(tǒng)硬件和資源(如相機(jī)伞矩、電池WiFi夏志、短信乃坤、通訊錄指紋GPS等)的途徑湿诊。

Termux-Api

如獲取電池狀態(tài)和 WiFi 連接信息:


battery & wifi

這個(gè)感覺可以深挖狱杰,用好了可以達(dá)到曾經(jīng)的安卓神器 Tasker 的效果。

今天也不早了厅须,浦旱,,就先這樣吧九杂。熬,附個(gè)軟件鏈接吧宣蠕。例隆。
Termux and Termux-Api 提取碼:i37y
By the way,錄了段蠻簡(jiǎn)陋的視頻演示抢蚀,額镀层,第一次剪。皿曲。唱逢。

參考資料

Termux Wiki

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市屋休,隨后出現(xiàn)的幾起案子坞古,更是在濱河造成了極大的恐慌,老刑警劉巖劫樟,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痪枫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡叠艳,警方通過(guò)查閱死者的電腦和手機(jī)奶陈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)附较,“玉大人吃粒,你說(shuō)我怎么就攤上這事【芸危” “怎么了徐勃?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)捕发。 經(jīng)常有香客問(wèn)我疏旨,道長(zhǎng),這世上最難降的妖魔是什么扎酷? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任檐涝,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谁榜。我一直安慰自己幅聘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布窃植。 她就那樣靜靜地躺著帝蒿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪巷怜。 梳的紋絲不亂的頭發(fā)上葛超,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音延塑,去河邊找鬼绣张。 笑死,一個(gè)胖子當(dāng)著我的面吹牛关带,可吹牛的內(nèi)容都是我干的侥涵。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼宋雏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芜飘!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起磨总,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嗦明,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后舍败,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體招狸,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年邻薯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了裙戏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡厕诡,死狀恐怖累榜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情灵嫌,我是刑警寧澤壹罚,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站寿羞,受9級(jí)特大地震影響猖凛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绪穆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一辨泳、第九天 我趴在偏房一處隱蔽的房頂上張望虱岂。 院中可真熱鬧,春花似錦菠红、人聲如沸第岖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蔑滓。三九已至,卻和暖如春遇绞,著一層夾襖步出監(jiān)牢的瞬間键袱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工摹闽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杠纵,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓钩骇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親铝量。 傳聞我的和親對(duì)象是個(gè)殘疾皇子倘屹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容