最近換了新手機(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
)命令安裝額外的軟件包官撼。
之所以稱它為“模擬器”而非“虛擬機(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è)攀唯!
二、軟件包
前面提到的可供安裝的近一千個(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 罷了错沃,那么 Perl、Ruby雀瓢、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
效果截圖:
雖然名字叫 cowsay ,但它所包含的動(dòng)物形象事實(shí)上不只“耪雌啵”這一種梗醇。
可以使用 cowsay -l
命令列出所有可供選擇的動(dòng)物形象,并通過(guò) cowsay -f animal_name
手動(dòng)指定另一種動(dòng)物撒蟀。
另外叙谨,其實(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è)跑酷游戲必需的所有的基本要素。玩下就懂了凡涩,蠻神奇的棒搜。
玩兒到后面貌似還有迎面飛來(lái)的障礙物,還可以發(fā)射武器彈藥活箕?記不太清楚了力麸。。育韩。
nsnake
嗯克蚂,不多說(shuō)了,看名字就知道座慰,貪吃蛇陨舱。。版仔。
初始的移動(dòng)速度有點(diǎn)慢游盲,建議在游戲選項(xiàng)里面改一下。
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)后面:
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 文件夾、照片等)的鏈接岛马。
Termux-Api 是 Termux 軟件的一個(gè)插件棉姐,需要安裝額外的 APK 包。并且命令行中也需要使用 $ apt install termux-api
命令安裝具體的工具啦逆。
它提供了一種以 API 的形式直接訪問(wèn) Android 系統(tǒng)硬件和資源(如相機(jī)伞矩、電池、WiFi夏志、短信乃坤、通訊錄、指紋、GPS等)的途徑湿诊。
如獲取電池狀態(tài)和 WiFi 連接信息:
這個(gè)感覺可以深挖狱杰,用好了可以達(dá)到曾經(jīng)的安卓神器 Tasker 的效果。
今天也不早了厅须,浦旱,,就先這樣吧九杂。熬,附個(gè)軟件鏈接吧宣蠕。例隆。
Termux and Termux-Api 提取碼:i37y
By the way,錄了段蠻簡(jiǎn)陋的視頻演示抢蚀,額镀层,第一次剪。皿曲。唱逢。