前面几章我们聊了设备、环境、提问和更舒适地写代码。但如果你想真正"拥有"一台服务器、把服务跑在云端,或者只是想在一个干净的类 Unix 系统里愉快地折腾,linux 几乎是绕不开的一课。

先认识终端

linux 的世界里,绝大多数操作都发生在终端(Terminal)里。打开终端后,你会看到一个光标在闪烁,它等着你输入命令。每条命令通常长这样:

命令 参数1 参数2 ...

比如 ls -l /home 表示"以列表形式(-l)列出 /home 目录下的内容"。

文件与目录

linux 里"一切皆文件",理解目录结构是最优先的事。

  • pwd:打印当前所在目录(Print Working Directory)。当你不知道自己在哪时,先敲它。
  • ls:列出当前目录内容。常用 ls -l(详细列表)和 ls -a(含隐藏文件,隐藏文件以 . 开头)。
  • cd 目录:进入某个目录。cd .. 回到上一级,cd ~ 回到家目录,cd - 回到上一次所在目录。
  • mkdir 名字:新建目录(Make Directory)。加 -p 可一次性创建多级目录,如 mkdir -p a/b/c
  • touch 文件名:新建一个空文件,或更新已有文件的时间戳。
  • cp 源 目标:复制文件或目录(复制目录需加 -r,表示递归)。
  • mv 源 目标:移动文件,也常用来重命名(比如 mv old.txt new.txt)。
  • rm 文件:删除文件。删除目录需加 -rrm -rf 目录 会强制递归删除且不询问。

查看与编辑文件

  • cat 文件:一次性把文件内容全部打印到屏幕上,适合短文件。
  • less 文件:分页查看文件,适合长文件。用 空格 翻页,q 退出。
  • head -n 10 文件 / tail -n 10 文件:只看文件开头 / 结尾的若干行。tail -f 文件 还能实时跟踪文件新增内容,看日志时非常有用。
  • 编辑文件可以用我们之前讲过的 Vim(输入 vim 文件名 即可),或者更简单的 nano(对新手友好,界面底部有操作提示)。

权限

linux 是个多用户系统,每个文件和目录都有"谁能看、谁能改、谁能执行"的权限。

ls -l 看到的最左边一串字符,形如 drwxr-xr-x-rw-r--r--,就描述了权限。简单理解:

  • 第一位 d 表示目录,- 表示普通文件;
  • 后面九位分成三组,分别是"文件拥有者 / 同组用户 / 其他所有人"的权限,r 读、w 写、x 执行。

修改权限常用 chmod,例如:

chmod +x script.sh   # 给所有人添加执行权限
chmod 755 script.sh  # 用数字表示:拥有者可读写执行,其他人可读执行

一般情况下你不需要深究权限位的计算,记住"想让脚本能跑就 chmod +x“就够了。

安装软件

在 linux 上装软件,通常不用去浏览器下载安装包,而是用"包管理器"一行命令搞定。不同发行版命令不同:

  • Debian / Ubuntu 系:sudo apt update 更新软件源,然后 sudo apt install 软件名
  • CentOS / Rocky 系:sudo yum install 软件名sudo dnf install 软件名
  • Arch 系:sudo pacman -S 软件名

sudo 表示"以管理员(root)身份执行”,涉及系统级改动时都需要它,使用前要输入你的密码,并且也需要你有 sudo 权限才能执行。

进程与后台

  • ps aux:查看当前运行的进程列表。配合管道 ps aux | grep 进程名 可过滤出你关心的进程。
  • top / htop / btop:实时查看系统资源占用(CPU、内存)和进程,按 q 退出。
  • kill 进程号:结束某个进程。强制结束用 kill -9 进程号

其他命令

  • clear:清屏(快捷键 ctrl+l)。
  • echo 文本:把文本打印出来,常用来查看变量,如 echo $PATH
  • wget 网址 / curl 网址:从网络下载文件或请求接口。
  • find 路径 -name "文件名":在目录里按名字找文件。不过对于查找更推荐使用locate指令,locate会时先做一个索引,查询速度比find快很多。
  • |(管道):把前一个命令的输出,作为后一个命令的输入,例如 ls -l | grep log 只显示含 “log” 的行。
  • > / >>:重定向输出,把命令结果写进文件。> 覆盖,>> 追加。