Linux 入门难,很大程度上不是难在系统本身,而是命令太多、不知道从哪开始。实际上,不同场景下高频使用的命令高度重合。掌握 15 个命令,就足以完成日常的目录定位、文件查看、内容搜索、权限设置和提权操作;这 15 个命令不是随机清单,而是围绕“我在哪、这里有什么、怎么操作文件、怎么查找内容、怎么控制权限”这条主线选出来的。下面按这 15 个命令的顺序,逐步说明每条命令的用途、常用参数、容易踩的坑,并给出一个可复制的练习流程。适合刚接触 Linux 的开发者、准备转运维的初学者,以及已经在服务器上工作但只会复制粘贴命令的人。学完之后,你可以独立完成一次登录服务器、定位目录、查找文件、查看内容、修改权限、执行提权的完整操作。
1. 为什么是这 15 个命令:先建立命令空间的骨架
1.1 命令行的通用结构:命令、选项、参数
Linux 命令行里,一条命令的本质就是一个可执行程序。执行命令时,Shell 负责找到这个程序,并把用户输入的内容传给它。绝大多数命令遵循同一个结构:
command [option] [argument]例如:
ls -l /etc其中ls是命令,-l是选项,/etc是参数。选项用来改变命令的默认行为,参数用来指定操作对象。很多命令同时支持短选项和长选项,例如ls -l与ls --format=long表达的是类似含义。
理解了这个结构,后面学习任何新命令都会快很多。你不需要记住每个命令的每个参数,只需要记住一个命令能解决什么问题,然后在需要时通过--help或man查看具体参数。
1.2 这 15 个命令如何覆盖日常操作
Linux 日常操作可以划分成四类核心场景:确定位置、操作文件、查找内容、控制权限。下面 15 个命令分别覆盖这些场景。
| 场景 | 命令 | 要解决的问题 |
|---|---|---|
| 定位与切换 | pwd, ls, cd | 我在哪个目录,这里有什么,怎么去其他目录 |
| 文件与目录操作 | touch, mkdir, cp, mv, rm | 创建、复制、移动、删除文件或目录 |
| 内容查看与搜索 | cat, less, grep, find | 查看文件内容,按内容或文件名查找目标 |
| 权限、提权与帮助 | sudo, chmod, man | 用管理员权限执行命令,修改权限,查看帮助 |
这 15 个命令组合起来,可以完成一次完整的服务器日常操作:进入项目目录,查看文件列表,读取日志,搜索关键字,调整权限,用管理员权限执行部署命令。
1.3 学习原则:先跑通,再深挖
初学者最容易犯的错,是打开一本书或一张命令大全都想抄下来。实际上,命令行工具的参数极其丰富,一次全部记住不现实,也没有必要。更有效的方式是:
- 先用默认参数跑通命令,感受输出。
- 再结合具体场景学习两三个高频参数。
- 遇到不熟悉的参数,用
man或--help查。 - 在练习环境反复操作,而不是只看不练。
练习环境建议使用虚拟机、云服务器或 WSL,不要直接在生产环境尝试删除、权限修改等操作。
2. 环境准备:三种方式拿到 Linux 终端
2.1 本机 Linux 环境:虚拟机或云服务器
如果你本机装的是 Linux 发行版,例如 Ubuntu、CentOS、Debian,直接打开终端即可。如果没有本机 Linux,可以选择:
- 虚拟机:使用 VirtualBox 或 VMware 安装一个 Ubuntu Desktop 或 Server,适合本机反复练习。
- 云服务器:购买一台按量付费的云主机,通过 SSH 客户端远程连接,优点是与真实服务器环境一致。
使用云服务器时,建议先使用普通用户登录,需要执行管理操作时再使用sudo,不要一上来就切到 root。
2.2 Windows 下用 WSL 获得 Linux 体验
Windows 10/11 用户可以使用 WSL(Windows Subsystem for Linux)。安装 Ubuntu 子系统后,就可以在 Windows 终端里执行 Linux 命令,环境与本机 Linux 高度一致。
打开 PowerShell 或命令提示符,执行:
wsl --install安装完成后启动 Ubuntu,设置用户名和密码即可。WSL 对学习命令非常友好,因为不涉及真实服务器风险。
2.3 进入终端后先做三件事
拿到终端后,不要急着敲命令。先确认三个信息:当前用户是谁、当前目录在哪、系统是什么版本。可以执行下面命令:
whoami pwd uname -a提示符中通常也会显示用户和主机名。例如:
user@ubuntu:~$$表示当前是普通用户,#表示当前是 root 用户。日常练习建议保持普通用户身份。
还需要准备一个练习目录。可以在/tmp下建立独立目录,避免误操作影响真实数据:
mkdir -p /tmp/linux-lab后续所有练习都可以在这个目录里完成。
3. 第一组:定位与切换——pwd、ls、cd
3.1 pwd:回答“我在哪”
pwd是 print working directory 的缩写,作用是输出当前工作目录的绝对路径。当你不确定自己的位置时,执行它永远不会出错。
pwd示例输出:
/home/user在排查问题时,pwd通常是第一步。很多命令报错说找不到文件,往往不是文件不存在,而是当前目录和预期目录不一致。先pwd,再ls,就能快速确认。
3.2 ls:列出目录内容
ls是最常被使用的命令之一。默认情况下,它列出当前目录下的文件和子目录,但会隐藏以.开头的隐藏文件。
ls更常用的是带参数的组合:
| 参数 | 作用 | 示例 |
|---|---|---|
-l | 以长格式显示权限、属主、大小、时间 | ls -l |
-a | 显示隐藏文件,包括.和.. | ls -la |
-h | 与-l配合,以人类可读方式显示大小 | ls -lh |
-t | 按修改时间排序 | ls -lt |
-R | 递归显示子目录内容 | ls -R |
-d | 只查看目录本身,不展开目录内容 | ls -ld /tmp |
执行ls -l时,每行第一个字段是权限和文件类型,例如:
-rw-r--r-- 1 user user 1024 Jan 1 10:00 README.md第一个字符-表示普通文件,d表示目录。后面九个字符分成三组,分别表示所有者、所属组、其他用户的权限。这部分会在第 6 章 chmod 中详细展开。
3.3 cd:切换目录
cd是 shell 内建命令,作用是切换当前工作目录。它支持绝对路径和相对路径。绝对路径从根目录/开始写,相对路径则从当前目录开始计算。
cd /etc cd ../../ cd ~ cd -四个特殊写法需要记住:
| 写法 | 含义 |
|---|---|
cd /path | 切换到绝对路径 |
cd .. | 返回上一级目录 |
cd ~ | 切换到当前用户主目录 |
cd - | 切换到上一次所在目录 |
cd之后通常用pwd验证是否切换成功,这是一个非常好的习惯。
3.4 路径组合实验
下面这一组操作可以帮助理解绝对路径、相对路径和特殊目录:
cd / pwd ls cd /tmp pwd cd .. pwd cd - pwd预期过程:
/ (根目录下的文件列表) /tmp / /tmp这里的cd /进入根目录,cd /tmp进入临时目录,cd ..从/tmp回到/,cd -又回到/tmp。通过这个实验,你可以直观看到路径是如何变化的。
4. 第二组:文件与目录操作——touch、mkdir、cp、mv、rm
4.1 touch:创建空文件,更新时间戳
touch的用途有两个:创建空文件,或者更新已有文件的修改时间。
touch README.md如果README.md不存在,命令会创建一个空文件;如果已经存在,只会把文件的时间戳改为当前时间。
还可以一次创建多个文件:
touch a.txt b.txt c.txttouch不是文本编辑器,它不能写入内容。这是初学者容易误会的点。创建后可以用ls -l查看文件大小,通常是 0。
4.2 mkdir:创建目录
mkdir是 make directory 的缩写,用来创建目录。一个常见的坑是:默认情况下,父目录不存在时创建会失败。
mkdir linux-lab/data如果linux-lab不存在,会报错:
mkdir: cannot create directory 'linux-lab/data': No such file or directory要一次性创建多级目录,需要加-p:
mkdir -p linux-lab/data/logs-p是非常实用的参数,它表示递归创建缺失的父目录。创建完成后,用ls -R可以查看目录结构。
4.3 cp:复制文件或目录
复制文件是最基本的操作之一:
cp source.txt dest.txt复制目录时,必须加-r参数,否则会报错:
cp: omitting directory 'data'推荐用法:
| 场景 | 命令 |
|---|---|
| 复制文件 | cp file.txt /tmp/backup/ |
| 复制目录 | cp -r dir /tmp/backup/ |
| 覆盖前提示 | cp -i file.txt dest.txt |
| 显示复制过程 | cp -v source.txt dest.txt |
-i在覆盖已有文件前会询问,适合初学者使用,能减少误覆盖。
4.4 mv:移动文件或重命名
mv同时承担移动和重命名两个任务。在同一目录下,把文件改名:
mv old.txt new.txt把文件移动到另一个目录:
mv new.txt /tmp/linux-lab/data/mv的底层行为取决于文件是否在同一个文件系统内。同一文件系统中,它通常只是修改目录项,速度很快;跨文件系统时,需要先复制再删除原文件。对初学者来说,只需要知道mv既能移动也能改名,并且移动后原文件不再保留。
如果目标位置已经有同名文件,mv默认直接覆盖。可以用-i开启覆盖前提示。
4.5 rm:删除文件或目录
删除文件使用:
rm test.txt删除目录必须加-r:
rm -r data强制删除且不提示,使用-f:
rm -rf data这里要特别强调:rm -rf是不可恢复的删除操作。很多安全事故都和误执行rm -rf有关。练习时不要对不熟悉的目录执行强制递归删除,更不要在自己的主目录或系统目录里反复测试。
推荐的安全习惯:
- 删除前先
ls确认目标。 - 先使用
rm -i,让系统在删除前询问。 - 重要数据提前备份,删除操作不依赖“回收站”兜底。
- 生产环境不要随手敲
rm -rf。
如果把rm误写成rf或者路径少写一个字母,后果往往不可挽回。删除操作是这些命令中风险最高的一类。
5. 第三组:内容查看与搜索——cat、less、grep、find
5.1 cat:适合小文件的阅读命令
cat是 concatenate 的缩写,原意是连接文件,但因为能直接输出文件内容,也被当作查看命令使用。
cat /etc/passwd使用-n可以显示行号:
cat -n /etc/passwdcat适合查看内容不长、不会被刷屏的文件。如果直接查看一个几十 MB 的日志,终端会被大量输出淹没,这时候应该用less。
cat还可以用来合并多个文件:
cat a.txt b.txt > c.txt这里的>是重定向符,属于 Shell 功能,不属于某个具体命令。
5.2 less:分页查看大文件
less用来分页查看文件内容,不会一次性把整个文件输出到屏幕,适合查看日志和长文档。
less /etc/passwd进入less后,界面会占据整个终端,常用按键如下:
| 按键 | 作用 |
|---|---|
| 空格键 | 向下翻一页 |
b | 向上翻一页 |
g | 跳到文件开头 |
G | 跳到文件末尾 |
/关键字 | 向下搜索关键字 |
n | 跳转到下一个匹配结果 |
q | 退出 less |
查看大文件日志时,less是最安全的起点。它不会因为文件太大而影响终端响应,也不会刷掉有用的上下文。
5.3 grep:按内容过滤关键行
grep用来在文件内容中搜索匹配的行,是排查日志、分析文本最常用的命令。
grep root /etc/passwd输出文件中包含root的所有行。常用参数:
| 参数 | 作用 |
|---|---|
-i | 忽略大小写 |
-n | 显示匹配行行号 |
-c | 统计匹配行数 |
-v | 反向匹配,输出不包含关键字的行 |
-r | 递归搜索目录内所有文件 |
实际排查中经常这样用:
grep -n "error" app.log grep -c "timeout" app.loggrep还有一个重要用法是配合管道。|可以把前一个命令的输出传给grep过滤:
ls -l | grep ".md"管道不是命令,而是 Shell 提供的能力,理解它之后,命令之间的组合会变得非常灵活。
5.4 find:按文件名和属性定位
find不是搜索文件内容,而是按文件名、类型、大小、时间等属性查找文件。
find . -name "*.log"这里.表示当前目录,-name指定文件名模式,*.log需要加引号,避免 Shell 提前展开通配符。
更常用的形式:
find /var/log -type f -name "*.log" find /tmp -type d -name "data" find . -mtime -7其中:
-type f表示只查普通文件,-type d表示只查目录。-mtime -7表示七天以内修改过的文件。-size +10M表示查找大于 10MB 的文件。
find输出的是文件路径,适合在目录结构不清晰时快速定位。
5.5 grep 和 find 的界限
初学者经常把grep和find搞混,其实界限很明确:
| 命令 | 搜索目标 | 典型场景 |
|---|---|---|
| grep | 文件内容中的文本 | 在日志里找 error,在配置里找关键字 |
| find | 文件名、类型、大小、时间 | 找某个配置文件名,找一周内改过的文件 |
也可以把两者组合起来,先用find找到文件,再用grep过滤内容。例如:
grep -n "timeout" $(find /etc -name "*.conf")这种写法对初学者偏复杂,但体现了命令组合的威力。
6. 第四组:权限、提权与帮助——sudo、chmod、man
6.1 sudo:为当前用户临时提权
Linux 系统中有管理员用户 root,它可以执行所有操作。普通用户没有这个权限。sudo的作用是让普通用户以管理员身份执行某一条命令。
sudo whoami首次执行时,系统会提示输入当前用户的密码,而不是 root 密码。如果当前用户不在 sudo 组中,会看到类似错误:
user is not in the sudoers file. This incident will be reported.sudo的设计初衷是避免长期以 root 身份操作。管理操作应该只在需要时临时提权,而不是持续使用 root。
常见的sudo使用场景:
sudo apt update sudo systemctl restart nginx sudo mkdir /opt/app这里的apt、systemctl都是后续会扩展学习的命令。初学者只需要记住:遇到Permission denied且确认当前操作是合法管理操作时,可以尝试用sudo执行,但不能养成“所有命令都加 sudo”的习惯。
6.2 chmod:用数字修改文件权限
chmod用来修改文件或目录的权限。先看权限字段长什么样:
ls -l README.md输出开头部分:
-rw-r--r--第一个字符-表示文件,d表示目录。后面九个字符分成三组:
- 第一组
rw-表示所有者权限。 - 第二组
r--表示所属组权限。 - 第三组
r--表示其他用户权限。
其中:
| 字符 | 含义 | 对应数值 |
|---|---|---|
r | 读权限 | 4 |
w | 写权限 | 2 |
x | 执行权限 | 1 |
- | 无权限 | 0 |
数字权限就是把每组权限相加。例如rwx对应4+2+1=7,rw-对应4+2=6,r--对应4。
常用权限组合:
| 权限 | 含义 | 适用场景 |
|---|---|---|
| 755 | rwxr-xr-x | 可执行脚本、目录 |
| 644 | rw-r--r-- | 普通文件 |
| 600 | rw------- | 私密配置文件 |
| 700 | rwx------ | 私有目录或私有脚本 |
修改示例:
chmod 755 deploy.sh chmod 600 README.md chmod -R 700 data/-R表示递归修改目录内所有文件。需要特别注意:不要随手执行chmod 777。777表示所有用户都可读、可写、可执行,对文件和系统安全风险很高。如果某个文件需要被其他用户读取,用644通常就足够。
还有一个细节:目录的x权限表示“允许进入该目录”。如果目录没有x权限,即使有读权限,也无法通过cd进入。这也是很多初学者在权限问题上困惑的原因。
6.3 man:随身携带的 Linux 说明书
man是 manual 的缩写,用来查看命令的手册。例如:
man ls man mkdir进入 man 页面后,操作方式和less类似:
| 按键 | 作用 |
|---|---|
| 空格键 | 向下翻页 |
/关键字 | 搜索手册内容 |
q | 退出 |
man 手册按章节分类,最常见的几个章节:
| 章节 | 内容 |
|---|---|
| 1 | 用户命令,例如 ls、cp |
| 5 | 配置文件格式 |
| 8 | 系统管理命令,例如 systemctl |
使用man ls时,默认打开的是第 1 章。如果只看某一个参数,也可以使用ls --help快速查看帮助。多数命令都支持--help,适合快速回忆参数。
对于cd这类 shell 内建命令,man cd可能没有独立手册,可以执行:
help cd查看内建命令帮助。学会使用man和--help,比记住所有参数更重要。
7. 一天工作流:用 15 个命令完成一次完整操作
7.1 一个可复制的练习脚本
把前面几组的命令串起来,形成一次完整操作。在/tmp下建立项目目录,创建文件,复制移动,查看内容,搜索关键字,调整权限,最后用 sudo 验证提权。按顺序执行:
# 1. 定位 cd /tmp pwd # 2. 创建目录结构 mkdir -p linux-lab/data cd linux-lab # 3. 创建文件 touch README.md data/app.log # 4. 复制和移动 cp README.md README.bak.md mv data/app.log ./app.log # 5. 查看内容 cat README.md # 6. 分页查看系统用户文件 less /etc/passwd # 7. 搜索内容 grep "root" /etc/passwd # 8. 查找文件 find /tmp/linux-lab -name "*.md" # 9. 查看权限 ls -l # 10. 修改权限 chmod 600 README.md ls -l README.md # 11. 提权验证 sudo whoami执行less /etc/passwd后,按q退出。执行sudo whoami时会提示输入当前用户密码,输入时终端不会显示任何字符,这是正常现象。
7.2 每一步的预期输出与检查点
| 步骤 | 预期输出 | 检查点 |
|---|---|---|
pwd | /tmp | 当前目录正确 |
mkdir | 无输出 | ls能看到 linux-lab |
touch | 无输出 | ls能看到两个文件 |
cp; mv | 无输出 | ls能看到 app.log 和 README.bak.md |
cat README.md | 空输出 | 文件存在但没有内容 |
less /etc/passwd | 文件内容 | 可翻页,按 q 能退出 |
grep root /etc/passwd | 包含 root 的行 | 至少一行输出 |
find /tmp/linux-lab -name "*.md" | 两个.md文件路径 | 路径正确 |
chmod 600 README.md | 无输出 | ls -l显示-rw------- |
sudo whoami | root | 提权成功 |
这套流程并不复杂,但它把 15 个命令全部串了起来。练习时不要只看命令,还要观察每次命令执行前的提示符和当前路径。
7.3 出错时按什么顺序检查
如果某个步骤报错,按下面的顺序排查:
- 先执行
pwd,确认当前目录是否符合预期。 - 再执行
ls,确认文件或目录是否存在、名字是否拼错。 - 接着检查命令参数有没有写错,比如目录复制是否加了
-r。 - 然后用
ls -l查看权限,确认是否有读、写、执行权限。 - 如果确认需要管理员权限,用
sudo重新执行。 - 最后用
man或--help检查参数含义,而不是凭记忆乱试。
这套顺序可以解决大部分入门阶段的命令问题。
8. 常见问题与排查链路:命令出错时的三个层次
8.1 现象一:command not found
输入命令后提示:
command not found可能原因:
- 命令名拼错。
- 命令确实没有安装。
- 命令不在当前用户的 PATH 环境变量中。
处理方式:
which 命令名 type 命令名 echo $PATHwhich可以查看可执行程序路径,type能区分命令是外部程序还是 shell 内建命令。如果命令不存在,需要先安装对应的软件包。例如在 Ubuntu 系统上安装curl:
sudo apt update sudo apt install curl8.2 现象二:Permission denied
输入命令后提示:
Permission denied可能原因:
- 当前用户没有文件读权限或执行权限。
- 当前用户没有目录进入权限。
- 文件本身不是可执行文件。
处理方式:
ls -l 文件名 chmod 755 文件名先确认权限字段,再判断是否真的需要修改权限。如果只是临时读取系统文件,可以用sudo,但生产环境要确认授权范围。
8.3 现象三:rm 无法删除目录
输入删除目录命令时提示:
rm: cannot remove 'data': Is a directory原因很明确:rm默认只能删除文件,删除目录需要加-r。
rm -r data如果目录里还有大量文件,可以加-f跳过确认,但-f会让误删更难挽回。练习时建议先不加-f,看清楚输出再决定。
8.4 现象四:路径明明存在却找不到文件
执行cat app.log时报错:
No such file or directory但用ls又能在某个目录下看到app.log。这时候大概率是当前目录不对。先执行pwd,再用绝对路径访问:
cat /tmp/linux-lab/app.log相对路径是相对于当前目录计算的,路径错误不一定代表文件不存在。排查顺序永远是:先当前目录,再文件路径,再文件名。
8.5 排查总表:一张表解决大部分报错
| 问题现象 | 常见原因 | 检查方式 | 处理建议 |
|---|---|---|---|
| command not found | 未安装、拼写错误、不在 PATH | which 命令,echo $PATH | 安装软件包或修正命令名 |
| Permission denied | 文件或目录权限不足 | ls -l | 合理使用 chmod 或 sudo |
| Is a directory | 删除目录没有加 -r | 检查 rm 参数 | rm -r 目录名 |
| No such file or directory | 当前目录不对、路径写错 | pwd,ls | 使用绝对路径,检查文件名 |
| 输入密码后还是权限失败 | 用户不在 sudo 组 | groups 用户名,id | 由管理员加入 sudo 组 |
这张表可以当作初学者的排错清单。遇到报错,先对照现象,再按行检查,而不是盲目重新执行一遍。
9. 最佳实践:初学者最容易踩的四个坑和下一步学习方向
9.1 四条可执行的最佳实践
第一,所有练习先在隔离环境里做。虚拟机、WSL、临时目录都是安全的练习场,不要直接在服务器生产目录里尝试rm -rf、chmod -R 777这类高风险操作。
第二,删除前先确认。使用rm前,先ls看清目标;更稳妥的方式是制定自己的删除规则,比如统一使用rm -i。如果担心误删,可以给rm配置交互别名:
alias rm='rm -i'这个别名只对当前终端会话生效。要长期生效,可以写到 shell 配置文件中,但生产服务器不建议随意修改别人的全局配置。
第三,遇到不懂的命令先查帮助,不靠猜。man和--help是两道最可靠的防线。猜参数往往是命令报错的主要原因。
第四,不要随手chmod 777。权限精细化是 Linux 安全的基础。普通文件用644,脚本和目录用755,私密文件用600,需要调整时再针对具体用户或组设置。
9.2 下一步该学哪些命令
掌握这 15 条命令后,可以按使用场景继续扩展。下面这张表列出下一步最值得学习的命令:
| 场景 | 命令 | 说明 |
|---|---|---|
| 文件打包压缩 | tar, zip, unzip | 服务器文件备份和传输 |
| 查看进程 | ps, top | 观察系统负载和异常进程 |
| 磁盘空间 | df, du | 查看磁盘和目录占用 |
| 文本编辑 | vim | 在服务器上直接修改文件 |
| 历史命令 | history | 查看执行记录,快速复用命令 |
| 远程操作 | ssh, scp | 登录远程服务器和传输文件 |
| 服务管理 | systemctl | 管理 systemd 服务 |
| 容器运行 | docker | 容器化部署的基础工具 |
这些命令对刚入门的人并不需要一次学完。最自然的顺序是:先学tar和vim,因为会经常用到;再学ps、top、df、du,因为排查问题时离不开;之后根据工作方向进入systemctl或docker。
9.3 给新手的一个练习计划
不需要按部就班学完所有 Linux 内容,可以按周安排:
- 第 1 天:练习
pwd、ls、cd,重点理解绝对路径和相对路径。 - 第 2 天:练习
touch、mkdir、cp、mv、rm,在临时目录反复创建和删除。 - 第 3 天:练习
cat、less、grep、find,用系统自带的/etc/passwd和日志文件做实验。 - 第 4 天:练习
chmod、sudo、man,理解权限字段的含义。 - 第 5 天:不看提示,重新完成第 7 章的工作流。
- 第 6 天:找一份真实但不重要的日志,用
less和grep完成一次日志排查练习。 - 第 7 天:学习
tar和vim,把学习过程中创建的目录打包备份。
这 15 个命令只覆盖了 Linux 很小的一部分,却是日常操作中最常触碰的部分。把这些命令练熟之后,再看tar、vim、systemctl、docker这些命令,你会发现它们的参数结构完全一致:命令、选项、参数,以及帮助系统。命令数量会不断增加,但学习路径已经打开,这就是 Linux 命令学习的真正节奏。