up::

source:: Termuxを素早く設定 - Qiita
source:: MMLの基礎

Termux Setup

termux-setup-storage
$homeでアクセスできるtermuxのホームディレクトリ(アプリの内部ストレージ)に、storage/emulated/0/へのリンクが出来る。……そのリンクの作り方知りたいな?

必要なパッケージはpkgでインストール可能。中で動いてるのはalpineっぽい。

他にもクリップボードを同期したり、テキストを音楽に変換するアプリが使えたりするらしい。

テキストファイルを開く

vimをインストールしてもいいが、標準でnanoというエディタが入ってる。

python使う

pyenvが入れられる。がちゃんと動かない。
ちなみに標準で入ってるシェルはbash。

pythonの古いバージョンは本来termuxでは提供されない。

https://wiki.termux.com/wiki/Python

tur-repo経由で入るらしい。
パッチバージョンまでは制御できない。
またpyton3.10がコマンドになる。

https://m.youtube.com/watch?v=UfLphYJ_xt4

中身

何かのdisrtributionのエミュではなく、Androidで動くようにすべてのパッケージをパッチしたもの。
動かすために標準linuxとファイルシステムが違い、そのためパッチが必要。

https://wiki.termux.com/wiki/Getting_started

Failed to build installable wheels for some pyproject.toml based projects (gevent, pycryptodome)

nndownloadを入れようとしたら発生。
標準のpython3.11に対応してないからと3.10入れたが効果なし。

https://github.com/gevent/gevent/issues/1918

ビルドツールがtermuxのFSに対応してない。
pkg i binutilsで解決する。

https://github.com/termux/termux-packages/issues/283
https://stackoverflow.com/questions/70964436/cant-install-gevent-on-termux-anyone-can-help-me

改行を消す

sed使用。
sed 's/source/replace/' target.txtのように使用する。
-eで正規表現、-zでNULL文字区切り(デフォ改行区切り)。-z使用時は-eが標準で使える。-iで直接ファイル書き換え。s///gですべての対象を置換する。

https://webbibouroku.com/Blog/Article/sed-crlf-lf

grepと正規表現

-Eでほとんど使える。肯定後読み(Look behind)を使用するなら-P
前はextendedで後がperl sttyle。Perl Compatible Regular ExpressionsからPCREsと呼ばれる。
標準だと行が出力されるので、-oで文字を切る。

https://fabianlee.org/2021/01/09/bash-grep-with-lookbehind-and-lookahead-to-isolate-desired-text/

後読み内の文字は可変長にできない。
可変する場合は\Kで区切る方法を使う。(これより前の一致を消去する)
ただ\Kは微妙に仕様が異なるので注意。

https://www.rexegg.com/regex-lookarounds.php

先読みの場合は可変長可能。

文字列連結

+=も使えるが、${}${}でくっつけていくのが一番早い。

https://www.delftstack.com/ja/howto/linux/how-to-concatenate-strings-using-bash/

”,"",,“,$()

シングルクォートはそのまま文字列。

ダブルクォートは\,``,$()のみ処理する。

バックスラッシュは直後の一文字にだけシングルクォートを適用(したかのように特別な意味を消す)。ちなみにshの改行に使うバックスラッシュも、実際は\\nで改行の意味を消している。

はコマンド置換。単体で使うと改行などが分割→単一スペースになるだけのコマンド実行。なお他のコマンドに渡す際は分割前を渡す。`""`と合わせて文字列内で実行するのにだいたい使う。`\`,` ,$()`を処理する。

()`を処理しない。

https://qiita.com/HAHOHIHOHU/items/6bbdef9b7474cea1622b

変数デフォルト

${name:-default}とするとデフォルト値を設定できる。
ちなみにコロン後につける記号でいろいろ他のこともできる。

shebang

どのシェルで実行するか書くやつ。
普通デフォでBashだが、書かないと$()でsh扱いになって引っかかることがある?
(nndownloadのダウンロードが終わる前に次のコマンドに行ってしまった)

niconicoをコメント付きでダウンロードしてass変換

filename=$(nndownload -c -l --session-cookie "${1:-/data/data/com.termux/files/home/nicocookie.txt}" "$2" | tee nnlog.txt | grep -Po -m 1 '(?<=\").*(?=\.(mp4|mkv)\")')
python /storage/emulated/0/Download/Flud/nicojson2xml/nicojson2xml.py "${filename}.comments.json"
python /storage/emulated/0/Download/Flud/nicodanmaku2ass/danmaku2ass.py -o "${filename}.ass" -a 0.8 "${filename}.comments.xml"

(2025/03/09)うまく動かない。grepで出力を拾ってしまうのが悪そう。

オプションでページ内ニコニコ動画リンク一括コピーブックマークレット。

javascript:(function(){var d=document.links.length,b=document.querySelectorAll("iframe"),c="";niconicoIdReg=/(?:sm|nm|so|ca|ax|yo|nl|ig|na|cw|z[a-e]|om|sk|yk)\d{1,14}\b/;for(var e=0;e<d;e++)if(url=document.links[e].href,/(nicovideo\.jp|nico\.ms)/.test(url)){var f=url.match(niconicoIdReg);null!==f&&(smLinkTxt="https://www.nicovideo.jp/watch/"+f[0],c+=smLinkTxt+"\r\n")}b.forEach(function(a){a=a.getAttribute("src");/(nicovideo\.jp|nico\.ms)/.test(a)&&(a=a.match(niconicoIdReg),null!==a&&(smLinkTxt="https://www.nicovideo.jp/watch/"+
a[0],c+=smLinkTxt+"\r\n"))});window.confirm(c)&&(d=new Blob([c],{type:"text/plan"}),b=document.createElement("a"),b.href=URL.createObjectURL(d),b.download=document.title+"_link.txt",b.click())})();

ページ内のニコニコ動画リンクを一覧取得するブックマークレット - E-tum’s B-log

git

git add .
git commit -m 'c'
git switch main
git pull
git merge sub --commit
git push
git branch -d sub
git switch -c sub

入れたばかりだとユーザー名、メールアドレス、マージ戦略等で止められる。
都度git configコマンドで追加。

manager-coreが使えないので実質sshだけだが、都度exec ssh-agent bashssh-add privatekeypathが必要になる。

なんでないの……
git-credential-manager · Issue #10420 · termux/termux-packages

clipboard

pkg instal termux-apiの後、
termux-clipboard-settermux-clipboard-getが使えるようになる。

Termux-clipboard-set - Termux Wiki

Vim

vimを使うとキーボードが消えて操作不能になる。(2024/12/01)
なのでviを使う。

x11

いくつかのGUIアプリも使える。

termuxで動かしたサーバーをtermux-x11アプリに送信する形。
サーバーにはtermux-x11のリポジトリをサブモジュール付きでcloneしたものを使う。

GitHub - termux/termux-x11: Termux X11 add-on application.

vscodeをつかうならこちら。codiumっぽいが。

GitHub - PrashantRawatCoder/VS-Code-In-Termux-X11

termuxのpkg用リポジトリはtermux-packagesにまとまっている。
code-ossは見つからない。apt側?

code-ossをcode-serverに替えるとvscodeになりそう。

vscode或code-server支持! · termux/termux-packages · Discussion 9080 · GitHub