快轉到主要內容

Termux終端機使用教學:Android手機跑Linux指令

· 民國115年丙午年
·
切換繁體/簡體 ·
分類 智慧型手機 Termux教學
標籤 Linux Termux Android
目錄

Android是基於Linux開發的系統,卻沒有終端機。而Termux這個開源終端機模擬器補全了這個缺口,不需要Root就可以使用,還有自己的套件管理員。

Termux為一款終端機模擬器APP,移植了許多Linux的常用命令行程式。為什麼要在手機上打指令? 有的時候手機並沒有對應的APP,你還是可以用命令列模式的軟體來達成目的。例如Termux可以跑SSH連線、影片轉檔、架伺服器、學習寫程式等等。並且Termux提供proot-distro,能夠建立Linux容器環境,執行更多Linux電腦版的程式。

使用例:跑XFCE桌面與電腦版Firefox瀏覽器

使用例:使用Vim寫Python程式

然而,Termux無法幫你的手機Root。如果要用Termux修改Android系統內部的檔案,你還是需要先將手機Root。

本文會介紹Termux的安裝方式,並舉一些Termux的具體用途。

1. 如何安裝Termux
#

Termux系統要求為Android 7以上的Android裝置。

根據Termux的開發者說法Google Play上的Termux已經沒在更新了!

請到F-Droid或者Github下載最新版。

以F-Droid為例,點進F-Droid的連結,點選Download APK下載安裝檔。對於大多數裝置,下載arm64-v8a架構的版本。

2. 安裝Termux後建議做的事
#

2.1. 界面概覽
#

  1. 開啟Termux後就是終端機介面,點一下輸入框,手機鍵盤會自動開啟。Termux螢幕上還有顯示Ctrl、Esc之類的鍵盤快捷鍵,日後用終端機操作會常常用到他們。

  2. 從通知欄下拉,按Exit會立即終止Termux;Acquire Wakelock則是讓其保持在背景執行。

  3. 從螢幕左側滑進來,按New Session可開啟多個Termux終端機(工作階段);按Keyboard喚醒手機鍵盤。

  4. 如何在Termux輸入中文:將底部的工具列往左滑,就會出現輸入框。

  5. 如果嫌Termux字太小,用雙指縮放,可以放大縮小終端機螢幕。

2.2. 更新軟體套件
#

Linux系統安裝軟體通常是從軟體庫下載安裝,有用過Ubuntu的人應該會有點概念。

Termux的套件主要是deb格式,pkg指令其實就是APT的wrapper,但是您不能直接找Ubuntu/Debian系統的deb包來裝,Termux儲存庫的套件都是針對手機重新編譯過的版本。

  1. 剛安裝後,軟體套件需要更新才能正常使用。使用此指令更新Termux的全部套件 (在Termux空白處長按可貼上複製的指令)
pkg update
  1. Termux會自動下載更新並安裝套件。更新時可能會問要不要升級套件,一律輸入y按下enter。

  2. 安裝軟體常用的指令如下:

# 安裝套件
pkg install <套件名稱>

# 解除安裝套件
pkg uninstall <套件名稱>

# 搜尋套件
pkg search <套件名稱>

# 更新全部套件
pkg update && pkg upgrade

# 自動移除用不到的套件
pkg autoclean
  1. Termux的pkg指令其實是apt指令的前端,所以您也可以用apt update來更新套件。但是您不可以直接使用Ubuntu的套件庫,也不能隨便找個deb就用dpkg裝。

2.3. 切換鏡像站點
#

Termux有各國的鏡像站(mirror)可加快套件下載速度。此步驟為選擇性,如果不設定的話Termux每次下載套件都會遍歷全球鏡像站點才開始下載。

  1. 輸入以下指令
termux-change-repo
  1. 按Termux終端機顯示的上下鍵切換到Single mirror,再按下手機鍵盤的Enter。

  2. 選擇Mirrors in Asia,按下Enter。中國用戶可以選Mirrors in China

  3. Termux會重新整理軟體庫列表,輸入y就可以繼續使用。

2.4. 防止Termux被系統殺死
#

如果你的裝置系統為Android 12以上,且打算要用來跑Linux桌面等大型程式,請務必停用Phantom Process Killing,防止Termux在背景的時候被系統殺掉。

3. Termux用途舉例
#

Termux究竟能做什麼?主要有以下各種用途和玩法。

藍色字代表相關教學文章,灰色框的字代表Termux有收錄該套件,能直接裝來用。

3.1. 寫程式
#

vimemacsnano寫程式。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. 影像處理
#

你可以用純文字工具ffmpegimagemagick給影片和圖片批次轉檔。

安裝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. 遠端服務
#

用SSH跟電腦連線,分享、同步檔案

在手機上執行ADB指令

3.6. 架設網站或伺服器
#

apache2 + php + mariadb架設網站。

以靜態網頁生成器hugo配合git管理個人網站也是可行的。

安裝Java後就能架設Minecraft Java版伺服器

修改手機核心加上有Root權限的話,跑docker容器也不是問題。

3.7. 當作Android殼層的終端機
#

Termux可以充當Android殼層(shell)的終端機,執行ADB指令。

手機有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有很多指令可用,參見The Bash Guide。如果我是您,完全不懂Linux的新手的話,我會建議不要一直盯著手機小螢幕來學命令行,很傷視力的。

鑑於Termux跟一般的Linux系統仍有差距(詳情請見wiki),能做的事情有限。我建議您從基礎開始:在電腦用Virtualbox或WSL,安裝真正的Linux發行版(例如Ubuntu),並搜尋相關課程來正式學習如何使用Linux與命令行。這樣一來,您就能將學習到的經驗套用到Termux上,比較能知道程式背後的執行原理。

5. 管理Termux與Android檔案
#

如何讓Termux存取Android內部儲存空間?

「手機內部儲存空間」指的是DCIMDownloadDocumentAndroid這些目錄所在的位置。用檔案管理員APP就能看到。

  1. 輸入以下指令同意Termux存取手機內部儲存空間
termux-setup-storage
  1. 在允許Termux存取手機儲存空間後,它會被掛載到Termux家目錄的storage/shared目錄。輸入ls指令確認下:

  2. 如果要切換到手機內部儲存空間/Download這個目錄,你只要輸入:

cd storage/shared/Download
  1. 再用ls指令查看該目錄的所有檔案。

如果想知道Termux詳細的檔案管理方式,請參閱:淺談Termux檔案管理

延伸閱讀
#

相關問題請到GithubReddit提問。

Termux Wiki亦有許多實用資訊。

相關文章


感謝您的閱讀。我寫作是為了誠實表達想法,而不是追逐社群互動與流量。我很樂意傾聽你在仔細閱讀我文章之後的心得。若有內容勘誤 or 技術問題 or 回饋想法,歡迎透過本站「關於」頁面的Email與我聯絡。