快轉到主要內容

淺談Termux檔案管理,將Linux環境的檔案與Android共享

· 民國113年甲辰年
·
切換繁體/簡體
分類   智慧型手機 Termux教學
標籤   Termux Freedesktop Specifications
目錄

Manage and access files in Termux APP.

討論Termux的目錄結構,以及將Linux環境的檔案與Android共享的技巧。

測試環境:

  • Android 14
  • Termux 0.119

1. Termux自身的根目錄
#

根據Termux Wiki,Termux並不符合FHS標準,跟一般電腦Linux發行版的目錄結構有差異。因此,如果你的軟體很依賴標準Linux目錄結構,那麼請考慮使用proot或chroot建立Linux容器環境較為保險。

Termux的檔案目錄(文件目錄)位於/data/data/com.termux/files/

這個目錄只有Termux可以存取。

Termux內提供二個環境變數:$TERMUX_PREFIX$PREFIX,它們指向的都是/data/data/com.termux/files/usr目錄。

Termux透過pkg安裝的軟體通常會放到/data/data/com.termux/files/usr/bin

Termux家目錄位於/data/data/com.termux/files/home

沒有Root權限的情況下,Termux無法存取Android系統的根目錄(/

2. Termux的家目錄
#

Termux家目錄位於/data/data/com.termux/files/home。執行指令的時候,家目錄路徑可以用~替代。

需要注意的是,Termux只有單一使用者帳號(用whoami指令確認),沒有root帳號。使用者也不能新增帳號。

家目錄只有Termux能存取,其他APP得透過Android Scoped Storage才能夠讀取該目錄。參見:用質感檔案APP存取Termux家目錄的做法

通常Termux家目錄下是沒有任何檔案的,不過用ls -a可以看到隱藏檔案

~ $ ls -a
.            .bash_history  .ssh
..           .npm           .termux  storage
.Xauthority  .npmrc         .vnc

那些點開頭的目錄大部分是軟體的設定檔,例如.termux就包含了程式行為和字體。

如果有安裝XFCE4桌面環境,Termux的家目錄便會自動生出符合XDG Base Directory標準的目錄。

如果要設定$PATH環境變數,請將其放到~/.bashrc或者~/.profile

若想要一款純文字的檔案管理軟體,你可以在Termux安裝ranger套件,方便管理Termux家目錄下的檔案。

3. Termux讀取Android內部儲存空間
#

預設情況下Termux無法存取自身環境以外的Android使用者檔案。

在執行termux-setup-storage指令之後,Termux便能夠存取Android內部儲存空間的檔案。

準確來說,Termux會將Android的/sdcard路徑bind mount到Termux家目錄下的~/storage

Android內部儲存空間會掛載到Termux家目錄下的~/storage

利用ls指令查看~/storage/shared底下目錄可看到Android內部儲存空間的所有檔案

~ $ ls ~/storage/shared/

Documents  Android     Download   Movies     Pictures
DCIM        Music

不過,Termux沒有Root權限是無法存取Android/data目錄的。

我們可以用cp指令複製Termux內的檔案到Android手機內部儲存空間

cp ~/file.txt ~/storage/shared/Download/

同樣也可以把Android手機內部儲存空間的檔案複製到Termux家目錄

cp ~/storage/shared/Download/file.txt ~

小心:執行rm -rf是能把Android手機內部檔案儲存空間的檔案全部刪除的(除了需要root權限存取的目錄以外),請謹慎操作指令。

請不要將軟體或者指令稿放到Termux以外的Android內部儲存空間目錄執行,很容易出現權限問題。

4. proot-distro讀取Android手機內部儲存空間
#

執行proot-distro指令進入Linux容器的時候,Termux預設會把~/storage/shared掛載到容器內部的/sdcard

所以在proot環境內,可以從/sdcard路徑存取Android手機內部儲存空間的檔案。

5. Termux存取SD卡檔案
#

Android手機插入SD卡與OTG裝置後通常會掛載在/storage

Termux無法申請存取外接SD卡與OTG裝置,必須使用Root權限才得以存取該目錄。

6. 利用termux-open指令分享檔案給其他APP
#

Termux提供termux-open指令,可以將檔案以其他APP開啟。

還有xdg-open指令,這個功能跟Linux桌面版的同名指令類似,都是用預設程式開啟檔案之用。在Termux環境下,它其實是連結到termux-open這個檔案。

譬如,讀取家目錄下的一張jpg圖片,執行termux-open指令,Android手機的「以…APP開啟檔案」的選單就會跳出來,然後你就能用相簿APP開啟這張圖片。

# 直接開啟檔案
termux-open --view test.jpg

# 以分享模式開啟
termux-open --send test.jpg

# 總是顯示選取APP的列表
termux-open --view --chooser test.jpg

termux-open指令只能用來分享單一檔案。如果想要從Termux啟動其他APP行程,那麼請使用ADB指令am start

am start -n com.android.chrome/com.google.android.apps.chrome.Main

6. Termux使用Root權限存取Android系統目錄
#

在有安裝Magisk或者KernelSU的情況下

使用sudo 指令提升權限便可以存取Android系統的任意目錄

sudo ls /

可以搭配BusyBox存取Termux環境?是否能在Root過的Android Shell使用Busybox執行Termux環境下安裝的套件?

有點困難,不建議這樣做,建議直接用chroot。

7. 備份Termux環境的檔案
#

最好的方式是直接複製到Android內部儲存空間

有Root權限更好

參見Termux備份還原檔案

參考資料
#

相關文章

Android裝Ubuntu,Termux以QEMU模擬執行x86_64架構的Linux虛擬機
分類   智慧型手機 Termux教學
標籤   Termux QEMU Docker Podman
Android手機玩Steam上的Windows遊戲 ~ Mobox模擬器使用教學
分類   智慧型手機 Termux教學
標籤   Steam Termux Android
Termux Proot安裝Box64與Box86,Android手機執行Windows exe
分類   智慧型手機 Termux教學
標籤   Box86 Box64 Wine ExaGear

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。