LINUX · STARTER HANDBOOK
Linux 基础命令
28 个高频命令 · 从终端导航到权限管理
一份可以边学、边敲、边查的实操型笔记
user@linux:~$learn --practice --repeat
基础篇 · V1.0
如何使用这份笔记
不要试图一次背完所有参数。正确的方法是先理解用途,再亲手执行最常见的写法,最后在实际任务中反复查阅。
1.先在终端中执行每个命令的“常用写法”。
2.把所有实验限制在专门的练习目录中。
3.遇到覆盖、删除、递归和 sudo 时,先确认路径。
4.学完一章后完成末尾的综合练习。
适用范围示例以常见 GNU/Linux 环境为主;不同发行版和工具版本可能存在少量参数差异。
先运行一个“有感觉”的命令
下面这条命令会每秒刷新系统时间、运行时长、内存和磁盘状态。按 Ctrl+C 退出。
终端实时状态面板
watch -n 1 'date; uptime; free -h; df -h /'
截图练习运行后截取完整终端画面。这张图非常适合放在公众号或学习笔记开头。
创建安全练习场
复制整段执行
mkdir -p ~/linux-command-lab/{docs,backup,images,project/src}cd ~/linux-command-labtouch docs/linux.txt docs/commands.txt
安全原则后续实验尽量都在 ~/linux-command-lab 中完成,不要拿系统目录和重要资料做删除测试。
学习地图
模块 | 命令 |
目录导航 | pwd · ls · cd · tree |
文件操作 | touch · mkdir · cp · mv · rm · rmdir · ln · file · stat |
文本处理 | cat · less · head · tail · wc · cut · grep |
压缩归档 | tar · gzip · zip · unzip |
权限身份 | chmod · chown · id · whoami |
01目录导航
先学会回答三个问题:我在哪里?这里有什么?我要去哪里?
01pwd·查看当前位置
显示当前工作目录的完整路径。执行复制、移动或删除前,先用它确认位置。
常用写法
pwdpwd -P
常用参数:-L 逻辑路径-P 物理路径
记住把 pwd 当作高风险操作前的“定位确认键”。
02ls·列出目录内容
查看文件、子目录、隐藏项目、权限、大小与时间,是使用频率最高的命令之一。
常用写法
lsls -lahls -lhSls -ld docs
常用参数:-a 隐藏文件-l 详细信息-h 易读大小-S 按大小-t 按时间
记住ls -lah 是最值得形成肌肉记忆的组合。
03cd·切换目录
改变当前 Shell 的工作目录。它是 Shell 内置命令。
常用写法
cd docscd ..cd ~cd -cd /
常用参数:~ 家目录.. 上一级- 上次位置/ 根目录
记住cd - 可以在两个目录之间快速往返。
04tree·树状查看目录
把层级结构以树形展示,适合观察项目、截图和制作说明文档。
常用写法
tree ~/linux-command-labtree -a -L 3tree -a -L 3 -I '.git|node_modules|build'
常用参数:-a 隐藏内容-d 只看目录-L 层数-I 排除模式
说明如果系统提示命令不存在,Debian/Ubuntu 可执行 sudo apt install tree。
02文件与目录操作
从创建、复制、移动到删除:这一章最实用,也最需要谨慎。
05touch·创建空文件
文件不存在时创建空文件;文件已存在时更新时间戳,不会清空内容。
常用写法
touch new.txttouch file1.txt file2.txttouch note{1..5}.txt
常用参数:-a 访问时间-m 修改时间-c 不创建-d 指定时间
记住touch 不是文本编辑器,它只创建空文件或调整时间。
06mkdir·创建目录
创建一个或多个目录;使用 -p 可以连同缺失的父目录一起创建。
常用写法
mkdir testmkdir -p project/src/modulemkdir -m 700 private
常用参数:-p 创建父目录-v 显示过程-m 指定权限
记住脚本中常用 mkdir -p,因为目标已存在时通常不会报错。
07cp·复制文件或目录
保留原内容并生成副本。复制目录必须使用 -r,完整备份常使用 -a。
常用写法
cp users.txt users-copy.txtcp -iv users.txt backup/cp -a docs/. backup/
常用参数:-r 递归-a 保留属性-i 覆盖询问-n 不覆盖-v 显示过程
说明docs/. 表示复制 docs 内部全部内容,包括隐藏项目。
08mv·移动或重命名
同一个命令同时承担移动和重命名。目标是否已经存在,会影响最终目录结构。
常用写法
mv old.txt new.txtmv -iv new.txt backup/mv file.txt backup/new-name.txt
常用参数:-i 覆盖询问-n 不覆盖-v 显示过程-b 覆盖前备份
记住移动目录不需要 -r。
09rm·删除文件或目录
删除通常不经过回收站。删除目录需要 -r,重要操作建议加交互确认。
常用写法
rm -i file.txtrm -Ir old-directory
常用参数:-i 逐项询问-I 总体询问-r 递归-v 显示过程-f 强制
危险不要把 rm -rf 当成默认习惯;路径不确定时,立即停止。
10rmdir·删除空目录
只删除空目录;目录非空时会拒绝,因此比递归 rm 更安全。
常用写法
mkdir empty-dirrmdir empty-dirmkdir -p a/b/crmdir -p a/b/c
常用参数:-p 连带空父目录-v 显示过程
记住清理空目录时优先考虑 rmdir。
11ln·创建链接
默认创建硬链接;加 -s 创建符号链接。符号链接类似快捷方式,保存的是路径。
常用写法
ln users.txt users-hard.txtln -s users.txt users-soft.txtls -li users.txt users-hard.txt users-soft.txt
常用参数:-s 符号链接-r 相对链接-i 替换询问-v 显示过程
记住硬链接共享 inode;符号链接可以跨文件系统,也可以链接目录。
特性 | 硬链接 | 符号链接 |
inode | 与目标相同 | 拥有自己的 inode |
跨文件系统 | 不可以 | 可以 |
链接目录 | 通常不可以 | 可以 |
原路径删除后 | 数据仍可能存在 | 通常会失效 |
12file·判断真实类型
根据文件属性和内容判断类型,而不是只看扩展名。
常用写法
file users.txtfile /bin/lsfile -b --mime-type users.txt
常用参数:-b 只显示类型-i MIME 信息-L 跟随链接
记住扩展名叫 .txt 的文件,也可能实际上是一张图片或一个程序。
13stat·查看详细元数据
显示大小、inode、链接数、权限、所有者和多种时间信息。
常用写法
stat users.txtstat -c '%A %a %U:%G %s %n' users.txt
常用参数:-L 跟随链接-f 文件系统信息-c 自定义格式
注意ctime 是状态变化时间,不是 creation time。
03文本查看与处理
Linux 的强项不是单个命令,而是把小工具组合成一条数据处理流水线。
先创建两份练习数据
cat > users.txt <<'EOF'alice:18:Beijingbob:20:Shanghaicarol:22:ShenzhenEOFcat > app.log <<'EOF'INFO server startedWARNING disk usage highERROR connection failedINFO retry successfulEOF
14cat·查看或连接文件
适合直接输出短文件,也能连接多个文件。长文件应改用 less。
常用写法
cat users.txtcat -n users.txtcat users.txt app.log > combined.txt
常用参数:-n 所有行编号-b 非空行编号-s 压缩空行-A 显示隐藏字符
注意> 会覆盖目标文件;>> 才是追加。
15less·分页查看长文件
进入可上下移动、搜索、跳转的交互界面,适合日志和大文本。
常用写法
less app.logless -N app.logless +F app.log
常用参数:Space 下一页b 上一页g 开头G 结尾/词 搜索q 退出
记住less +F 可实时跟踪日志;Ctrl+C 停止跟踪,再按 q 退出。
16head·查看开头
默认显示前 10 行,也可以按行数或字节数截取。
常用写法
head app.loghead -n 2 app.loghead -c 20 app.log
常用参数:-n N 前 N 行-c N 前 N 字节
记住快速确认 CSV 表头或文件格式时非常方便。
17tail·查看末尾与跟踪日志
默认显示最后 10 行;-f 会持续等待并显示新增内容。
常用写法
tail -n 2 app.logtail -f app.logtail -F app.log
常用参数:-n N 最后 N 行-f 持续跟踪-F 跟踪文件名并重试
记住另开终端执行 echo 'ERROR new message' >> app.log,就能看到实时变化。
18wc·统计文本
统计行数、单词数、字节数、字符数和最长行宽度。
常用写法
wc users.txtwc -l users.txtwc -m users.txt
常用参数:-l 行数-w 单词-c 字节-m 字符-L 最长行
说明wc -l 严格来说统计换行符数量。
19cut·提取字段
逐行按字符位置或分隔符提取字段,适合规则简单的结构化文本。
常用写法
cut -d ':' -f 1 users.txtcut -d ':' -f 1,3 users.txtcut -c 1-5 users.txt
常用参数:-d 分隔符-f 字段-c 字符位置-s 跳过无分隔符行
注意复杂 CSV 中可能含带引号的逗号,不能简单用 cut 可靠解析。
20grep·搜索文本
搜索包含普通字符串或正则表达式的行,是日志排错与代码检索的核心工具。
常用写法
grep 'ERROR' app.loggrep -in 'error' app.loggrep -Ein 'error|warning' app.loggrep -Rin 'Linux' .
常用参数:-i 忽略大小写-n 行号-v 反向-c 计数-E 扩展正则-r 递归
记住推荐截图:grep --color=always -Ein 'error|warning' app.log。
正则符号 | 含义 | 示例 |
^ | 行首 | ^ERROR |
$ | 行尾 | success$ |
. | 任意单个字符 | c.t |
[0-9] | 任意数字 | [0-9]+ |
| | 或;配合 -E | error|warning |
04打包与压缩
先分清“打包”和“压缩”:tar 管结构,gzip 管数据流,zip 兼顾跨平台交换。
21tar·创建和提取归档
把多个文件和目录组织成一个归档,并可配合 gzip、bzip2 或 xz 压缩。
常用写法
tar -cf backup.tar docs projecttar -tf backup.tartar -czf backup.tar.gz docs projectmkdir -p output && tar -xzf backup.tar.gz -C output
常用参数:-c 创建-x 提取-t 查看-f 文件名-z gzip-C 目录
记住解压陌生归档前先用 tar -tf 查看内部路径。
22gzip·压缩单个数据流
默认生成 .gz 并删除原文件;需要保留原文件时使用 -k。
常用写法
gzip -k app.loggzip -t app.log.gzzcat app.log.gzgzip -dc app.log.gz > restored.log
常用参数:-d 解压-k 保留原文件-1 更快-9 更小-t 测试
记住gzip 不会把整个目录打包成一个文件;目录归档通常使用 tar -czf。
23zip·创建 ZIP 压缩包
ZIP 可以保存多个文件和目录,适合与 Windows、macOS 交换普通资料。
常用写法
zip files.zip users.txt app.logzip -r project.zip project/zip -9r project.zip project/
常用参数:-r 递归-0 不压缩-9 高压缩-u 更新-x 排除
说明完整保存 Linux 权限、链接和扩展属性时,通常优先 tar。
24unzip·查看和解压 ZIP
可以先列表或测试,再把内容解压到独立目录。
常用写法
unzip -l project.zipunzip -t project.zipmkdir -p zip-outputunzip -n project.zip -d zip-output
常用参数:-l 列表-t 测试-d 目标目录-n 不覆盖-o 强制覆盖-p 输出内容
危险不可信 ZIP 应解压到新目录,并避免使用 sudo。
格式 | 能否保存多个文件 | 典型用途 |
.gz | 否;单个数据流 | 压缩日志或文本 |
.tar | 是;不压缩 | Linux 目录归档 |
.tar.gz | 是;gzip 压缩 | Linux 项目与备份 |
.zip | 是;自带压缩 | 跨平台文件交换 |
05权限与用户身份
理解“谁在操作、文件属于谁、允许做什么”,就能真正读懂 Linux 权限。
25chmod·修改权限
通过符号模式或数字模式设置所有者、所属组和其他用户的读写执行权限。
常用写法
chmod u+x script.shchmod o-r users.txtchmod 600 users.txtchmod 755 script.sh
常用参数:u 所有者g 所属组o 其他人r=4w=2x=1
危险不要用 chmod 777 解决所有 Permission denied。先判断谁需要哪种权限。
数字 | 符号 | 常见用途 |
600 | rw------- | 私钥、私人配置 |
644 | rw-r--r-- | 普通文本文件 |
700 | rwx------ | 私人目录或程序 |
755 | rwxr-xr-x | 公共目录或可执行程序 |
775 | rwxrwxr-x | 团队共享目录 |
26chown·修改所有者与组
改变文件归属;通常需要管理员权限。它不等同于 chmod。
常用写法
sudo chown alice filesudo chown alice:developers filesudo chown :developers file
常用参数:-R 递归-h 链接自身-c 仅显示变化--reference 参考文件
危险递归 chown 前必须确认路径,不要对宽泛系统目录试验。
27id·查看完整身份
显示 UID、主组 GID 和全部附加组,也可以查询指定用户。
常用写法
idid -uid -unid -gnid -Gnid root
常用参数:-u 用户 ID-g 主组-G 全部组-n 名称-r 真实 ID
记住UID 0 通常代表 root;系统内部主要按数字 ID 判断身份。
28whoami·查看当前有效用户名
只输出当前进程的有效用户名,近似等价于 id -un。
常用写法
whoamisudo whoamiid -un
常用参数:--help 帮助--version 版本
记住sudo whoami 只表示这一条命令以提权身份运行,不代表整个终端永久变成 root。
06综合练习与速查
把命令连接成任务,才算真正学会。
综合任务:制作一份可检查的发布包
整段练习
cd ~/linux-command-labpwdls -lahtree -a -L 3mkdir -p release/docscp -a docs/. release/docs/cp users.txt app.log release/grep -inE 'error|warning' release/app.logwc -l release/users.txtcut -d ':' -f 1,3 release/users.txtchmod 600 release/users.txtstat -c '%A %a %U:%G %n' release/users.txttar -czf release.tar.gz release/zip -r release.zip release/file release.tar.gz release.zipidwhoami
完成标准能解释每一行做了什么,并能找到 release.tar.gz 与 release.zip 中的内容。
28 个命令一页速查
命令 | 用途 | 命令 | 用途 |
pwd | 当前位置 | ls | 列出内容 |
cd | 切换目录 | tree | 树状结构 |
touch | 创建空文件 | mkdir | 创建目录 |
cp | 复制 | mv | 移动/重命名 |
rm | 删除 | rmdir | 删除空目录 |
ln | 创建链接 | file | 识别类型 |
stat | 查看元数据 | cat | 查看/连接 |
less | 分页查看 | head | 查看开头 |
tail | 查看末尾/跟踪 | wc | 统计 |
cut | 提取字段 | grep | 搜索 |
tar | 归档 | gzip | 压缩数据流 |
zip | 创建 ZIP | unzip | 解压 ZIP |
chmod | 修改权限 | chown | 修改归属 |
id | 完整身份 | whoami | 有效用户名 |
新手安全清单
1.删除、覆盖和递归操作前,先执行 pwd 与 ls。
2.路径中包含空格时使用引号。
3.不要把 rm -rf、chmod 777 和 sudo 当作通用解法。
4.解压陌生归档时先列表、测试,再解压到独立目录。
5.重要数据必须有独立备份,链接不是备份。
6.看懂命令影响范围后再按 Enter。
下一步继续学习 echo、printf、重定向、管道、tee、sort、uniq、find、xargs、sed 与 awk,进入“组合命令解决问题”的阶段。
理解用途 → 亲手执行 → 在任务中复用