Android是基於Linux開發的系統,卻沒有終端機。而Termux這個開源終端機模擬器補全了這個缺口,不需要Root就可以使用,還有自己的套件管理員。
Termux為一款終端機模擬器APP,移植了許多Linux的常用命令行程式。為什麼要在手機上打指令? 有的時候手機並沒有對應的APP,你還是可以用命令列模式的軟體來達成目的。例如Termux可以跑SSH連線、影片轉檔、架伺服器、學習寫程式等等。並且Termux提供proot-distro,能夠建立Linux容器環境,執行更多Linux電腦版的程式。
然而,Termux無法幫你的手機Root。如果要用Termux修改Android系統內部的檔案,你還是需要先將手機Root。
本文會介紹Termux的安裝方式,並舉一些Termux的具體用途。
1. 如何安裝Termux#
Termux系統要求為Android 7以上的Android裝置。
Termux的開發者說Google Play上的Termux已經沒在更新了,請到 F-Droid下載最新版。
點進F-Droid的連結,點選Download APK
下載安裝檔。
2. 安裝Termux後建議做的事#
2.1. 界面概覽#
開啟Termux後就是終端機介面,點一下輸入框,手機鍵盤會自動開啟。Termux螢幕上還有顯示Ctrl、Esc之類的鍵盤快捷鍵,日後用終端機操作會常常用到他們。
從通知欄下拉,按
Exit
會立即終止Termux;Acquire Wakelock
則是讓其保持在背景執行。從螢幕左側滑進來,按
New Session
可開啟多個Termux終端機(工作階段);按Keyboard
喚醒手機鍵盤。
2.2. 更新軟體套件#
Linux系統安裝軟體通常是從軟體庫下載安裝,有用過Ubuntu的人應該會有點概念。
Termux的套件主要是deb格式,pkg指令其實就是APT的wrapper,但是您不能直接找Ubuntu/Debian系統的deb包來裝,Termux儲存庫的套件都是針對手機重新編譯過的版本。
- 剛安裝後,軟體套件需要更新才能正常使用。使用此指令更新Termux的全部套件 (在Termux空白處長按可貼上複製的指令)
pkg update
Termux會自動下載更新並安裝套件。更新時可能會問要不要升級套件,一律輸入
y
按下enter。安裝軟體常用的指令如下:
# 安裝套件
pkg install <套件名稱>
# 解除安裝套件
pkg uninstall <套件名稱>
# 搜尋套件
pkg search <套件名稱>
# 更新全部套件
pkg update && pkg upgrade
# 自動移除用不到的套件
pkg autoclean
- Termux的
pkg
指令其實是apt
指令的前端,所以您也可以用apt update
來更新套件。但是您不可以直接使用Ubuntu的套件庫,也不能隨便找個deb就用dpkg
裝。
2.3. 切換鏡像站點#
Termux有各國的鏡像站(mirror)可加快套件下載速度。此步驟為選擇性,如果不設定的話Termux每次下載套件都會遍歷全球鏡像站點才開始下載。
- 輸入以下指令
termux-change-repo
按Termux終端機顯示的上下鍵切換到
Single mirror
,再按下手機鍵盤的Enter。選擇
Mirrors in Asia
,按下Enter。中國用戶可以選Mirrors in China
。Termux會重新整理軟體庫列表,輸入
y
就可以繼續使用。
2.4. 防止Termux被系統殺死#
如果你的裝置系統為Android 12以上,且打算要用來跑Linux桌面等大型程式,請務必 停用Phantom Process Killing,防止Termux在背景的時候被系統殺掉。
3. Termux用途舉例#
Termux究竟能做什麼?主要有以下各種用途和玩法。
藍色字代表相關教學文章,灰色框
的字代表Termux有收錄該套件,能直接裝來用。
3.1. 寫程式#
用vim
、emacs
、nano
寫程式。VIM是純文字模式下很好用的文字編輯器,建議安裝。
尚能用git
管理Github或Gitlab的專案。
Termux支援編譯執行以下程式語言:
- C/C++ (
clang
) - Java (
openjdk-17
) - Python (
python3
) 以及 Anaconda - NodeJS (
nodejs
) - .Net Framework (
mono
) - Rust (
rust
) - Go (
golang
)
如果需要QT Creator和Visual Studio Code那樣的圖形界面IDE,你得先安裝 proot-distro才行。
3.2. 影像處理#
你可以用純文字工具ffmpeg
和imagemagick
給影片和圖片批次轉檔。
安裝
yt-dlp下載Youtube影片;用mpv
播放Youtbe音樂。
或是使用
Termux X11跑圖形界面,用gimp
修圖。
在 proot-distro用Kdenlive剪輯影片、跑建模軟體Blender。
3.3. 跑電腦軟體和遊戲#
安裝 proot-distro後便等同有了隨身Linux系統,能夠跑各式各樣的電腦軟體,例如LibreOffice、GIMP、Firefox,以及部份電腦遊戲。
除此之外, 安裝Box86 + Wine還能在Android裝置跑Windows的exe程式。
3.4. 跑Linux和Windows系統#
Termux儲存庫沒有您要的軟體套件?
用 proot-distro安裝Ubuntu、Fedora、Arch Linux等Linux發行版容器吧,這樣您就有更多現成的軟體套件能用。
如果你很無聊的話, 用QEMU虛擬機跑Windows 7也是可行的。
3.5. 遠端服務#
3.6. 架設網站或伺服器#
用apache2
+ php
+ mariadb
架設網站。
以靜態網頁生成器hugo
配合git
管理個人網站也是可行的。
安裝Java後就能 架設Minecraft Java版伺服器。
修改手機核心加上有Root權限的話, 跑docker容器也不是問題。
3.7. 當作Android殼層的終端機#
Termux可以充當Android殼層(shell)的終端機。
手機有Root的話,搭配Busybox就可以在Android上跑指令,比如修改Magisk模組檔案、 安裝chroot Linux發行版等等。
4. 如何學習使用Termux#
如果真要「精通」Termux,要學的東西很多的,除了要知道命令行指令如何運作以外,您還要學習如何使用Termux API、Termux X11、Termux Python bindings…
先來看指令部份,Termux預設的shell是Bash,指令跟Linux很像,但Termux不是Linux系統。注意Termux的權限跟普通APP是一樣的,裝置沒有Root的話是無法存取Android系統內部的檔案的。
Termux的Bash有以下指令可用:
指令 | 說明 | 用法舉例 |
---|---|---|
pkg apt | 更新、安裝、刪除軟體套件,PKG用法類似APT,執行不需要加sudo。 | pkg update && pkg upgrade 更新全部套件;pkg install python 安裝Python3套件。 |
help | 查看可用指令和個別指令用法,manpage要另外安裝套件。 | help alias 顯示alisa這個指令的參數與用法。 |
alias | 建立指令別名。 | alias ls="ls -l" 會讓執行ls 時等同執行ls -l |
bg | 將行程設成背景執行,效果類似& 。 | bg ping google.com 將ping指令設成背景執行。 |
cd | 切換目錄 | cd ~ 會切換回Termux家目錄 |
cp | 複製檔案或目錄。 | cp foo.txt ~/new 將foo.txt複製到new目錄。 |
echo | 輸出訊息,也可以給檔案輸入文字。 | echo "Hello" 會在螢幕上輸出Hello。 |
exec | 執行程式 | exec startxfce4 執行xfce4 |
export | 宣告環境變數。 | export DISPLAY=:0 指定在該螢幕顯示圖像。 |
fg | 將行程設成前景執行。 | fg ping google.com 將ping指令設成前景執行。 |
history | 查看過去打的指令歷史。 | history 3 會顯示最近打的三個指令。 |
jobs | 列出目前執行中的行程。 | |
kill | 中止行程。 | kill vncserver 會中止vncserver。 |
ls | 列出目錄下的所有檔案。 | ls -al 會列出目前目錄下所有的檔案和檔案大小。 |
mv | 移動檔案、重新命名檔案。 | mv foo.txt new 會把檔案foo.txt移動到new目錄。 |
pwd | 顯示目前所在的工作目錄。 | |
rm | 刪除檔案或目錄。 | rm foo.txt 移除foo.txt檔案。 |
su sudo | 以超級使用者權限執行程式,手機必須Root過才有效。 | |
sleep | 讓程式等個幾秒後再執行指令。 | sleep 5 && time 會等個5秒後才執行time指令。 |
time | 顯示執行程式花費的時間。 | time pkg update 會回傳指令執行所花的秒數。 |
touch | 更新檔案的變更時間、建立空白檔案。 | touch foo.txt 會建立一個空白檔案。 |
unalias | 取消設定別名。 | |
unset | 取消設定環境變數。 |
光這樣指令就很多了,如果我是您,完全不懂Linux的新手的話,我會建議不要一直盯著手機小螢幕來學命令行,很傷視力的。
鑑於Termux跟一般的Linux系統仍有差距(詳情請見 wiki),能做的事情有限。我建議您從基礎開始:在電腦用Virtualbox或WSL,安裝真正的Linux發行版(例如Ubuntu),並搜尋相關課程來正式學習如何使用Linux與命令行。這樣一來,您就能將學習到的經驗套用到Termux上,比較能知道程式背後的執行原理。
5. Termux存取手機內部儲存空間的檔案#
「手機內部儲存空間」指的是DCIM
、Download
、Document
、Android
這些目錄所在的位置。用檔案管理員APP就能看到。
- 輸入以下指令同意Termux存取手機內部儲存空間
termux-setup-storage
在允許Termux存取手機儲存空間後,它會被掛載到Termux家目錄的
storage/shared
目錄。輸入ls
指令確認下:如果要切換到
手機內部儲存空間/Download
這個目錄,你只要輸入:
cd storage/shared/Download
- 再用
ls
指令查看該目錄的所有檔案。
如果想知道怎麼用檔案管理器APP開啟Termux內部的檔案,請參閱: 淺談Termux檔案管理
延伸閱讀#
Termux Wiki亦有許多實用資訊。