↓内容,由Ai撰写而成,仅作阅读分享!
------
一个Windows用户的命令行漂流记
写在前面
如果你和我一样,从小在Windows的图形界面里长大,习惯了鼠标点击、拖拽、双击安装,那么第一次打开Termux的时候,大概率会对着那个黑漆漆的屏幕发呆三秒钟——然后发现连vim都没有。
这篇文章不是一本正经的技术文档,而是我作为一个“Linux小白”的真实学习笔记。我会把踩过的坑、搞不懂的概念、终于搞懂之后的狂喜,都原原本本地写下来。如果你也在尝试用手机学习Linux,希望能给你一点陪伴和启发。
---
一、Linux是什么?——从“一个人的假期项目”说起
1.1 1991年的那个芬兰大学生
1991年,芬兰赫尔辛基大学有个21岁的学生叫林纳斯·托瓦兹。他觉得当时的教学操作系统Minix不够好用,想自己写一个。于是他花了好几个月,写出了Linux内核的第一版。
是的,Linux一开始只是一个人的假期项目。
他把代码放到了互联网上,说:“嘿,朋友们,这是我写的一个小东西,你们可以免费使用,也可以修改它。”然后,全世界的程序员蜂拥而至。今天,Linux内核有超过2000万行代码,贡献者来自全球各地的大小公司和个人。
1.2 Linux到底是个什么“东西”?
你可能听过“Linux是一个操作系统”。严格来说,Linux只是操作系统的内核——内核是负责管理硬件、调度程序、分配内存的那个核心部分。
而我们平时说的“Linux系统”,其实是Linux内核 + GNU工具集 + 各种应用软件的合体。很多人喜欢叫它GNU/Linux。
这就像一辆汽车:内核是发动机,GNU工具(比如bash、grep、ls)是方向盘和刹车,图形界面是车身装饰。缺了哪一样都不完整。
1.3 为什么Linux如此重要?
你今天可能根本没意识到自己在用Linux:
· 全球90%以上的云服务器跑的是Linux
· Android手机的系统内核就是Linux
· 超级计算机TOP500里,100% 运行Linux
· 你的路由器、智能电视、汽车中控,大概率也是Linux
Linux是开源软件的旗帜。它的源代码对所有人开放,你可以自由使用、修改、分发。这造就了一个庞大的生态:从嵌入式设备到巨型数据中心,到处都有它的影子。
1.4 发行版:Linux的“各种口味”
因为Linux是开源的,任何人都可以拿内核加上自己的一套工具,打包成一个发行版。常见的发行版有:
· Ubuntu:最友好的新手发行版
· Debian:稳定著称,Termux的包管理就深受其影响
· CentOS/RHEL:企业服务器常用
· Arch Linux:极简、滚动更新,适合折腾
而在我们手机上,Termux算是一个特殊的“发行版”——它运行在Android之上,提供了一个迷你的Linux环境。
---
二、Termux是什么?——口袋里的Linux实验室
2.1 Termux不是虚拟机
我第一次听说Termux时,以为它类似VirtualBox,在手机上跑一个完整的Linux虚拟机。后来才知道,Termux不是虚拟机,也不是模拟器。
Termux是一个运行在Android上的终端模拟器,外加一套专门为Android编译的Linux软件包。它利用Android的Linux内核(是的,Android内核就是Linux),通过NDK(Native Development Kit)把常用的GNU工具移植到了手机上。
你可以这样理解:
· Android = 一辆自动挡汽车(提供发动机和基础功能)
· Termux = 在仪表盘上开了一个洞,直接给你一个方向盘和手动挡
2.2 Termux的“限制”与“巧妙”
因为Termux运行在普通App的沙盒里,没有root权限,所以它和真正的Linux电脑相比有不少限制:
方面 Termux 电脑Linux
用户权限 普通App权限,无root 完整root/sudo
文件系统 只能访问自己的私有目录 整个文件系统
硬件访问 受Android限制(不能直接驱动硬件) 完整驱动支持
后台运行 会被系统杀进程 可以常驻服务
C库 Bionic(Android的C库) glibc(GNU C库)
但Termux也有自己的“黑科技”:
· 通过termux-api调用手机传感器:可以获取GPS、通知、相机等
· 通过proot-distro运行完整发行版:在不需要root的情况下,模拟出一个完整的Ubuntu/Debian文件系统
· 配合VNC运行图形界面:甚至可以跑轻量级桌面环境
2.3 我的第一个Termux命令
下载Termux(从F-Droid或GitHub,不要从Google Play,旧版已不再维护),打开。
第一件事是更新包管理器:
```bash
pkg update
pkg upgrade
```
然后你可能会想试试ls、cd这些命令,它们都能用。但当你输入vi时,屏幕出现了:
```
The program vi is not installed. Install it by executing:
pkg install busybox
pkg install vim
...
```
啊这……连vi都没有?原来Termux为了精简,只装了最基础的包,编辑器需要自己安装。
这正是Linux世界的常态:给你一个最简系统,然后让你自己组装工具。
---
三、编辑器之战:nano vs vim
3.1 nano:新手最好的朋友
nano是Termux默认安装的编辑器(如果你选了最小安装,可能也没有,那就pkg install nano)。
nano的设计哲学是“打开就能用”。你会看到屏幕底部有一排快捷键提示:
```
^G 获取帮助 ^O 写入 ^W 搜索 ^K 剪切 ^X 退出
```
^X表示Ctrl+X,按Ctrl+X就会退出。就这么简单。
用nano写一个Python脚本
```bash
nano hello.py
```
输入:
```python
print("Hello from Termux!")
```
按Ctrl+O保存,按Ctrl+X退出。然后运行:
```bash
python hello.py
```
这就是nano的全部:你不需要学习任何额外知识,就能开始写文件。适合快速修改配置、写短小的脚本。
3.2 vim:一座值得攀登的山
vim(Vi IMproved)是经典编辑器vi的增强版。它的学习曲线陡峭得像悬崖,但一旦翻过去,你的编辑效率会成倍提升。
安装vim
```bash
pkg install vim
```
验证安装:
```bash
vim --version
```
你会看到一长串输出,其中有很多+和-,比如+python、-clipboard。不用担心,那些是功能开关,基础使用无需关心。
vim的核心:模式
vim和普通编辑器的最大区别是模式:
· 普通模式:不能打字,只能输入命令(移动光标、删除、复制等)
· 插入模式:可以打字,和普通编辑器一样
· 可视模式:选中文本
· 命令行模式:输入:开头的命令(保存、退出、搜索等)
刚打开vim时,你处于普通模式。想输入文字?按i进入插入模式。想执行命令?按Esc回到普通模式。
新手最常见的困惑是:“我怎么打不了字?”——因为你没按i。
最基础的vim操作(救命手册)
你想要的 按什么
进入插入模式,在光标前打字 i
退出插入模式 Esc
保存文件 :w + 回车
退出vim :q + 回车
保存并退出 :wq 或 ZZ(大写)
不保存强制退出 :q!
删除当前行 dd
复制当前行 yy
粘贴 p
撤销 u
搜索关键词 /关键词 + 回车,按n下一个
替换所有 :%s/旧/新/g
一个完整示例
1. 打开文件:vim test.txt
2. 按i,输入“Hello vim”
3. 按Esc,输入dd——诶,整行删掉了?
4. 按u——撤销,字回来了。
5. 按yy复制行,按p粘贴出一行副本。
6. 按:进入命令行,输入wq保存退出。
为什么要学vim?
vim的学习成本确实高,但收益也大:
· 手不离键盘:所有操作都在主键区,不需要移动右手去按方向键或鼠标
· 组合命令:dw删一个词,ci"删引号里内容并进入插入模式,gg=G全文格式化……这些复合操作非常高效
· 无处不在:ssh登录到任何一台服务器,几乎都有vi或vim;VS Code等编辑器也有vim模拟插件
· 极致轻量:vim本身只有几MB,却能完成IDE级别的文本操作(通过插件)
配置vim:让它更好用
默认vim对新手不太友好(没有行号、没有语法高亮等)。你可以创建一个配置文件~/.vimrc:
```bash
vim ~/.vimrc
```
输入以下内容:
```vim
set number " 显示行号
syntax on " 语法高亮
set tabstop=4 " Tab显示为4空格
set expandtab " Tab自动转空格
set autoindent " 自动缩进
set cursorline " 高亮当前行
set incsearch " 实时搜索
set hlsearch " 高亮搜索结果
set ignorecase " 搜索忽略大小写
```
保存退出。以后再打开vim,这些设置会自动生效。
3.3 nano vs vim:我的选择
场景 推荐
改一行配置 nano(快进快出)
写一个50行以内的小脚本 nano 或 vim 都行
写几百行代码,需要频繁重构 vim
远程服务器上没有nano vim(因为基本都有vi)
你今天只想简单记个笔记 nano
我个人的建议:先用nano解决眼前需求,同时每天花15分钟跑一遍vimtutor(Termux里直接输入vimtutor),一两周后你就会发现,自己已经离不开vim了。
---
四、在Termux里写C语言和Python
4.1 安装编译工具
Termux可以安装完整的C/C++开发环境:
```bash
pkg install clang # C/C++编译器
pkg install make # 构建工具
pkg install python # Python解释器
```
验证:
```bash
clang --version
python --version
```
4.2 第一个C程序
```bash
vim hello.c
```
输入:
```c
#include <stdio.h>
int main() {
printf("Hello from C!\n");
return 0;
}
```
保存退出,编译运行:
```bash
clang hello.c -o hello
./hello
```
看到“Hello from C!”的那一刻,你会觉得:啊,原来在手机上写C语言这么简单。
4.3 第一个Python程序
```bash
python
>>> print("Hello Python")
>>> exit()
```
或者写脚本:
```bash
nano hello.py
```
```python
import sys
print(f"Hello, Termux on {sys.platform}")
```
```bash
python hello.py
```
Python和C的关系很有意思:Python解释器是用C写的。你写print("hello"),背后Python解释器会调用C语言的printf,printf再通过Linux系统调用把字符输出到终端。
4.4 关于“系统调用”的一点延伸
当你写C程序调用printf,或者Python调用print,最终都会经过一层层封装,到达Linux内核的write系统调用。系统调用是用户程序请求内核服务的唯一接口。
可以用strace追踪这个过程:
```bash
pkg install strace
strace ./hello
```
你会看到密密麻麻的write、open、read等系统调用。这就是用户空间和内核空间的边界。
---
五、踩坑记录:那些让我抓狂的问题
5.1 “pkg update失败,repository is disabled”
有一段时间,我运行pkg update总是报错:
```
N: Metadata integrity can't be verified, repository is disabled now.
E: Failed to fetch ... Clearsigned file isn't valid
```
原因是Termux的默认镜像源有时不稳定,或者签名验证失败。解决方法很简单:
```bash
termux-change-repo
```
方向键选择Main repository,空格选中,然后在镜像列表里选择国内的源(比如清华、中科大镜像)。之后pkg update就正常了。
5.2 “为什么我的Tab键不能补全?”
Termux默认的Tab补全很弱,可以安装bash-completion:
```bash
pkg install bash-completion
```
然后编辑~/.bashrc,添加:
```bash
if [ -f /data/data/com.termux/files/usr/share/bash-completion/bash_completion ]; then
source /data/data/com.termux/files/usr/share/bash-completion/bash_completion
fi
```
重启Termux,Tab键会变得强大很多。
5.3 “怎么访问手机相册里的文件?”
Termux默认只能访问自己的数据目录。要访问手机共享存储(比如/sdcard/DCIM),先运行:
```bash
termux-setup-storage
```
系统会弹出一个权限请求,同意后,Termux会在~/storage下创建几个符号链接,指向相册、下载等目录。
5.4 “vim里怎么粘贴外部复制的内容?”
Termux的vim默认不带剪贴板支持(-clipboard)。但你可以这样:
· 在插入模式下,长按Termux窗口,选择“粘贴”
· 或者用Termux的额外按键行(Ctrl+Alt等)里的“粘贴”按钮
如果你经常需要复制粘贴,可以考虑用neovim(pkg install neovim),它对剪贴板支持更好。
---
六、进阶:用PRoot运行完整的Ubuntu
Termux虽然好用,但受限于Bionic C库和文件系统布局,有些软件(比如需要glibc的)无法直接运行。这时候可以用PRoot。
PRoot是一个用户空间的chroot实现,不需要root权限,就能在Termux里模拟出一个完整的Linux根文件系统。
6.1 安装proot-distro
```bash
pkg install proot-distro
```
6.2 安装Ubuntu
```bash
proot-distro install ubuntu
```
下载大概几百MB,之后登录:
```bash
proot-distro login ubuntu
```
你会看到提示符变成了root@localhost:~#——恭喜,你现在在一个“真实”的Ubuntu环境里,可以用apt装各种软件了。
6.3 在Ubuntu里安装gcc
```bash
apt update
apt install gcc
```
然后编译C程序,和在真正的Linux电脑上完全一样。
6.4 退出Ubuntu
输入exit即可回到Termux。
PRoot的妙处在于:你可以在Android手机上跑apt、systemctl(虽然systemd不能用)、甚至编译一些原本不支持Bionic的软件。性能会有所下降(因为每个文件操作都要经过一层转发),但对于学习Linux来说,已经绰绰有余。
---
七、Linux的“前世今生”再补充
7.1 GNU:自由软件的基石
Linux内核诞生之前,理查德·斯托曼在1983年发起了GNU项目,目标是创建一个完全自由的操作系统。到1991年,GNU已经完成了几乎所有的用户空间工具(bash、gcc、emacs等),唯独缺少一个自由的内核。
Linux内核填补了这个空缺。所以“Linux系统”严格来说应该是GNU/Linux系统。
7.2 开源许可证的哲学
Linux内核使用GPL(GNU通用公共许可证)。它的核心要求是:如果你分发修改过的Linux内核,你必须也公开你的源代码。
这种“传染性”保证了Linux始终是自由的。但也正是这种自由度,让无数公司和个人能够基于Linux开发产品(比如Android),而不用担心法律问题。
7.3 Linux vs Unix
很多教程说“Linux是类Unix系统”。Unix是上世纪70年代贝尔实验室开发的操作系统,后来商业化了,价格昂贵。Linux从头重写了内核,但遵循了Unix的设计哲学:
· 一切皆文件
· 小工具组合完成复杂任务
· 文本流作为通用接口
这也是为什么你在Linux里看到/etc、/usr、/home这些目录结构——它们继承自Unix。
---
八、写在最后:从用户到创造者的转变
学习Linux,其实不仅仅是学一个操作系统。它更像是一种思维方式的转变:
· 在Windows里,你是软件的使用者,被图形界面引导着点来点去。
· 在Linux里,你逐渐学会用命令精确表达意图,把重复劳动写成脚本,用文本配置文件管理一切。
当你第一次用grep从几千行日志里找出错误信息,第一次用awk处理数据,第一次写一个for循环批量重命名文件,你会发现:原来电脑可以这样听话。
Termux在手机上提供了一个低门槛的入口。你不需要买一台新电脑装Linux,也不需要折腾双系统。只要有一部Android手机,随时随地都可以练习。
从pkg update开始,到学会vim,到编译C程序,到用PRoot跑Ubuntu……我还在路上。
如果你也在这条路上,遇到了什么坑、搞懂了什么新东西,欢迎一起交流。😜
Happy Hacking!
-----
(全文约6800字,记录了作者从零开始学习Termux和Linux的过程。文中所有命令均在Termux中实测通过。如果有错误或改进建议,欢迎指正。)
延伸阅读:
Linux下的编辑双雄
Linux系统概述
为什么中国很少有人使用linux桌面?
Linux 为何永远无法走向主流?
要说系统怎么整漂亮,还得是 Linux!
网友的 Linux 桌面和我的 Linux 桌面!