Android版Termuxで.shスクリプトを作成して実行する方法

  • Termux を使用すると、Android 上で完全な Linux 環境を構築し、ルート権限なしで .sh スクリプトを実行できます。
  • 「アクセスが拒否されました」というエラーを回避するには、ストレージ、シバン、実行のアクセス権限を適切に構成することが重要です。
  • Termux プラグインを使用すると、起動時、ウィジェットから、またはファイルやリンクを共有するときにスクリプトを起動できます。
  • Termux は Android API (通知、オーディオ、カメラ、TTS) を統合し、シェルからほぼすべてのタスクを自動化します。

Android用Termuxのshスクリプト

試したことがあるなら AndroidでAPKをインストールし、ファイルを移動し、.shスクリプトを起動する 結局、「権限が拒否されました」という迷惑なメッセージしか表示されませんでしたか?ご安心ください。あなただけではありません。Androidは典型的なデスクトップLinuxとは異なり、多くの基本原則を共有しているものの、権限とパスのシステムが少し複雑になっています。

この記事では、段階的にどのように Termux for Androidで.shスクリプトを作成して実行するよくある権限に関する問題の解決方法と、このアプリを最大限に活用して、デバイスの起動時、リンクの共有時、ウィジェットの使用時などのタスクを自動化する方法を学びましょう。これらすべてが分かりやすい言葉で説明されており、実際の例やヒントも掲載されているので、時間と手間を省くことができます。

Termux とは何ですか? Android 上の .sh スクリプトに最適なのはなぜですか?

Android上のLinuxターミナルTermux

Termuxは、 Android内の完全なLinux環境ルートアクセスを必要とせずに、ただのターミナルエミュレーターではなく、Debian/Ubuntuスタイルのパッケージマネージャーを搭載しており、Python、Ruby、Node.js、gcc、ssh、Webサーバー、データベースなど、様々なソフトウェアをインストールできます。

私たちのケースで興味深いのは Termux は本物のシェル(bash、zsh…)を提供しますスクリプト、キーボードショートカット、マウス入力、そして従来のディストリビューションに非常によく似たパッケージシステムをサポートしています。基本的に、プログラミング、サーバー管理、あるいは.shスクリプトを使ったAndroidシステムの自動化などに使用できます。

最初からできることがわかります 使用 便利なTermuxコマンド として ls, grep, ドワーフ, 活力, htopの, git, パイソンただし、ディレクトリ階層はデスクトップ Linux システムとまったく同じではなく、この詳細はスクリプトについて話すときに重要になります。

さらに、Termuxは 物理キーボードと特別なショートカットたとえば、音量ダウンキーは Ctrl キーとして機能し、Ctrl + C、Ctrl + D、Ctrl + L などの組み合わせを使用できるようになり、携帯電話やタブレットでの操作性がさらに向上します。

Termuxを正しくインストールし、バージョンの競合を回避する

AndroidにTermuxをインストールする

よく言われる問題の一つは、Termuxをインストールした後、 アプリアイコンが表示されない、または奇妙なエラーが発生するこれは、Google Play と F-Droid から古いバージョンまたは混在バージョンをインストールしたためによく発生します。

現在の推奨事項は、 信頼できる単一のソースからTermuxをインストールする一般的には、メンテナンス版が提供されているF-Droid、またはそれが不可能な場合はGitHubの公式版を使用することをお勧めします。F-Droidを選択する場合は、Termux APKを直接ダウンロードし、Playストア版との混在を避けてください。

これは特に、 Termux:Boot、Termux:API、Termux:Widget などのプラグインガイドが必要な場合は、 Termuxの使い方を学ぶデジタル署名を一致させるには、関連するすべてのアプリが同じストア(PlayストアまたはF-Droid)から入手されている必要があります。ソースが混在している場合、拡張機能がTermuxを検出しない、または動作しないことがよくあります。

PlayストアからTermuxをすでに入手していて、F-Droidに切り替えたい場合は、次のオプションをお勧めします。 まず以前のバージョンをアンインストールします 次に、Termux とそのプラグインの両方を F-Droid からインストールします。すべて同じサイトからインストールします。

基本環境の設定: 更新とストレージの権限

Termuxをインストールしたら、まずスクリプトとデバイスファイルを操作するための最低限の準備を整えます。そのためには、主に以下の2つの手順が必要です。 パッケージを更新し、Androidストレージを統合する.

Termuxディストリビューションのアップデートはパッケージマネージャーを使うのと同じくらい簡単です。直接 aptTermuxはコマンドを提供する pkgこれによりプロセスが簡素化され、 aptのアップデート 触れたとき。

2番目のステップは、モバイルデバイスのストレージへのアクセスを許可することです。デフォルトでは、Termuxは自身のディレクトリのみを認識します。 $ HOMEこれはAndroidの他の部分から分離されています。内部メモリまたはSDカードの読み書きを行う場合は、次のコマンドを実行する必要があります。

termux-setup-storage

このコマンドは権限を要求し、ディレクトリを作成します $HOME/ストレージ リンク付き ダウンロード, ドキュメント, ピクチャーなど。このようにして、スクリプトは Android ユーザーエリアからファイルを読み取ったりコピーしたりする ジャグリングをする必要はありません。

例えば、あなたが望むのが APKをインストールしていくつかのファイルをコピーする スクリプトから内部ストレージにアクセスする場合は、事前にこれらの権限を付与しておくことが不可欠です。そうしないと、恐ろしい「アクセスが拒否されました」というエラーが発生する可能性が高くなります。

Termuxのルーティング構造とシバンの概念を理解する

Termux は、標準の Linux ディストリビューションとまったく同じ階層を使用するわけではありません。 /bin、/usr、/etc などのパスは、予期した場所にありません。、そしてそれはスクリプトのシェバンに影響します( #! 通訳者を示す。

多くのガイドやプロジェクト(InstaPyのようなInstagramボットなど)では、次のようなヘッダーを持つスクリプトが見られます。 #!/bin/sh o #!/usr/bin/env pythonTermuxの古いバージョンでは、これらのパスを「修正」するために、 termux-fix-shebangバイナリが通常のルート上になかったためです。

最近のバージョンにはパッケージが含まれています ターマックスexec、責任があります 標準的なシバンを正しく解釈するこれにより、従来のUnix環境を想定したスクリプトのほとんどは、変更を加えることなく動作します。それでも、スクリプトの実行に失敗した場合は、以下の点を確認することをお勧めします。

  • 実際に存在する通訳者を指し示すようにしましょう Termuxで。
  • スクリプトに実行権限があることを確認する chmod +x.
  • 実行時に正しいパスを使用していること(例: ./install.sh o ~/script.sh).

すべてを「整理整頓」するのが好きな人なら、 古典的なディレクトリ構造 Termux( / usr / bin)シンボリックリンクと標準パスを生成する特定のコマンドを使用します。必須ではありませんが、レガシースクリプトの再利用が容易になる場合があります。

Termuxで.shスクリプトを作成し、権限を付与し、実行する

早速本題に入りましょう。Termuxでシンプルな.shスクリプトを作成して実行するにはどうすればいいでしょうか?基本的な流れは常に同じです。 スクリプトを記述し、保存し、権限を付与して実行します。これを、独自のスクリプトと、たとえばクラシック スクリプトの両方に適用できます。 インストール.sh InstaPy Quickstart のようなプロジェクトの。

スクリプトを作成するには、 ドワーフ, 活力, エマックス O·エル 一番好きなエディター何もインストールされていない場合は、次の手順に従ってください。

pkg install nano

作成したいとしましょう ~/script.sh次のようにすることができます:

nano ~/script.sh

ファイル内に、たとえば実行日を記録する非常に単純なスクリプトを記述します。

#!/bin/sh
echo "Encendido del dispositivo: $(date)" >> ~/registros.log

完了したら、nanoに保存します。 Ctrl + O、Enter、そしてCtrl + Xスクリプトは作成しましたが、まだ実行可能ではありません。これを修正するには、次のコマンドで権限を追加してください。

chmod +x ~/script.sh

そこから、次のコマンドを実行して、すべてが機能しているかどうかをテストできます。

~/script.sh

./script.sh (ファイルと同じディレクトリにいる場合)

このアップデートを実行する場合 ~/registros.log 日付と時刻を確認することで、 .shスクリプトは正常に動作しますこのレシピは、 インストール.sh GitHub からダウンロードしたもの: 実行権限があり、正しいパスで呼び出すことを確認してください。

.sh スクリプト実行時の「権限が拒否されました」エラーを修正

AndroidでAPKをインストールしたり、.shファイルを使ってファイルを移動しようとするときに最もよくある悩みの1つは、 すべてが正しいように見えますが、端末は「Permission denied」と応答します。Termux では、この問題には通常、いくつかの典型的な原因があります。

まず最も明白なのは スクリプトには実行権限がありません完璧な服を着ていても、 chmod +x archivo.sh 何もできません。これは典型的な見落としなので、常に確認する必要があります。

もう一つのよくある原因は スクリプトは、Android が許可していないシステム パスへの書き込みを試行します。特にルートアクセスがない場合。システムディレクトリを自由に操作することは諦め、ユーザーパス(公開されているものなど)に焦点を当てましょう。 $HOME/ストレージ) またはアプリ自体が管理できる範囲に限定されます。

それはまた起こるかもしれません Termux以外の端末エミュレータからコマンドを起動しています適切な権限と環境がないと、他の多くの Android ターミナル エミュレーターでは権限の問題が発生し、ストレージや API も統合されないため、実際の Linux システムで動作する同じコマンドがそこでは失敗します。

AndroidにInstaPy Quickstartをインストールしようとしている特定のケースでは、重要な点は Termuxはすべての依存関係が利用可能である必要があります (Python、pip、必要なライブラリ)とスクリプト インストール.sh Termux内で実行する必要があります。他のアプリでは実行しないでください。正しく実行しても失敗する場合は、インストールパス、shebang、および対象ディレクトリの権限を確認してください。

Termux:BootでAndroidの起動時に.shスクリプトを自動的に実行する

基礎をマスターしたら、多くの人はさらに一歩進んで デバイスの電源がオンになると、特定のスクリプトが自動的に実行されます。アドオンはそのためにあるのです。 Termux:ブート.

Termux:BootはTermuxと統合するアプリであり、 特別なディレクトリ内で見つかったすべての .sh スクリプトを起動します。 スマートフォンの起動が完了したら、MySQL、小規模なデーモン、ログ記録タスクなどのサービスを起動したり、起動時に必要な自動化を実行したりするのに最適です。

Termux:BootはGoogle Play(一部の国では有料)またはF-Droidから無料で入手できます。ただし、黄金律を忘れないでください。 Termux と Termux:Boot は同じソースから取得する必要があります。 署名が一致するようにしてください。TermuxにF-Droidを使用する場合は、Termux:BootにもF-Droidを使用してください。

Termux:Bootをインストールしたら、通常はこれで十分です アプリを一度開くだけで ブートイベントの受信者として登録されます。複雑な設定は必要ありません。適切なディレクトリに配置したスクリプトをバックグラウンドで読み取るだけで、自動的に処理が行われます。

起動時のスクリプトパス: ~/.termux/boot と実際の例

Termux:Boot のメカニズムはシンプルです。 ~/.termux/boot/ 内に配置した .sh スクリプトは、デバイスの起動時に実行されます。デフォルトではフォルダーは存在しないため、自分で作成する必要があります。

Termux でこれを行うには、次のコマンドを実行します。

mkdir -p ~/.termux/boot/

そこから、そのパス内にスクリプトを直接作成するか、既存のスクリプトをコピーすることができます。前の例に従って、 ~/script.sh次のようにコピーできます。

cp ~/script.sh ~/.termux/boot/script.sh

ファイルに 実行権限 (chmod +x ~/.termux/boot/script.sh)、Termux:Bootは起動のたびにこれを起動します。そのスクリプトには、 bash/shの有効なコマンドログへの書き込みから次のようなデータベース サービスの開始まで、次の操作を実行します。

mysqld_safe -u root &

すべてが正しく設定されていることを確認したい場合は、 Termux:Bootアプリを再度開きます 数秒待ってからデバイスを閉じ、再起動してください。電源が入ったら、ログファイルの内容、またはスクリプトから起動しようとしたサービスの状態を確認してください。

Termuxでcronやその他の自動化を使用する

システムを起動するだけでなく、 Termuxでcronを使って定期的なタスクをスケジュールするこれを行うには、対応するパッケージをインストールし、 crontabs 他の Linux システムの場合と同じです。

インストールしたら、 crontab -e cronテーブルを編集してエントリを追加します。例えば、1分ごとにジョブを実行して特定のディレクトリを作成または更新したり、一定の間隔で.shスクリプトを起動したりするように設定できます。

Termux での cron の動作は標準の Linux システムと非常に似ていますが、重要な制限が 1 つあります。 AndroidがTermuxアプリをバックグラウンドで終了した場合タスクの実行が停止する可能性があります。システムがプロセスを尊重する限り、cronは非常にうまく機能しますが、バッテリー節約ポリシーが厳しいスマートフォンではこの点に留意する必要があります。

cron構文(分、時間、日などの表現)がわからない場合は、次のようなリソースを使用できます。 crontab.guruは、正しいプログラミングを視覚的に記述するのに役立ちます。

TermuxとAndroidの統合: Termux: 共有時のAPIとスクリプト

Termuxの大きな強みの一つは、独立したターミナル内に留まらないことです。アドオンによって Termux:API 多くのAndroidハードウェア機能にアクセスし、.shスクリプトや次のようなツールと組み合わせることができます。 Android版SL4A.

これを使用するには、まずF-DroidまたはPlayストアからTermux:APIアプリをインストールし(他のプラグインと同じソースポリシーに従って)、次にターミナルにパッケージをインストールします。 ターマックスAPIそこから、スクリプトは次のようなコマンドを呼び出すことができます。

  • termux通知 Android で通知を表示します。
  • termuxダイアログ ダイアログ ボックスを開いてユーザーにデータを要求します。
  • termux-トースト 画面に短いメッセージを表示します。
  • termux-tts-speak Google の TTS (テキスト読み上げ) を使用します。
  • termuxメディアプレーヤー オーディオ/ビデオを再生します。
  • termux-マイク録音 マイクからの音声を録音します。
  • クリップボード、場所、カメラなどのコマンド。

さらに、Termuxは 特定のAndroidの「意図」を捉えるこれにより、他のアプリからファイルや URL を共有するときにスクリプトが自動的に実行されるようになります。

たとえば、YouTube から Termux へのリンクを共有すると、スクリプトが実行されます。 ~/bin/termux-url-opener 変数内のURLを受け取る $1。 次のことだけを行う必要があります。

  • ディレクトリを作成する 〜/ bin 存在しない場合。
  • ファイルを作成する termux-url-opener 心臓の奥に。
  • 実行権限を与える chmod +x ~/bin/termux-url-opener.

このスクリプトでは、例えば、ビデオをダウンロードすることができます。 youtube-dl または類似のもの 到着したURLを使用して $1または、後で読むためにリンクをリストに保存します。

似たようなことが起こる termux ファイルエディターTermuxでファイルを共有すると、そのハンドラーが起動します。以下のようにシンボリックリンクを作成することで、お気に入りのエディタを開くように設定できます。

ln -s $PREFIX/bin/nvim ~/bin/termux-file-editor

または独自のスクリプトを書く termux ファイルエディター (付 ドワーフ(実行可能としてマークするなど)ファイルを希望通りに処理できます。これは非常に強力な方法です。 Android と .sh スクリプト間のアクションの連鎖.

ウィジェットとショートカットからスクリプトを実行する: Termux:Widget

快適さがお好みなら、特に便利なアクセサリがもう 1 つあります。 Termux:ウィジェットこのプラグインを使用すると、ホーム画面にショートカットを作成できます。 ウィジェットから直接スクリプトを実行する毎回手動でターミナルを開く必要はありません。

これを機能させるには、スクリプトを特定のパスに配置する必要があります。

  • ~/.ショートカット/ ウィジェットに表示されるスクリプトです。
  • ~/.ショートカット/タスク/ プラグインによって管理される特定のタスク用。
  • ~/.shortcuts/icons/ 各スクリプトで表示される PNG アイコン用です。

アイコンファイル名はスクリプト名と一致する必要があります。 。PNG例えば script.sh.png一般的なフルHD画面では、 96×96 px 通常は問題なく動作しますが、画面が大きい場合は 144 ピクセルまたは 196 ピクセルに増やすことをお勧めします。

スクリプトを ~/.ショートカット/実行権限を与え、Termuxウィジェットをランチャーに追加します。 .sh ファイルをタップするだけで起動できるようになります。バックアップ、同期、音声メモなど、頻繁に繰り返すタスクに最適です。

Termuxのその他の高度なツールと使用例

Termuxでは、個々のスクリプトを実行するだけでなく、 驚くほど充実した職場環境 Android では、Python、Ruby、Perl、Node.js、Rust などの言語のインタープリターをインストールし、.sh スクリプトで使用して、より複雑なタスクを自動化できます。

乗ることもできます 完全な開発環境 git、gcc、make、Neovim、Emacsなどに加え、Webサーバー、データベースサーバー、SSHサービスなどにも対応しています。多くのユーザーは、ドットファイルをgitリポジトリに保存し、設定をTermuxに直接クローンすることで、あらゆるAndroidデバイスで「使い慣れた」操作感を実現しています。

次のようなパスワードマネージャーを使用している場合 パス一緒にインストールすることもできます グング Git経由でパスワードを同期すれば、モバイル端末でもパスワードを利用できるようになります。 (非常にユーザーフレンドリーなシェル)と、次のような最新のユーティリティがあります。 ゾキシド、スターシップ、リップグレップ、LSD、バット、アトゥイン それらはシームレスに統合されます。

デスクトップ環境から来た人にとって、 携帯電話上で稼働するSSHサーバーまたはWebサーバー Termux なら、全く難しくありません。シンプルな .sh スクリプトで起動し、Termux:Boot やウィジェットにリンクして、小型のポータブルサーバーのように管理できます。

へのサポート X11およびVNC経由のグラフィカルインターフェース より高度な設定が必要ですが、これも利用可能です。ご興味があれば、ご確認ください。 AndroidでLinuxをエミュレートして実行する方法それでも、Termux が「ターミナル エミュレーター」という単純な概念を超え、Android 内の小さな Linux ディストリビューションになる程度を示しています。

これらすべてにより、Termux は一種のスイスアーミーナイフになります。 .sh スクリプトを使用したシンプルな APK のインストールから、Android API、cron、システム起動、ウィジェットを組み合わせて複雑なタスクを自動化することまでLinux ターミナルで実行できると想像できるほぼすべての機能をポケットに収めることができます。

Android Termuxをマスターする方法
関連記事
Termuxを徹底解説:このAndroidデバイスを使いこなす方法