Usando Terminal no Android - Termux

Caros, uma dica rápida para quem gosta de linha de comando.

Há algum tempo descobri o Termux, que é uma pequena distribuição de pacotes Linux e um terminal. Funções mais avançadas que eu não falarei muito aqui incluem utilização de aplicativos gráficos. Também é possível instalar uma distribuição completa, como o Ubuntu ou o Arch, dentro do Termux e rodar aplicativos gráficos dessas distribuições dentro do Termux.

Instalação do F-Droid e Termux

Primeiramente, vocês deve-se instalar o aplicativo F-Droid v0.118.0 no Android (basta ir no site do F-Droid depois de baixar o arquivo .apk pelo navegador de internet. O F-Droid é uma loja de distribuição de softwares, um repositório. Os aplicativos de lá são muito legais e eu uso vários. São grátis e muitos sem anúncios.

Após instalar o F-Droid, abra o aplicativo e instale o pacote Termux.

Não baixar o Termux pela Play Store pois a versão da PlayStore é defasada e não é mais atualizada, e tem vários bugs. Se instalado da PlayStore e encontrar erros, remova o aplicativo e instale-o via F-Droid. Essa operação irá remover todos os arquivos personalizados do Termux antigo instalado pela PlayStore!

Outro pacote que pode ser instalado via F-Droid interessante inclui Termux:API, que tem várias ferramentas para se comunicar com o sistema Android, abrir arquivos nos aplicativos do Android, puxar as informações dos sensores do celular via linha de comando (em JSON), setar papel de parede, etc.

Há o pacote Termux:Widget que traz um widget pro Android com atalhos para acessar e rodar scripts que estiverem em ~/.shortcuts, mas não recomendo pois esse widget fez meu sistema Android ficar lento e os scripts em ~/.shortcuts devem ser personalizados pois, por exemplo, executam diretamente sem a possibilidade de adicionar argumentos adicionais, a não ser que sejam personalizados…

Terminal do Termux

O aplicativo principal do Termux é o seu terminal. Ele é um terminal básico com algumas teclas especiais e usa o teclado padrão do sistema Android, também. Para copiar e colar, basta pressionar e segurar para selecionar as linhas e clicar em copiar. Para colar, basta pressionar em qualquer lugar o terminal do Termux e clicar em colar (colará onde estiver o cursor de texto).

Para acessar e criar novas sessões do Termux, varrer com o dedo da margem da esquerda para direita, onde abrirá uma aba com as sessões de shell do Termux.

Acesso de armazenamento

Uma vez instalado o Termux, rode o comando termux-setup-storage para configuração de compartilhamento de espaço de disco do aplicativo com o do usuário do sistema do Android e vice-versa. Esse comando criará uma pasta ~/storage e simlinks para /storage/emulated/0 que terão acesso aos seus documentos do Android pelos gerenciadores de arquivos.

A maneira que o Android foi desenvolvido proíbe o usuário de se tornar raiz a não ser que o dispositivo (o celular ou tablet) tenha o bootloader desbloqueado e uma imagem personalizada do Android e compatível com seu celular instalada, procedimento chamado de device rooting. Geralmente imagens de sistema do Android e dicas estão no site do XDA.

Para utilização simples do Termux, não é necessário ser raiz do sistema e não é minha intenção explicar como se tornar raiz do sistema, procedimento arriscadíssimo!! Outra coisa, não se pode rootar o celular com as ferramentas do Termux, porém caso o usuário tenha o aparelho rootado, há um repositório especial no Termux com ferramentas extras, somente úteis nesses aparelhos de casos especiais.

De qualquer forma, é necessário entender que o sistema do Android tem um esquema de permissões que impossibilita que o usuário acesse diretamente os arquivos do Termux pela interface GUI do Android sem antes rodar o comando termux-setup-storage. Se esse comando não estiver disponível, instale o pacote termux-tools (ver adiante para mais informações).

O usuário poderá acessar os arquivos do celular com um simples cd ~/storage no Termux. Para acessar os arquivos do Termux pelo Gerenciador de Arquivos, eu utilizo o gerenciador de arquivos padrão do meu celular do sistema Adroid que, se configurado corretamente, mostra um atalho para o armazenamento do Termux. Se você tiver um outro gerenciador de arquivos poderoso, o acesso deve estar desbloqueado e acessível depois de rodar termux-setup-storage.

As peculiaridades da organização do sistema de arquivos do Termux e do Android vou deixar para o usuário explorar e pesquisar mais a respeito, se desejar.

Ferramentas de sistema

O Termux é uma distribuição completa. Ele não utiliza pacotes do sistema Android e tem uma cópia de todas as ferramentas básicas do GNU em seu diretório. O bash vem instalado por padrão, assim, a maioria dos script *poderão rodar no Termux sem problemas.

Os binários do Termux estão localizados em $PREFIX/bin (por exemplo: /data/data/com.termux/files/usr/bin). Há alguns binários do Android em /system/bin que podem ser utilizados somente se forem a última opção no seu $PATH, por exemplo o comando ip se encontra nesse diretório no meu Android 8.

Instalação de pacotes

O Termux tem um repositório grande de pacotes derivados do Debian, mas cuidado: não é possível, manualmente, pegar um pacote .deb e instalar no Termux. Este não funcionará por que a estrutura de arquivos com as bibliotecas do Termux são diferentes do Debian, não segue padrão FHS.

Outras diferenças incluem o Termux ser para usuário único e a raíz dos sistema de arquivos do Termux ser armazenada como um aplicativo comum (portanto o usuário tem permissão de escrita por padrão).

Como eu uso bastante a linha de comando, só trouxe meus dotfiles de configuração de shell (.zshrc, .bashrc, .inputrc e tal), gerenciador de arquivos (vifm), editor, texto (vim), cliente de e-mail (mutt), multiplexer (tmux), navegador cli (w3m), conversor de unidades (units) e tudo funcionou super bem!

Instale o pacote termux-tools se ele ainda não estiver instalado pois é muito importante.

O comando para instalação de pacotes é o pkg. Na verdade, pkg usa o apt mas faz balanço de carga dos servidores do Termux e por isso é recomendado pelos desenvolvedores…

Pode-se buscar com pkg search [pacote], instalar com pkg install [pacote..] e desinstalar com pkg uninstall [pacote..].

Para realizar um update nas ferramentas e pacotes do sistema, utilize pkg upgrade.

Alguns pacotes importantes não vem instalado, portanto recomendo instalar pkg install curl wget man bc git python tree ffmpeg busybox termux-tools android-tools zstd xz-utils.

Para ver todos os pacotes disponíveis, rode pkg list-all | less -S.

Binários e compilação de fontes

Vários pacotes oferecem binários prontos para múltiplas arquiteturas, então por exemplo, se precisar de um socket, pode-se baixar o binário websocat para Android ou o toybox e colocá-los no seu $PATH.

Tenho conseguido compilar alguns pacotes pelo código fonte depois de modificar o código fonte.
Por exemplo, muitos arquivos de fonte contém referências duras para /tmp, então a compilação
deverá falhar. Basta modificar, com muito cuidado, essas referências no texto da fonte.

Em scripts de shell, pode-se mudar VAR=/tmp para VAR=$PREFIX/tmp. Nos demais arquivos, depois de descobrir quais arquivos contém referências erradas, pode-se usar sed para modificá-las.
Mas garanto que que algumas fontes são simplesmente impossíveis de serem compiladas dentro do Termux!

Sugiro instalar os seguintes pacotes antes de tentar compilar fonte, (também de acordo com as instruções do desenvolvedor no Termux v0.118.0):

$ pkg install gperf flex bison python python2 cmake automake libtool build-essential binutils cmake ctags

Consegui compilar o dateutils do Hroptatyr.
Outros pacotes que consegui compilar com alguma modificação da fonte foram os compiladores de markdown discount e o [md4c]

Servidores e acesso remoto

O Termux oferece acesso pelo ssh ou dropbear. Eu prefiro usar o servidor do Dropbear que é bem simples de configurar, assim posso acessar todos os meus arquivos do meu laptop na rede interna de casa (para ver o endereço de IP local, uso ifconfig).

Até o tmate está disponível no repositório oficial do Termux, assim poderá acessar seu celular fora da rede doméstica, até por um web browser!

Mudança de shell padrão e dicas para scripts

Algumas shells estão disponíveis nos repositórios do Termux.

Para mudar a shell padrão, simplesmente rode chsh -s [shell] depois de instalados os pacotes necessários.

Consegui rodar todos os meus scripts com quase todas as funções depois de instalar os pacotes necessários.

Além disso, para conseguir rodar seus scripts, atente-se à variável do $PATH, que já deve estar automaticamente configurada para as shells do Termux.

A variável $TMPD é configurada automaticamente pelo Termux e é utilizada pelo bash e outros aplicativos, como o mktemp para criar arquivos temporários no diretório correto. Lembre-se que o sistema do Termux não segue uma hierarquia tradicional e portanto o diretório /tmp não é acessível! Quando for ajustar seus scripts, sempre utilize algo como ${TMPD:-/tmp} ou referência dura /data/data/com.termux/files/usr/tmp

Atente-se também que o caminho de raiz do sistema está na variável $PREFIX.

Acessar clipboard do Android e abrir arquivos nos aplicativos do Android

Para definir o que está na área de transferência do Android, use o comando termux-clipboard-set, como por exemplo echo "Exemplo de text" | termux-clipboard-set.

Já para abrir arquivos nos aplicativos do Android, é necessário configurar antes o arquivo do Termux. Na versão v0.118.0 o desenvolvedor do Termux desabilitou uma propriedade por motivos de segurança. Assim, para conseguirmos abrir documentos de texto, fotos ou vídeos pelo terminal do termux, precisamos antes reabilitar essa propriedade no arquivo de configuração ~/.termux/termux.properties. Basta adicionar a opção allow-external-apps=true nesse arquivo e recarregar a sessão do Termux com termux-reload-settings.

Assim, poderá abrir uma imagem com o comando termux-open ~/Download/imagem.jpeg no aplicativo padrão do Android!

Para escolher qual aplicativo deve abrir o arquivo, termux-open --choose ~/Download/texto.txt.

Por fim, tenho alguns atalhos no meu .bashrc para lidar melhor com algumas funções do Termux:

# ~/.bashrc

#Android Termux
alias open=termux-open
alias o=open
function O() { termux-open --content-type="$(file --mime-type -b "$1")" "$1" ;} #abre arquivos sem extensão
alias oc='open --choose'
alias send='open --send'
alias s=send
alias S='termux-share' #file or stdin
alias gps='termux-location -p gps'
alias D='termux-download' #url

Recursos e Ajuda

Redit
Wiki
GitHub
Canais do YouTube com vídeos de Termux:
\https://m.youtube.com/watch?v=br8CZDSsTmg
\https://m.youtube.com/watch?v=oWswz67Tjgs

8 curtidas

Me tira uma dúvida (é legítima mesmo que muitos usem essa pergunta de forma pejorativa). Qual a utilidade de um terminal para um celular android ? Quais as vantagens para um usuário em ter um terminal no celular ou tablet ?

1 curtida

Eu consigo substituir vários aplicativos gráficos por um simples script escrito em Shell.
Por exemplo, consigo a cotação do dólar, do bitcoin, do índice de inflação (ipca) e taxa de renda do tesouro nacional, enfim. Tenho um script que busca CEPs (mão na roda!) e outro que puxa as notícias do antagonista (scraper) a cada 6 minutos, então eu nem preciso acessar mais o site cheio de propagandas…

Outros aplicativos que eu não preciso de interface gráfica são um conversor de unidades (pacote units). Também consigo baixar os vídeos do YouTube com umas funções em shell que tenho e daí assisto na tela do celular Android depois, mesmo sem internet.

Uso a calculadora da Shell muito, acho muito melhor do que calculadoras gráficas… Além do que, para anotações, nada melhor do que usar o vim no celular, é ótimo!

Além disso, com o tmate eu consigo acessar os arquivos do celular de qualquer local, ou com ssh ou dropbear na rede local… Transferir arquivos com scp (no laptop) com o celular me facilitou muito a vida!

Agora, quem é estudante de computação vai adorar isso… Você pode montar e usar um ambiente gráfico de Linux completo (como Ubuntu) e usar para estudar programação, mesmo sem ter um computador!

Existe um pacote para Apple iOS que permite a mesma coisa, mas não estou por dentro.

3 curtidas

O termux é uma mão na roda mesmo, uso bastante o SSH no android.

Mas uma coisa que faz falta e acho que não tem como fazer, é abrir apps pelo terminal via ssh.

1 curtida

Se você tiver um servidor de X, tem como sim… Tem vários tutoriais na internet que eles instalam, mas to meio por fora porque ainda não me fez falta… hehe
Mas é tipo, dá para usar o celular velho como um servidorsinho.

:wave:t2:

Excelente tópico e irei aproveitar para fazer um exibicionismo:

Samsung Tab S5e, meu computador principal :blush:

Android is a Linux Distro!

:vulcan_salute:t2:

4 curtidas

Parabéns, bem dahora seu Termux!

Se o Termux ficar em segundo plano nessas versões mais novas do Android, pode ficar lento ou até ser morto.

A primeira dica para não deixar a CPU dormir é rodar termux-lock.

Tem umas dicas aqui para deixar o Termux vivo e rodando bem, se necessário (como desativar funções de economia de bateria e deixar o Tablet ou celular ligado na tomada).

Versão Android 12 é um problema. Tem um matador de aplicativos de segundo plano muito voraz e pode até mesmo matar um aplicativo que use muita CPU em primeiro plano!

Parece que no Android 13 é possível desabilitar esse ghost process killer.


3 curtidas

Sério, o [anon6385769] fez a bíblia do Termux nesse tópico. Muito obrigado pelo conhecimento,

1 curtida

Eu uso o Termux há tempos já! (se não me engano, desde que eu tive um Galaxy S4)
É praticamente um terminal Linux completo na palma da mão.
Trabalho como técnico de informática, mas também com redes em muitas situações, e para isso eu uso muitos aplicativos pelo celular.
Também resolvo muitos problemas de rede em CFTV, e nesses casos, é imprescindível o terminal.
Uso desde os gloriosos Tcpdump/Tshark (uso bastante) até o John the Ripper. Tem muitos app que eu mesmo compilei no Termux porque não tinham nos repositórios do mesmo.
Os programas de rede são, de longe os que mais uso, mas faço várias outras coisas nele. Um exemplo recente foi usar OCR pelo Termux, para extrair texto de imagens.
Então, pra quem perguntou porque usar terminal no Android, está aí minha resposta. :wink:

1 curtida

Eu não faço ideia do que vou fazer com um terminal linux no meu celular, mas achei a ideia maravilhosa e já instalei

2 curtidas