>

这篇教程写给完全没有服务器经验的朋友。读完之后,你能独立连上一台 Linux 服务器、搞懂"权限"到底在说什么、并熟练用上日常开发运维中最常用的那 30 多个命令。所有代码块都可以直接复制粘贴,建议边读边敲。


一、什么是 Linux?为什么服务器都用它?

Linux 是一个开源免费的操作系统,就像 Windows、macOS 一样,用来管理 CPU、内存、磁盘、网络这些硬件,上面可以跑各种程序。但它的气质完全不同:Windows 是给人坐在屏幕前点鼠标用的,而 Linux 天生就是给机器在机房里 7×24 小时跑服务用的——稳定、省电、不弹广告、不强制重启、命令行操作极其高效,而且免费(大多数版本不花一分钱)。你看到的网站、App 背后的服务器,绝大部分都跑着 Linux(阿里云的 CentOS/Ubuntu、腾讯云的 Ubuntu、GitHub 的服务器、Docker/K8s 的生态,全都是 Linux)。所以说:桌面可以不用 Linux,但服务器绕不开它。学会它,你才有资格"管"你花钱租来的那台云主机。


二、第一步:用 SSH 连接你的 Linux 服务器

2.1 先搞懂三个概念

名词通俗解释
IP 地址服务器在互联网上的"门牌号",比如 203.0.113.10,云厂商控制台里能看到
SSH一种加密的远程登录协议,相当于"通过一条加密隧道,远程操控别人的电脑"。默认用 22 端口
用户名登录服务器用的账号,云服务器一般是 root(管理员)或云厂商预建的 ubuntu / centos / ec2-user 等
>

连服务器之前,确认两件事:① 云厂商控制台里的安全组放行了 22 端口(很多人第一次连不上就是栽在这里);② 你拿到了初始密码,或者重置过密码。

2.2 Windows 用户

方法一:自带终端(Windows 10/11 推荐)

Windows 10/11 现在自带了 ssh 命令,不需要装任何东西:

  • 按 Win + X,选「终端」或「PowerShell」;
  • 输入命令:
# 格式:ssh 用户名@IP地址
ssh [email protected]

方法二:PuTTY(老 Windows 或公司内网常用)

  • 下载安装 PuTTY(免费小工具);
  • 打开后:Host Name 填 203.0.113.10,Port 填 22,Connection type 选 SSH;
  • 点 Open,弹出黑窗口;
  • 看到 [email protected]'s password: 时输入用户名 ubuntu,回车;
  • 输入密码,回车(PuTTY 默认输入密码完全看不见,是正常的,盲打回车即可)。

2.3 macOS / Linux 用户

打开「终端」(Terminal):

# 最常用的一条命令,就这一句
ssh [email protected]

第一次连接会弹出一段警告(让你确认服务器指纹),输入 yes 回车:

The authenticity of host '203.0.113.10' can't be established.
...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

然后输入密码(屏幕不会显示任何字符,这是密码输入的正常表现,输完回车)。看到一行类似 Last login: ... from ... 的提示,说明你已经成功登进服务器了。

2.4 ssh 常用参数速查

ssh -p 2222 [email protected]   # 端口不是 22 时用 -p 指定端口
ssh -i ~/.ssh/my_key [email protected]   # 用指定密钥文件登录(下面会讲)
exit                                  # 断开连接,回到自己电脑
>

💡 技巧:ssh [email protected] 连上后,可以用方向键上下翻历史命令,Ctrl + R 反向搜索历史命令。


三、SSH 密钥登录 vs 密码登录

3.1 为什么要用密钥?

密码登录密钥登录
体验每次输入密码,输错就重来一次配置,以后免密秒进
安全性弱密码可能被爆破私钥在你电脑里,服务器只存公钥,公钥泄露也登不上
服务器加固无法关闭配好后可彻底关闭密码登录,防爆破

结论:密钥是正解,密码是过渡。

3.2 第一步:在你自己电脑上生成密钥对

密钥登录的原理像一把锁和一把钥匙:私钥(key,放在你电脑里,绝不能泄露)和公钥(pub,放到服务器上)。服务器只认"持有正确私钥的人"。

在你的本地电脑上打开终端执行:

# 生成 ed25519 密钥(现代推荐算法)
ssh-keygen -t ed25519 -C "my-server-key"

# 如果系统较老不支持 ed25519,就用 RSA:
# ssh-keygen -t rsa -b 4096 -C "my-server-key"

执行后它会连续问你三个问题(路径、口令、确认口令),全部直接回车(用默认值)即可:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/you/.ssh/id_ed25519):   # 直接回车
Enter passphrase (empty for no passphrase):                          # 直接回车
Enter same passphrase again:                                         # 直接回车

完成后你的 ~/.ssh/ 目录里会多出两个文件:

# 查看刚生成的密钥文件(~ 代表你自己的家目录)
ls -l ~/.ssh/
# id_ed25519        ← 私钥!打死不能发给任何人
# id_ed25519.pub    ← 公钥,可以随便放(它是用来"贴到服务器上"的)
>

⚠️ 铁律:私钥文件(没有 .pub 后缀的那个)永远不要发微信、发网盘、贴论坛。丢了公钥无所谓,丢了私钥等于家门钥匙给了别人。

3.3 第二步:把公钥放到服务器上的 authorized_keys

方法一(最简单):一条命令搞定(macOS/Linux 自带)

# -i 指定公钥文件,@后面是要上传到的服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
# 按提示输入一次服务器密码,上传完成

方法二(通用,PuTTY 用户也这么干):手动粘贴

# 1. 在本地电脑查看公钥内容
cat ~/.ssh/id_ed25519.pub
# 输出一行类似:
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... my-server-key
# 把这整行复制下来

# 2. 用 ssh 登进服务器
ssh [email protected]

# 3. 在服务器上创建目录和文件(nano 是最简单的编辑器,按 Ctrl+O 保存,Ctrl+X 退出)
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
# 4. 把刚才复制的公钥整行粘贴进去,Ctrl+O 回车保存,Ctrl+X 退出

# 5. 权限必须收紧(这步不做,服务器会拒绝用密钥登录!)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
exit

3.4 第三步:用密钥登录

# 明确指定私钥文件
ssh -i ~/.ssh/id_ed25519 [email protected]

# 如果用的就是默认路径 ~/.ssh/id_ed25519,直接这样就行,不用 -i
ssh [email protected]

这次不会再问你密码了,直接进入服务器。

3.5 (加分项)关闭服务器密码登录,防止被爆破

前提:先反复确认密钥能正常登录,再执行下面操作,否则你会把自己锁在门外!

# 在服务器上编辑 SSH 配置文件
sudo nano /etc/ssh/sshd_config

# 找到并改成(去掉 # 注释):
# PasswordAuthentication no    ← 关闭密码登录
# PubkeyAuthentication yes     ← 确认开启密钥登录(默认就是 yes)

# 保存退出后,先测试配置有没有语法错误(重要!)
sudo sshd -t

# 没报错就重启 SSH 服务(注意:不同发行版服务名可能是 sshd 或 ssh)
sudo systemctl restart sshd

# 再开一个新终端试一次 ssh 登录,确认成功后就稳了

四、用户与权限体系:别再对 “Permission denied” 发呆了

4.1 我是谁?whoami 与 id

whoami        # 当前是谁:比如输出 ubuntu
id            # 当前用户 + 所属的组:uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),27(sudo)
who           # 现在有哪些人登录着这台机器

4.2 root 与 sudo

  • root:系统的"皇帝",用户 ID 为 0,对一切文件和服务想改就改。云服务器给的初始密码往往就是 root 的。
  • sudo:意思是 “super user do”,以 root 的身份临时执行一条命令。普通用户的密码是"门禁卡",刷一下就能办管理员的事。
sudo apt update        # 以 root 权限执行 apt update
sudo nano /etc/hosts   # 以 root 权限编辑系统文件

# 第一次 sudo 会要求输入【你自己的密码】(不是 root 的!),输错就重来
# 输入后短时间内(约 15 分钟)连续 sudo 不用再输密码
>

💡 日常原则:用普通用户登录,需要管理员权限时才加 sudo,而不是天天 ssh root@...。这样即使你手滑敲错一条危险命令,普通用户的"杀伤范围"也有限。

4.3 用户组(groups)一句话理解

用户组是"班级"。权限可以发给"某个人",也可以发给"整个班"。比如网站目录的属组设为 www-data,所有该组的程序都有对应权限。日常管理够用这三条:

sudo groupadd devteam                 # 新建一个组
sudo usermod -aG devteam ubuntu       # 把 ubuntu 加入 devteam(-a 是追加,千万别漏)
groups                                # 查看当前用户属于哪些组(要重新登录才生效)

4.4 chmod:数字权限 755 / 644 到底怎么算的

每个文件都有三组权限,分别属于:属主(owner)/ 属组(group)/ 其他人(others)。每组由三个位组成:

位含义值
rread 读4
wwrite 写2
xexecute 执行(对目录来说 = 允许进入)1

三位相加就是这个数字。 例如:

  • rwx = 4+2+1 = 7(可读写执行)
  • r-x = 4+0+1 = 5(可读可进,不能改)
  • r-- = 4+0+0 = 4(只读)

所以:

数字展开通俗含义典型用途
755rwx r-x r-x属主随便改,别人只能读和进入目录、可执行脚本
644rw- r– r–属主可读写,别人只能读普通文件(代码、配置)
700rwx — —只有属主能读写执行存放密钥/凭据的目录
600rw- — —只有属主能读写私钥、密码文件
chmod 755 /var/www/html        # 目录:属主可改,别人能进能读
chmod 644 app.conf             # 文件:属主可改,别人只能看
chmod +x run.sh                # 快捷写法:给所有人加执行权限

4.5 chown:改文件的"主人"

chown = change owner,把文件的属主/属组换人。

sudo chown ubuntu:ubuntu app.conf          # 把文件主人改成 ubuntu,属组改成 ubuntu
sudo chown -R www-data:www-data /var/www   # -R 递归:目录下所有文件一起改

4.6 ls -la:看懂一列一列的含义

ls 是查看目录内容,加上 -l(长格式)和 -a(连隐藏文件一起显示)是日常最常用姿势:

ls -la

输出示例,逐列对照:

drwxr-xr-x   2   ubuntu   ubuntu   4096   Jun  1 10:00   webapp
^^^^^^^^^^^^  ^    ^^^^^^  ^^^^^^  ^^^^^  ^^^^^^^^^^^^  ^^^^^^
      ①     ②       ③      ④       ⑤         ⑥         ⑦
列示例含义
① 类型+权限drwxr-xr-x第一个字符 d=目录,-=普通文件;后面三组就是属主/属组/其他人的权限(见 4.4)
② 链接数2目录的子目录数相关;普通文件一般是 1
③ 属主ubuntu文件属于哪个用户
④ 属组ubuntu文件属于哪个用户组
⑤ 大小4096字节(目录固定显示 4096,不用管)
⑥ 修改时间Jun 1 10:00最近一次内容修改的时间
⑦ 文件名webapp名字;. 开头的是隐藏文件(所以用 -a 才看得到)
>

记住一句话:③④ 告诉你"文件归谁",① 的后三组告诉你"谁能对它干什么"。 90% 的 Permission denied 都是这两处没配对。


五、30 个最常用命令,分门别类

5.1 文件与目录操作(12 个)

命令干什么最常用示例
ls列出目录里的文件ls -la 看全部+隐藏文件
cd切换到别的目录cd /var/log
cp复制(copy)cp a.txt b.txt
mv移动或改名mv old.txt new.txt
rm删除rm a.txt
mkdir新建目录mkdir -p a/b/c
touch创建空文件/更新时间戳touch new.log
cat一次性显示整个文件内容cat config.yaml
less分页查看长文件(可滚动)less /var/log/syslog
tail看文件末尾tail -f app.log
head看文件开头head -20 data.txt
grep在内容里搜关键字grep "error" app.log
find按条件找文件find / -name "*.conf"
# cd 的几个特殊写法,必须记住:
cd          # 不带参数 = 回到自己的家目录(~)
cd ~        # 同上
cd ..       # 回到上一级目录
cd -        # 回到上一次所在的目录
cd /        # 回到根目录

# 复制和移动,目录要加 -r(recursive 递归):
cp -r ~/project /backup/        # 复制整个目录
mv /backup/project ~/project    # 移动整个目录(同盘移动很快)

# rm 危险警告!!
rm file.txt                 # 删文件(没有回收站!删了就没了)
rm -r mydir/                # 递归删目录
# 永远不要在没看清楚的情况下输入:
# rm -rf /  !!!  这是能删光整台机器的命令

# 查看文件:
cat app.conf                # 短文件直接看
less /var/log/syslog        # 长文件:按 空格 翻页,按 g 回顶部,按 G 到末尾,按 q 退出
tail -100 app.log           # 看最后 100 行
tail -f app.log             # 【最实用】实时跟踪日志,新内容刷出来,Ctrl+C 停止
head -20 big.csv            # 只看前 20 行

# 搜索:
grep "error" app.log                    # 在文件里找含 error 的行
grep -n "error" app.log                 # -n 显示行号
grep -ri "todo" ~/project               # -r 递归找目录里所有文件,-i 忽略大小写
find /home -name "*.log" -size +100M    # 在 /home 下找大于 100MB 的 .log 文件(找大日志神器)

5.2 系统信息(5 个)

命令干什么最常用示例
uname内核/系统信息uname -a
df磁盘空间df -h
free内存占用free -h
htop实时看进程/资源(比 top 好看得多)htop
ps当前进程列表ps aux \| grep nginx
uname -a          # 系统名、主机名、内核版本、架构,一条全给你
uname -r          # 只看内核版本

df -h             # 磁盘用了多少。-h = human readable(显示 GB 这种人类单位)
# 看最后一列 Use%:哪块盘接近 100% 就是它快满了
# 想知道是哪个目录占满的:
du -sh /* 2>/dev/null | sort -rh | head -10   # 列出根目录下最大的 10 个一级目录

free -h           # 内存。重点看 available(真正可用的)那一列
# 注意:buffers/cache 不是"被占用了",是系统在帮你缓存,别慌

htop              # 彩色实时面板:顶部是 CPU 和内存条,下面是进程
# 键盘按 F5 只跟踪一个进程,按 F9 杀进程,q 退出
# 没装的话:sudo apt install htop

ps aux | grep nginx     # 列出所有进程并过滤出 nginx(末尾会多一行 grep 自己,忽略)
# 更精准的写法:
pgrep -a nginx          # 直接找 nginx 进程

5.3 网络(5 个)

命令干什么最常用示例
ip查看 IP 地址/网卡ip addr
ss查看端口和连接ss -tlnp
ping测网络通不通ping 8.8.8.8
curl用命令行发 HTTP 请求/下载curl -I https://example.com
dig查域名解析(DNS)dig example.com
ip addr           # 查看所有网卡的 IP。找 eth0/ens 开头那块里的 inet 后面就是内网 IP
# 想看外网公网 IP:curl ifconfig.me

ss -tlnp          # 看【正在监听】的端口。-t TCP -l 监听中 -n 显示数字 -p 显示是哪个进程
# 典型场景:Nginx 没起来?看 80/443 在不在列表里
# 443 被别的进程占了?-p 会告诉你进程名和 PID,kill 掉或改端口即可

ping 8.8.8.8      # 测底层网络通不通(Ctrl+C 停止)。通 = 包能出去
ping yoursite.com # 测域名能否解析并连通

curl -I https://example.com      # 只取响应头(-I 大写),看状态码
curl http://127.0.0.1:8080/api   # 直接请求本机接口,调试后端神器
curl -o app.tar.gz https://example.com/app.tar.gz   # 下载文件到本地

dig example.com           # 查域名解析到哪台 IP(DNS 排查用)
# 服务器能 ping 通但网站打不开,先 dig 看看解析对不对

5.4 打包压缩(2 个)

命令干什么最常用示例
tarLinux 世界的主流打包(.tar.gz)tar czvf / tar xzvf
zip跨平台压缩(.zip)zip -r / unzip
# tar 记住两组"咒语"就够用了:
tar czvf backup.tar.gz mydir/        # 打包+压缩:c 创建 z 走 gzip v 显示过程 f 指定文件名
tar xzvf backup.tar.gz -C /backup/   # 解压:x 解包 z gzip C 指定解压到哪个目录

# zip:
zip -r backup.zip mydir/             # 压缩(-r 递归)
unzip backup.zip -d /backup/         # 解压到 /backup/
>

💡 上传/下载大文件用 scp 或 rsync(scp = 走 SSH 传文件):
>

> scp ~/backup.tar.gz [email protected]:/home/ubuntu/    # 本地 → 服务器
> scp [email protected]:/var/log/app.log ~/              # 服务器 → 本地
> 

5.5 文本编辑(2 个)

nano —— 零基础首选,底部直接告诉你怎么操作:

nano notes.txt
# 编辑就是直接打字
# Ctrl + O  保存(按回车确认文件名)
# Ctrl + X  退出(没保存会问你存不存)
# Ctrl + K  剪切当前行,Ctrl + U 粘贴

vim —— 你必须至少认识它(很多生产服务器只装了它):

vim notes.txt
# vim 有"模式":打开时是命令模式(只能发指令,打字不进去!)
# i          进入插入模式,现在可以打字了
# Esc        退回命令模式
# :w         保存
# :q         退出(没改动才能退)
# :wq        保存并退出(90% 时候你就敲这两个键)
# :q!        强制退出不保存(改坏了想放弃时救命用)
>

新手记 vim 只要记三件事:按 i 开始写,按 Esc,敲 :wq 走人。

5.6 权限(3 个)

命令干什么最常用示例
sudo以 root 身份执行命令sudo apt update
chmod改权限数字chmod 755 ./app
chown改属主/属组sudo chown -R www-data:www-data /var/www

(用法见第四节,这里把三兄弟放一起,方便你遇到权限问题按顺序排查:ls -la 看谁属主什么权限 → chown 改人 → chmod 改权限。)

5.7 软件安装(3 个,Debian/Ubuntu 系)

>

CentOS/RHEL 系把 apt 换成 yum 或 dnf,思路完全一样。

sudo apt update                # ① 先刷新软件源列表(装任何东西前都先跑这个)
sudo apt install htop          # ② 安装软件(会列出要装的内容,按 y 确认)
sudo apt remove htop           # ③ 卸载软件
# 加分:
sudo apt upgrade               # 升级全部已装软件
apt list --installed | grep nginx   # 查某个软件装没装
sudo apt purge nginx           # 连配置文件一起删干净

5.8 服务管理(5 个,systemd)

现代 Linux 的服务(nginx、mysql、redis、ssh 等)都由 systemctl 管理:

sudo systemctl status nginx    # 看服务状态:green active 就是活着,red failed 就是挂了
sudo systemctl start nginx     # 启动
sudo systemctl stop nginx      # 停止
sudo systemctl restart nginx   # 重启(改完配置最常用)
sudo systemctl enable nginx    # 设置开机自启(只加自启、不启动;start + enable 是标配)
# 加分:
sudo systemctl disable nginx   # 取消开机自启
journalctl -u nginx -n 50      # 看这个服务最近的 50 行日志,排错神器
>

典型部署流程背下来:systemctl start xx && systemctl enable xx —— 先启动,再设为开机自启。


六、目录结构速览

Linux 是一切皆挂在根目录 / 下的树。新手只需要记住下面这张表,够用 90% 的场景:

目录放什么你会在这里干什么
/根目录,整棵树的顶端cd / 回家
/home普通用户的家目录,一人一个子目录(/home/ubuntu)放自己的代码、临时文件、上传的包
/rootroot 的家目录,普通用户进去会 Permission denied放 root 的配置(别去碰)
/etc全部系统配置(nginx.conf、sshd_config 都在这)改配置,改完记得 systemctl restart
/var经常变动的数据:日志 /var/log、数据库文件 /var/lib、临时服务文件 /var/tmp查日志就 cd /var/log;磁盘满了多半是它
/tmp临时文件,重启即清空放随手测试的东西,别放重要数据
/opt第三方/手工安装的大软件(如手工装的 MySQL)把"不属于系统仓库的大东西"放这里
/usr系统级程序和库(/usr/bin 命令、/usr/local 手动编译安装的)一般只读;/usr/local/bin 常用来放自制脚本
/bin /lib基础命令和库(现代系统里常是指向 /usr/bin 的链接)不用管
/dev硬件设备文件(磁盘、终端都在这里)不用管
>

记忆口诀:home 放我的,etc 放配置,var 放日志和会变的,usr 放系统程序,opt 放额外大软件,tmp 和 var/tmp 放临时的。


七、环境变量与 $PATH

7.1 什么是环境变量

环境变量就是系统/用户预先设好、程序随取随用的"全局备忘"。比如 $HOME 是你的家目录,$USER 是你的用户名:

echo $HOME     # /home/ubuntu
echo $USER     # ubuntu
env            # 列出当前所有环境变量

7.2 $PATH:系统去哪里找命令

你输入 ls,系统怎么知道去 /usr/bin/ls 找?靠 $PATH——一串用冒号分隔的目录清单,系统按顺序逐个去找:

echo $PATH
# /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# ↑ 按这个顺序找,第一个找到的就用它

排错实例:你把脚本放到 ~/bin,敲 myscript 却提示 command not found——因为 ~/bin 不在 PATH 里。两种解法:

# 临时解法(只对当前这个终端窗口生效,关掉就没):
export PATH="$PATH:~/bin"

# 永久解法(写进配置,每次开终端自动加载):
echo 'export PATH="$PATH:$HOME/bin"' >> ~/.bashrc
source ~/.bashrc     # 立即让修改生效,不用重开终端

辅助命令:

which ls        # 告诉你系统实际用的是哪个 ls:/usr/bin/ls
type -a curl    # 查看一个命令到底从哪里来

7.3 .bashrc 是什么

~/.bashrc 是你的 bash 启动脚本:每次你打开一个终端,它就会被自动执行一遍。所以:

  • 想永久生效的环境变量、别名,都写在这里(或 source 它的文件);
  • 改完执行 source ~/.bashrc 立即生效,或重开一个终端。
# 顺手加个别名,以后敲 ll 等于 ls -la(实用!)
echo 'alias ll="ls -la"' >> ~/.bashrc
source ~/.bashrc

八、常见坑与避坑表

现象原因解决办法
Permission denied(操作文件时)你不是属主、没写权限,或需要 root先 ls -la 看属主和权限;sudo 执行,或 sudo chown/chmod 修正
sudo: ubuntu is not in the sudoers file该用户不是管理员用 root 或管理员用户执行:sudo usermod -aG sudo ubuntu(Ubuntu 系)
ssh: connect to host ... port 22: Connection refused服务器 sshd 没启动,或端口不是 22控制台确认端口;服务器里 systemctl start sshd
ssh: connect to host ... port 22: Connection timed out云安全组没放行 22 端口(新手第一大坑)/ 防火墙拦截 / IP 敲错云控制台安全组加放行 22;sudo ufw status 检查防火墙
Permission denied (publickey) 密钥登录失败公钥没放对位置/内容,或服务器端权限太松确认 ~/.ssh/authorized_keys 里有完整公钥;chmod 700 ~/.ssh、chmod 600 ~/.ssh/authorized_keys
WARNING: UNPROTECTED PRIVATE KEY FILE! ... bad permissions本地私钥权限过松(比如 644)chmod 600 ~/.ssh/id_ed25519,密钥文件就该 600
sudo: a password is required 或 sudo 一直要密码普通用户没配 NOPASSWD默认就要输密码,正常;想免密可在 sudoers 配置(新手不建议)
command not found没安装 / 可执行文件不在 PATH 里apt install 软件名;或把目录加进 PATH(见第七节)
端口被占 Address already in use别的进程占着这个端口ss -tlnp 找到占用进程,kill PID 或换一个端口
磁盘满了 No space left on device日志/临时文件/镜像占满df -h 定位哪块盘,du -sh /* | sort -rh 找大目录,清 /var/log、docker system prune
htop: command not found精简系统没装sudo apt install htop(vim、curl 同理)
apt install 报 Unable to locate package软件源没更新或拼错名字先 sudo apt update 再装;名字别拼错
systemctl: Unit not found服务没安装,或名字不对apt install 软件;服务名一般和软件同名(nginx → nginx.service)
改完配置没效果改了没重启服务sudo systemctl restart 服务名
vim 里打字没反应还在命令模式按 i 进插入模式
rm 误删Linux 没有回收站以后大操作先 cp -r 备份;养成 mv 到 /trash 的习惯
中文路径/文件名报错部分老软件不支持非 ASCII 路径文件名尽量用英文+下划线

最后再叮嘱三句

  • rm -rf 之前,永远先打一遍 ls 看看你要删的是什么——Linux 没有后悔药;
  • 改系统配置前,先备份:cp nginx.conf nginx.conf.bak;
  • 看不懂输出时,命令 --help 或 man 命令 是永远在你身边的字典。

坚持在真机上把第五节的命令各敲一遍,这篇教程里的东西就是你的了。

(完)

— 感谢阅读 —

一起交流

分享你的思考,让讨论更进一步。