Termux 学习笔记

前言

  博主在大四下接触到了 Termux 这款软件,而博主与它相遇的原因却有点尴尬。因为毕业设计需要用到服务器计算结果,而学姐为了让博主每天多提交一点任务,早点解脱,所以每天早上学姐总是很早地催促我提交任务。可博主上了大学后就养成了晚睡晚起的习惯,保研后更是每天睡到自然醒,所以很不习惯早上七点多从床上爬起来。但学姐的要求又不敢违背,于是就想如果能用手机代替电脑提交任务,那么我就可以不用下床了:smile:,然后 Termux 就踏着七彩祥云出现了。折腾了它一个月,虽然最后还是没有实现博主的需求,但博主却找到了其他更有意思的玩法。博主对它的评价是:

这又是一款拯救博主懒癌的软件。

  上个月博主突然发现精心配置的 Termux 打不开了,百度无果,最后只好卸载重新安装。而这篇文章主要是为了防止类似的事情再发生,将博主的安装配置过程都记录下来。

简介

  维基百科是这么介绍 Termux 的:

Termux is an Android terminal emulator and Linux environment application that works directly with no rooting or setup required. A minimal base system is installed automatically, additional packages are available using the APT package manager.

  随着智能设备的普及和性能的不断提升,如今的手机、平板等的硬件标准已达到了初级桌面计算机的硬件标准,用心去打造完全可以把手机变成一个强大的工具。

下载安装

基本操作

显示菜单项

  长按屏幕,包括复制、粘贴和更多。此时屏幕出现可选择的复制光标。

菜单项

长按屏幕
├── COPY: 复制
├── PASTE: 更多
├── More: 更多
   └── Select URL: 选择网址
   └── Share transcipt: 分享命令脚本
   └── Reset: 重置
   └── Kill process: 杀掉当前终端会话进程
   └── Style: 风格配色
   └── Help: 帮助文档

显示隐藏的导航栏

  从左向右滑动,可以新建、切换、重命名会话 SESSION 和显示快捷按钮 KEYBOARD(如 CTRLALTTAB 等一些手机难以操作的按钮)。

导航栏

操作 方法
新建会话 点击 NEW SESSION
切换会话 点击要切换的会话
重命名会话 长按要重命名的会话
关闭当前会话 打开菜单项 → MOREKill process
显示及关闭快捷按钮 长按 KEYBOARD 或者快捷键:音量+ + Q

常用快捷键

CTRL(音量减小键)

  CTRL 键是终端用户常用的按键,但大多数触摸键盘都没有这个按键。为此,Termux 采用 音量- 按钮来模拟 CTRL 键。比如:

快捷键 操作
音量- + C 中止当前进程
音量- + D 注销终端会话
音量- + A 将光标移动到行首
音量- + W 将光标删除到行首
音量- + E 将光标移动到行尾
音量- + K 从光标删除到行尾
音量- + L 清除终端
音量- + Z 挂起(发送 SIGTSTP 到)当前进程

特殊键(音量增加键)

快捷键 操作
音量+ + E ESC
音量+ + T TAB
音量+ + 1 F1音量+ + 2F2
音量+ + 0 F10
音量+ + B ALT + B,将光标向前移动一个单词
音量+ + F ALT + F,将光标向后移动一个单词
音量+ + X ALT + X
音量+ + W
音量+ + A
音量+ + S
音量+ + D
音量+ + L | (管道字符)
音量+ + H ~(波浪号字符)
音量+ + U _ (下划线字符)
音量+ + P 上一页
音量+ + N 下一页
音量+ + . CTRL + \(SIGQUIT)
音量+ + V 显示音量控制
音量+ + Q 显示快捷按钮

pkg 命令

  Termux 除了支持 apt 命令外,还在此基础上封装了 pkg 命令,pkg 命令向下兼容 apt 命令。

pkg search <query>              搜索包
pkg install <package>           安装包
pkg uninstall <package>         卸载包
pkg reinstall <package>         重新安装包
pkg update                      更新源
pkg upgrade                     升级软件包
pkg list-all                    列出可供安装的所有包
pkg list-installed              列出已经安装的包
pkg shoe <package>              显示某个包的详细信息
pkg files <package>             显示某个包的相关文件夹路径

Termux-tools

  这是一个 Termux 小工具集合。

工具列表

/data/data/com.termux/files/usr/bin/termux-wake-lock         # 打开休眠锁
/data/data/com.termux/files/usr/bin/getprop
/data/data/com.termux/files/usr/bin/top
/data/data/com.termux/files/usr/bin/ip
/data/data/com.termux/files/usr/bin/pkg
/data/data/com.termux/files/usr/bin/ping6
/data/data/com.termux/files/usr/bin/termux-fix-shebang       # 将 Linux 风格的 shebang 转换为 Termux 适用的 shebang
/data/data/com.termux/files/usr/bin/settings
/data/data/com.termux/files/usr/bin/termux-reload-settings   # 在更改了字体和配色后立即应用更改
/data/data/com.termux/files/usr/bin/logcat
/data/data/com.termux/files/usr/bin/termux-wake-unlock       # 关闭休眠锁
/data/data/com.termux/files/usr/bin/chsh
/data/data/com.termux/files/usr/bin/dalvikvm
/data/data/com.termux/files/usr/bin/termux-setup-storage     # 让 Termux 拥有对 SD 卡的读写权限
/data/data/com.termux/files/usr/bin/df
/data/data/com.termux/files/usr/bin/termux-open-url          # 调用 Android 浏览器打开网址
/data/data/com.termux/files/usr/bin/pm
/data/data/com.termux/files/usr/bin/login
/data/data/com.termux/files/usr/bin/termux-info              # 查看 Termux 与 Android 信息
/data/data/com.termux/files/usr/bin/su
/data/data/com.termux/files/usr/bin/termux-open              # 用 Android 应用打开文件
/data/data/com.termux/files/usr/bin/ping
/data/data/com.termux/files/usr/etc/motd
/data/data/com.termux/files/usr/bin/xdg-open

示例

mkdir -p ~/test
cd test
touch Fish.md
echo '#!'/usr/bin/bash > test.sh

#上面的是准备工作
#不做也没关系

termux-open Fish.md
#用Android应用打开文件
#例如一些Android上的Markdown预览工具

termux-setup-storage
cp Fish.md /sdcard/documents/Fish.md
#让Termux拥有对/sdcard的读写权限

termux-open-url https://git.io
#调用Android浏览器打开git.io

termux-wake-lock
#打开休眠锁
#更好地完成后台任务

termux-fix-shebang test.sh
#将Linux风格的shebang转换为Termux适用的shebang

termux-info
#查看Termux与Android信息

termux-reload-settings
#在更改了字体和配色后
#立即应用更改

Termux-api

  用于访问手机硬件,实现更多的可玩性,可以实现如下等功能:

  • 访问电池信息
  • 获取相机设备信息
  • 获取本机设备信息
  • 获取设置剪贴板信息
  • 获取通讯录信息
  • 获取设置手机短信
  • 拨打号码
  • 振动设备

安装 Termux-api

安装 Termux-api 软件包

  安装完 Termux-api APP后,Termux 里面必须安装对应的包后才可以实现操作手机底层。

pkg install termux-api

命令列表

termux-battery-status          # Get the status of the device battery.
termux-brightness              # Set the screen brightness between 0 and 255.
termux-call-log                # List call log history.
termux-camera-info             # Get information about device camera(s).
termux-camera-photo            # Take a photo and save it to a file in JPEG format.
termux-clipboard-get           # Get the system clipboard text.
termux-clipboard-set           # Set the system clipboard text.
termux-contact-list            # List all contacts.
termux-dialog                  # Show a text entry dialog.
termux-download                # Download a resource using the system download manager.
termux-fingerprint             # Use fingerprint sensor on device to check for authentication.
termux-infrared-frequencies    # Query the infrared transmitter's supported carrier frequencies.
termux-infrared-transmit       # Transmit an infrared pattern.
termux-job-scheduler           # Schedule a Termux script to run later, or periodically.
termux-location                # Get the device location.
termux-media-player            # Play media files.
termux-media-scan              # MediaScanner interface, make file changes visible to Android Gallery
termux-microphone-record       # Recording using microphone on your device.
termux-notification            # Display a system notification.
termux-notification-remove     # Remove a notification previously shown with termux-notification --id.
termux-sensor                  # Get information about types of sensors as well as live data.
termux-share                   # Share a file specified as argument or the text received on stdin.
termux-sms-list                # List SMS messages.
termux-sms-send                # Send a SMS message to the specified recipient number(s).
termux-storage-get             # Request a file from the system and output it to the specified file.
termux-telephony-call          # Call a telephony number.
termux-telephony-cellinfo      # Get information about all observed cell information from all radios on the device including the primary and neighboring cells.
termux-telephony-deviceinfo    # Get information about the telephony device.
termux-toast                   # Show a transient popup notification.
termux-torch                   # Toggle LED Torch on device.
termux-tts-engines             # Get information about the available text-to-speech engines.
termux-tts-speak               # Speak text with a system text-to-speech engine.
termux-vibrate                 # Vibrate the device.
termux-volume                  # Change volume of audio stream.
termux-wallpaper               # Change wallpaper on your device.
termux-wifi-connectioninfo     # Get information about the current wifi connection.
termux-wifi-enable             # Toggle Wi-Fi On/Off.
termux-wifi-scaninfo           # Get information about the last wifi scan.

目录环境结构

$ echo $HOME
/data/data/com.termux/files/home

$ echo $PREFIX
/data/data/com.termux/files/usr

$ echo $TMPPREFIX
/data/data/com.termux/files/usr/tmp/zsh

$ tree -d -L 1 $PREFIX
/data/data/com.termux/files/usr
├── bin
├── etc
├── include
├── lib
├── libexec
├── opt
├── share
├── src
├── tmp
└── var

10 directories

Termux 基础配置

键盘优化

mkdir $HOME/.termux
echo "extra-keys = [['ESC','/','-','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]" >> $HOME/.termux/termux.properties

  最后效果如下:

修改启动问候语

  Termux 默认的启动问候语如下:

修改前

  这个对于初学者来说有一定的帮助,但随着对 Termux 的熟悉,这个默认的问候语就会显得比较臃肿了。编辑问候语文件直接修改问候语:

vi $PREFIX/etc/motd

  修改完的效果如下:

修改后

更换清华源

自动替换

  使用如下命令自动替换官方源为 TUNA 镜像源

sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux stable main@' $PREFIX/etc/apt/sources.list
apt update && apt upgrade

手动修改

  编辑 $PREFIX/etc/apt/sources.list 修改为如下内容

# The termux repository mirror from TUNA:
deb https://mirrors.tuna.tsinghua.edu.cn/termux stable main

  请使用内置或安装在 Termux 里的文本编辑器,例如 vi / vim / nano 等,不要使用 RE 管理器等其他具有 ROOT 权限的外部 APP 来修改 Termux 的文件

报错与修复

  在Android P上使用 TUNA 源在 upgrade 的时候会出现报错 bash CANNOT LINK EXECUTABLE "dpkg-deb": library "libz.so.1" not found dpkg: error processing archive,此时退出 termux的进程,重新打开并 pkg up 即可修复。

  也可能出现以下报错 bash CANNOT LINK EXECUTABLE "/data/data/com.termux/files/usr/lib/apt/methods/https": library "libnghttp2.so" not found CANNOT LINK EXECUTABLE "/data/data/com.termux/files/usr/lib/apt/methods/https": library "libnghttp2.so" not found,并且卡进度条,此时退出 Termux 的进程,重新打开,并运行 dpkg --configure -a 即可修复。

外置存储

  通过输入下面的命令,可以在 home 目录生成 storage 目录,并且生成若干目录,软连接指向外置存储卡的相应目录。

pkg install termux-tools
termux-setup-storage

创建 QQ 接收文件夹软链接

ln -s /data/data/com.termux/files/home/storage/shared/tencent/QQfile_recv QQ

创建 TIM 接收文件夹软链接

ln -s /data/data/com.termux/files/home/storage/shared/tencent/TIMfile_recv TIM

创建 Wechat 接收文件夹软链接

ln -s /data/data/com.termux/files/home/storage/shared/tencent/MicroMsg/Download Wechat

最后效果

  这样可以直接在 home 目录下去访问 QQ 等文件夹,非常方便文件的传输,大大提升了工作效率。

安装基本工具

pkg update
pkg install vim curl wget git unzip unrar

Zsh + Oh My Zsh

  为 Termux 添加 oh-my-zsh 终端环境以及 zsh-syntax-highlighting,设置色彩样式(大部分来自 Gogh )和 Powerline 字体(来自 powerline/fonts)。oh-my-zsh 主题默认为 agnoster,颜色样式默认为 Tango,字体默认为 Ubuntu。

使用

sh -c "$(curl -fsSL https://github.com/Cabbagec/termux-ohmyzsh/raw/master/install.sh)"
zsh

设置色彩样式

  运行 chcolor 更换色彩样式,或者:

~/.termux/colors.sh

设置字体

  运行 chfont 更换字体,或者:

~/.termux/fonts.sh

设置主题

  编辑 .zshrc 配置文件:

vim .zshrc

  第一行可以看到,默认的主题是 agnoster 主题:

  在 .oh-my-zsh/themes 目录下放着 oh-my-zsh 所有的主题配置文件。可以点击链接查看所有主题。

键盘优化

  安装完成后,在 .termux 中的 termux.properties 会失效,快捷按钮会变成初始的样子,需要重新执行下面的命令:

mkdir $HOME/.termux
echo "extra-keys = [['ESC','/','-','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]" >> $HOME/.termux/termux.properties

设置 Zsh 为默认 Shell

chsh -s zsh

  如果显示:

$ chsh -s zsh
/data/data/com.termux/files/usr/bin/chsh: 1: /data/data/com.termux/files/usr/bin/chsh: getopt: not found

  那么:

pkg install util-linux
chsh -s zsh

  最后重启 Termux 即可。

恢复到安装前的环境

  1. home 目录下可找到按日期命名的 zshrc 备份文件,形如 .zshrc.bak.2018.1.1-00:00:00,将其文件名恢复为 .zshrc。若不存在备份文件,删除当前的 .zshrc
  2. home 目录下可找到按日期命名的 termux 备份配置目录,形如 .termux.bak.2018.1.1-00:00:00,将其文件名恢复为.termux。若不存在备份,删除当前的 .termux 目录。
  3. 重启 Termux

示例

  tomorrow.night.colors 颜色主题 + agnoster 主题 + Droid Sans Mono Dotted for Powerline 字体:

管理员身份

手机没有 root

  利用 proot 工具来模拟某些需要 root 的环境:

pkg install proot

  然后终端下面输入:

termux-chroot

  即可模拟 root 环境。在这个 proot 环境下面,相当于是进入了 home 目录,可以很方便地进行一些配置。

  在管理员身份下,输入 exit 或者快捷键 CTRL + D 可回到普通用户身份。

手机已经 root

  安装 tsu,这是一个 su 的 Termux 版本,用来在 Termux 上替代 su

pkg install tsu

  然后终端下面输入:

tsu

  即可切换到 root 用户,这个时候会弹出 root 授权提示,给予其 root 权限即可。

Python 环境部署

安装 Python 2.7

pkg install python2

  安装完成后,使用 python2 命令启动 Python 2 环境。

安装 Python 3

pkg install python

  安装完成后,使用 python 命令启动 Python 3 环境.

升级 pip 版本

  pip 是 Python 包管理工具,该工具提供了对 Python 包的查找、下载、安装、卸载的功能。

python2 -m pip install --upgrade pip
python3 -m pip install --upgrade pip

安装 pip3

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

IPyhon

  IPython 是一个 Python 的交互式 Shell,支持变量自动补全、自动缩进、支持 shell 命令,内置了许多很有用的功能和函数。学习 IPython 将会让我们以一种更高的效率来使用 Python。
  先安装 clang,否则直接使用 pip 安装 IPython 会失败报错。

pkg install clang
pip2 install ipython
pip3 install ipython

  然后分别使用 ipythonipython2 进入 Python 3 和 Python 2 的控制台。

编辑器

安装 vim-python

  终端下有 Vim 神器,并且官方也已经封装了 vim-python,对 Vim 进行了 Python 相关的优化。

pkg install vim-python

解决 Vim 汉字乱码

  在 home 目录下,新建 .vimrc 文件:

vim .vimrc

  添加内容如下:

set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1
set enc=utf8
set fencs=utf8,gbk,gb2312,gb18030

  然后:

source .vimrc

R 环境部署

建立 storage

termux-setup-storage
apt edit-sources

添加镜像

deb [trusted=yes] https://its-pointless.github.io/files/ termux extras
deb [arch=all,arm] http://mirrors.tuna.tsinghua.edu.cn/termux stable main

环境更新

apt-get update
apt-get upgrade

安装及启动 R

pkg install r-base
R

Julia 环境部署

pkg install julia
julia

Termux ssh 连接电脑

安装 openssh

pkg install openssh

连接电脑

ssh 用户名@IP 地址

示例

  手机登录到博主的腾讯云主机:

电脑 ssh 连接 Termux

  Termux 终端中 sshd 服务不支持密码认证,也就是说用户想要通过 ssh 连接上 Android 设备,只能通过密钥认证方式先将设备公钥放置在 Android 设备的 sshd 服务的授权登录列表中,然后通过私钥校验的方式登录。

安装 openssh

pkg install openssh

启动 sshd

  安装完成后,sshd 服务默认没有启动,所以得手动启动下:

sshd

  出于安全考虑,Android 设备 Termux 终端中 sshd 服务默认运行在 8022 端口,而不是常规 22 端口,用户可以在 sshd_config 中指定 sshd 服务监听的端口号。ssh 的用户名用 whoami 命令查看,IP 地址用 ifconfig 命令查看:

$ whoami
u0_a152
$ ifconfig
192.168.0.100

PC 端生成公钥

  首先在 PC 端生成秘钥:

ssh-keygen -t rsa

  执行完成后,会在 .ssh 目录下创建 3 个文件:id_rsaid_rsa.pubknown_hosts

拷贝公钥到手机

  然后把公钥 id_rsa.pub 拷贝到手机的 data\data\com.termux\files\home\.ssh 文件夹中。

将公钥拷贝到验证文件中

  在 Termux 下操作:

cd .ssh
cat id_rsa.pub > authorized_keys

PC 端连接手机 Termux

ssh -p8022 u0_a152@192.168.0.100

示例

电脑 sftp 连接 Termux

安装 openssh

pkg install openssh

启动 sshd

  安装完成后,sshd 服务默认没有启动,所以得手动启动下:

sshd

配置密码

passwd

查看用户名和 IP 地址

$ whoami
u0_a152
$ ifconfig
192.168.0.100

电脑安装 Filezilla

sudo apt-get install filezilla

示例

Termux 启动后自动执行 sshd 命令

  每次开启 Termux 都要重新输入一次 sshd 命令,很麻烦,所以可以在 .zshrc 文件最后面添加 sshd,这样每次 Termux 启动后都可以自动执行 sshd 命令了。

Filezilla 连接 Termux

  点击 文件站点管理,或者快捷键 CTRL + S,然后点击 新站点,将信息填入下表:

  注意:端口选择 8022,协议选择 SFTP。

搭建 Hexo 博客

  Hexo 是一款基于 Node.js 的静态博客框架,依赖少易于安装使用,可以方便的生成静态网页托管在 GitHub 和 Coding 上,是搭建博客的首选框架。

安装 Git

pkg install git

安装 Node.js

pkg install nodejs

安装 Hexo

npm install hexo-cli -g

部署 Hexo 博客环境

  建立一个目录,然后在这个目录下初始化 Hexo 环境:

mkdir hexoblog  #创建一个目录
cd hexoblog     #进入 hexoblog 目录
hexo init       #初始化 Hexo 环境
hexo g          #生成静态文件
hexo s          #启动 Hexo

浏览网站

  在浏览器地址栏中输入 192.168.0.100:4000 进入网站,其中 Hexo 默认开启 4000 端口。

示例

内网穿透

  当我有了 Termux 这样的神器后,就考虑到这样一个问题:我如何远程管理它?这时候,就是 cpolar 内网穿透工具出场的时候了。它让我可以在任何地点,管理我的 Termux 环境容器。

安装 dnsutils 工具包

apt install dnsutils

  它会创建一个 DNS 解析文件,路径在 $PREFIX/etc/resolv.conf,里面有配置 DNS 解析服务器地址(默认已经加了8.8.8.8)

下载 cpolar 客户端

curl -O -L https://www.cpolar.com/static/downloads/cpolar-stable-linux-arm.zip
unzip cpolar-stable-linux-arm.zip

认证

访问官网

  访问官网,注册 cpolar 帐号。

登录后台

  登录 cpolar 后台仪表盘,验证菜单里,复制你的 token 值。

认证 token

  在 Termux 终端输入自己的 token:

./cpolar authtoken NjdjZTk5YmYtN2Q4Ny00NTUzLTg0MjMtMzM1YjM2NGQyMWJl

内网穿透举例

映射 8080 端口到外网

./cpolar http 8080

外网远程 ssh 控制

./cpolar tcp 22

更多

  请参阅 cpolar 官网的在线文档及使用教程案例。

安装 Linux 发行版

  完全的 Linux 必然会比单独的 Termux 好用很多,而且可以查阅的资料和软件包更全。

安装 Atilo

echo "deb [trusted=yes] https://yadominjinta.github.io/files/ termux    extras" >> $PREFIX/etc/apt/sources.list
pkg in atilo-cn

使用方法

atilo [命令] [参数]
Atilo 是一个用来帮助你在 Termux 上安装不同的 GNU/Linux 发行版的 shell 脚本。

命令:
list             列出可用的和已安装的发行版
remove           移除已安装的发行版
install          安装发行版
help             帮助

支持的发行版

列表

发行版 aarch64 arm x86_64 i686
Arch × ×
Alpine
Debian
Fedora ×
Kali
Ubuntu Cosmic
Ubuntu LTS

备注

  1. Fedora 29 没有提供 arm 架构的镜像,请运行 dnf update --releasever=29 来升级。

启动 Linux 发行版

  输入 start + Linux 发行版名字,比如 startubuntustartdebianstartkali

示例

$ atilo list
[ 以下为可用的Linux ]
alpine
arch
debian
fedora
kali
ubuntu
ubuntults
$ atilo install kali
$ startkali

图形界面

  博主没有这个需求,但为了文章的完整,还是附上其他博主的文章链接

一些实用的命令

htop

  htop 是 Linux 系统中的一个互动的进程查看器。与传统的 top 相比,htop 更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。

安装

pkg install htop

示例

ranger

  一个 Vim 化操作的终端文件管理器。

安装

pkg install ranger

配置

  点击链接查看本站文章。

示例

thefuck

  一款自动帮你纠错并提示你期望输入的正确的命令的命令行神器。

安装

pip3 install thefuck

配置

#编辑bashrc配置文件
vim ~/.bashrc
#在文件尾加入一行给thefuck取别名fuck
eval "$(thefuck --alias fuck)"
#使生效
source ~/.bashrc

示例

总结

  Termux,真乃神器也。


   转载规则


《Termux 学习笔记》 Huang Pan 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录