メインコンテンツへスキップ

Termuxのファイル管理入門、Linux環境のファイルをAndroidと共有する

·
カテゴリー スマートフォン 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標準に準拠しておらず、一般的なPC向けLinuxディストリビューションとはディレクトリ構造が異なる。そのため、標準的なLinuxディレクトリ構造に強く依存するソフトウェアを使う場合は、prootまたはchrootでLinuxコンテナ環境を作る方が無難だ。

Termuxのファイルディレクトリ(ドキュメントディレクトリ)は/data/data/com.termux/files/にある。

このディレクトリにアクセスできるのはTermuxだけだ。

Termuxには$TERMUX_PREFIX$PREFIXという2つの環境変数があり、どちらも/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経由にする必要がある。参照:Access Termux Home Directory

通常、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パスをTermuxホームディレクトリ配下の~/storageへbind mountする。

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 Backup

参考資料
#

関連記事


最後までお読みいただきありがとうございます。本サイトでは公開コメント欄を設けていません。私はソーシャルな反応やアクセス数を追い求めるためではなく、自分の考えを誠実に探求するために文章を書いています。記事を丁寧にお読みいただいたうえで、ご感想やご意見をお寄せいただければ幸いです。誤字・誤り・技術的な問題などを見つけた場合、またはフィードバックを共有したい場合は、Aboutページに記載しているメールアドレスまでお気軽にご連絡ください。