Termux使用日志

安装配置

Termux是什么
Termux 是运行在 Android 上的 terminal。不需要root,运行于内部存储(不在SD卡上)。

自带了一个包管理器,可以安装许多现代化的开发和系统维护工具。

更换清华镜像

  1. 可视化界面更换

在较新版的 Termux 中,官方提供了图形界面(TUI)来半自动替换镜像,推荐使用该种方式以规避其他风险。 在 Termux 中执行如下命令

termux-change-repo

在图形界面引导下,使用自带方向键可上下移动。
第一步使用空格选择需要更换的仓库,之后在第二步选择 TUNA/BFSU 镜像源。确认无误后回车,镜像源会自动完成更换。

  1. 命令行替换

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

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

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

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

安装基础工具

1
2
pkg update
pkg install vim curl wget git tree -y

更改配色和激活访问SD卡权限

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

使用简介

路径
安卓的data/data是所有程序存储数据的地方,不可以挂载,某某刷机的程序备份就备份程序和那里,如果需要备份某个程序,比如百度输入法,就去data/data文件夹找带着Baidu和input字样的文件夹然后复制出来,在更换系统或重装软件后再把这个文件夹复制回去就可以达到还原以前数据的效果,不过此操作需要你的手机已经ROOT。

Termux里这个路径代表data/data路径
cd /data/data/com.termux/files/home/storage/shared

建立符号链接与删除

1
2
3
4
5
6
7
8
ln -s /data/data/com.termux/files/home/storage/shared/tencent/QQfile_recv QQ

rm -i symlinkfile1 //删除符号文件
rm -i symlinkfile2 symlinkfile3
# rm -ri symlinkdir/ //强制删除源文件夹

# unlink symlinkfile

git的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

//第一次上传仓库
1. cd进入你放项目文件的地址
2. 输入git init 在当前项目的目录中生成本地的git管理
2. 设置签名
仓库级别
git config user.name cc
git config user.email 2288246482@qq.com
系统用户级别
git config --global user.name cc
git config --global user.email 2288246482@qq.com

3. 输入git add . 这个是将项目上所有的文件添加到仓库中的意思,如果想添加某个特定的文件,只需把.换成这个特定的文件名即可。

如果报错git: 报错unsafe repository输入
git config --global --add safe.directory "*"

4. 输入git commit -m "first commit",表示你对这次提交的注释,双引号里面的内容可以根据个人的需要
5. 输入git remote add origin https://自己的仓库url地址(上面有说到) 将本地的仓库关联到github上。
6. 输入git push -u origin master,这是把代码上传到github仓库的意思。

// 再次上传代码
1. git add . 提交暂存区
2. git commit -m "first commit" //提交本地库
3. git push -u origin master //提交远程库

// 查看状态
git status 查看工作区,缓存区状态
1.红色字没有添加到缓存区
2.绿字添加到缓存区,还没提交(工作区,缓存区内容一至)

// 版本控制
1. git log 查看历史版本
1. HEAD是指针,指向当前的版本
2. git log --pretty=oneline 一行内显示历史版本
3. git reflog 查看历史记录,显示移动步数

2. 版本前进或后退
1. git reset --hard hash索引值 //版本更改,可以只写一小部分索引值
--soft 仅仅只在本地库移动HEAD指针 缓存区会变绿是因为本地库变了,暂存区没变所以不一样了。
--mixed 在本地库移动HEAD指针,并且会重置缓存区 缓存区变红,因为工作区没变,但本地库和暂存区版本后退了。
--hard 在本地库移动HEAD指针,,重置缓存区和工作区1

// 比较文件差异
git diff //将所有文件与它的本地库比较
git diff HEAD //工作区与本地库当前版本比较

// 分支管理
1. git branch -v //查看所有分支
2. git branch xx //创建分支
3. git checkout xx //切换分支
4. 合并分支
1. 切换到增加内容的分支上
2. git merge 分支名
3. 解决合并冲突
1. 在文件里删除特殊符号,并手动修改
2. git add xxx.txt
3. git commit -m"日志信息" (不能带具体文件名)

// 远程库操作
1. push操作
1. git remote -v //查看所有地址别名
2. git remote add origin https://github.com/Cheng5696/xuexi.git //新建别名
3. git push origin master //本地库推送到远程库的某分支

2. clone操作
clone自动完成了 1.完整把远程库下载到本地 2.创建origin远程库别名 3.初始化本地库

git clone https://github.com/Cheng5696/xuexi.git //克隆远程库到本地库



  1. git上传流程
    本地库 -> 远程库
    image

其他问题

内存占用
经过这次教训对termux这个手机模拟Linux终端软件有了更深刻认识,之前就被坑过一次今天再次,在同一个地方跌倒,原因是第一次没认识到该软件邪恶的本性。

该软件的安装后的文件,我们无法在没root的手机系统文件管理器上查看,所以对在该软件的home文件里的文件就无法直接操作。我们通过jupyter notebook,可以在手机内存和home两个存储空间之间进行相互基本对文件的操作。这个看起来没啥问题,但实际上有个bug。那就是home占用的空间只会越用越大,删除home里的文件后,其占用的空间不可被释放,这就形成一个死的存储空间,当你新文件写入时,不会覆盖该空间,这就意味着,你手机的存储空间,会被它很快吞噬掉,只要你经常用它,但实际上却白白浪费好多空间。

这个bug,就像是对存储空间分区了,home的只能长不能缩,且用过的删了,也不会将其释放。

具体就是如果你从storage导入文件到home,如果这个文件只是几十M,甚至几G。那么恭喜你,你手机文件可用的空间又少了这么多,就算你删除home里的文件,结果还是一样,而且home的空间也没腾出来,那部分空间就这样活活被吃掉。具体办法就是卸载重新安装,搭建。

因此,为了避免空间浪费,最好把工作路径cd,到/storage/downloads来。

另外,我上次出问题,重装记录如下图,还好记着,不然重建时间,以及问题太难搞清和解决。

文件系统

  1. 初始有两个文件夹home usr
  2. 初始home目录下无文件,开启权限后可使用手机内存,会出现一个storage文件夹,这就是手机内存。
  3. 从左往右滑可以使用键盘和创建新的工作区

mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// 1. 安装
pkg install mariadb


// 2. 查看是否安装成功
% mysql --version
mysql Ver 15.1 Distrib 10.6.7-MariaDB, for Android (aarch64) using EditLine wrapper

// 3. 初始化数据库(新版本自动初始化)
mysql_install_db

// 4. 启动mysql服务
% nohup mysqld &
[1] 25595 //进程的PID号
nohup mysqld &nohup: ignoring input and appending output to 'nohup.out'

// 5. 查看进程PID
ps aux|grep mysql

// 6. 停止mysql服务
kill -9 PID
kill -9 `pgrep mysql`

// 7. 登录mysql
mysql -u root
mysql -u $(whoami)

// 8. 切换mysql目录
cd ~/../usr/var/lib/mysql

// 9. mysql内命令
1. select user();
2. quit //退出mysql
3. 修改root密码
mysql -u $(whoami) //登录
use mysql;
set password for 'root'@'localhost' = password('123');
flush privileges; //刷新权限
quit;

// 10.使用root登录
mysql -u root -p

软件安装
大多数现代的类 Unix 操作系统都提供了一种中心化的机制用来搜索和安装软件。软件通常都是存放在存储库中,并通过包的形式进行分发。不同的Linux发行版使用不同的包管理工具,目前主流Linux发行版中主要是apt、yum、dnf 和 pkg 包管理命令为主。

报错解决

无法启动mysql服务

  1. 问题描述
    安装mysql后昨天还能正常启动服务,今天使用nohup mysqld & 打开服务,但是查不到进程。
  2. 解决过程
    1. 使用本来的mysql服务启动方式,mysqld,发现报错。
      image
    2. 在网上找到解决方法。
      1
      2
      cd ~/../usr/var/lib/mysql
      只删除ib_logfile…

shell脚本编程

注意事项

  1. Shell脚本名称命名一般为英文、大写、小写,后缀以.sh
  2. 首行需要 #!/bin/bash 开头
  3. 当shell编写时的系统和执行脚本的的系统不一致,脚本会无法cd到指定目录。
    1
    2
    3
    4
    5
    vim test.sh
    :set ff
    >> fileformat = dos // window下编写为dos,linux执行的格式为unix
    : set ff =unix
    :wq // 保存退出

第一个shell脚本

1
2
3
4
5
6
#!/bin/bash
# This is ower first shell
# by author rivers 2021.09
echo "hello world"

sh hello.sh

脚本打开应用自动执行

$PREFIX/etc/profile.d/
在此目录下的脚本会开机自动执行

安装autosuggestions插件,命令补全

  1. 拷贝项目

    git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

  2. 修改配置文件

    vim ~/.zshrc
    plugins=(git zsh-autosuggestions)

  3. 生效配置

    zsh

使用右方向键补全代码。