第2章 Linux常用命令
昨天我们用鼠标点文件夹、拖文件,今天换一种方式:用打字来操作电脑。你打开一个黑乎乎的窗口,敲一行命令,电脑就照做。这个窗口叫终端(Terminal),你敲的那些字叫命令。
有人会问:我鼠标点得好好的,为什么要学打字?因为你的项目以后要放到云服务器上让全世界访问,而服务器几乎全是 Linux 系统。Linux 服务器没有桌面、没有鼠标,只有一个能敲命令的窗口。你可以把它想象成一个只有"对讲机"的房间,想干什么都得靠嘴(命令)说。
也别怕记不住。工程师也天天查命令,今天的目标不是"背下来",而是三件事:知道有哪些命令、每个命令大概能干什么、不会了去哪查。命令就像工具箱里的锤子和螺丝刀,你不需要背下每把的尺寸,只需要知道拧螺丝该拿哪把。
终端:那个敲命令的黑窗口
在 Windows 上,打开终端有几种方式:
| 打开方式 | 怎么操作 |
|---|---|
| Cursor 内置终端(本课程主力) | 打开 Cursor → 菜单"Terminal → New Terminal"(快捷键 Ctrl+`) |
| Windows 自带的 PowerShell | 开始菜单搜"PowerShell",回车打开 |
| 运行对话框 | 按 Win+R → 输入 cmd → 回车 |
本课程统一用 Cursor 内置终端:以后写代码、运行程序、用 Git,都在这个终端里完成,不用切来切去。
打开后,终端长这样:
PS D:\学习资料>
> 前面的 D:\学习资料 是当前所在目录,也就是你现在"站"在哪;> 后面等你敲命令。这一行提示符你以后每天都会见到,养成看它的习惯——它是你的 GPS。
先敲一条命令试试:
echo 你好
按下回车,终端显示:
你好
echo 的意思就是"把你后面的话原样显示出来",用来确认终端是通的。
这里有三条新手规矩:
- 每条命令敲完必须按回车才会执行,回车就是"发送键"。
- 命令和后面的内容之间要有空格:
echo 你好对,echo你好错。 - 别在终端里手打中文标点,命令里全是英文符号(空格、斜杠、点),打错一个它就不认识。
一条命令的三部分:命令、参数、目标
一条 Linux 命令一般由三部分拼成:
命令 参数 目标
mkdir -p a/b/c
[干什么] [附加选项] [对谁干]
- 命令:动词,告诉电脑干什么(建目录、复制、删除……)
- 参数:以
-开头的小选项,给命令加"附加要求"(比如-p表示"连父目录一起建") - 目标:命令作用的对象,通常是文件或目录名
同一个命令,参数不同,行为就不同。拿 ls(列出目录内容)举例:
ls # 简单列出文件名
ls -l # 列出详细信息(大小、时间、权限)
ls -a # 连隐藏文件也列出来
参数可以叠加:ls -la 就是"又详细、又含隐藏文件"。注意 -l 是小写字母 l,不是数字 1——ls -1 是另一个意思(一行列一个)。
刚开始不用把参数一次背完,先记住"动词 + 目标"这个骨架,参数遇到再查。
我在哪、这里有什么:pwd 和 ls
两个最常用的"问路"命令:
pwd(print working directory)= 回答"我现在在哪",显示当前目录的完整绝对路径ls(list)= 回答"这里有什么",列出当前目录下的文件和文件夹
这两个是新手救命命令:迷路了敲 pwd 看位置,想知道有啥敲 ls 看内容。任何命令搞不清了,先 pwd 再 ls。
pwd
输出(示例):
D:/学习资料
ls
输出(示例):
代码 笔记 报名表.txt
再看带参数的:
ls -l
输出(示例):
drwxr-xr-x 1 user user 0 7月 1 10:00 代码
drwxr-xr-x 1 user user 0 7月 1 10:00 笔记
-rw-r--r-- 1 user user 12 7月 1 10:05 报名表.txt
ls -l 结果里,开头是 d 的表示目录(文件夹),是 - 的表示文件。
两个细节:
pwd不带参数,直接敲就完事,敲成pwd 目录反而是错的。ls不带目标时列当前目录,也可以带目标:ls 代码直接看"代码"文件夹里有什么。
cd:走路命令,进入目录
cd(change directory)= "走路"命令,从一个目录进到另一个目录。
| 写法 | 意思 |
|---|---|
cd 目录名 |
进入下一级目录 |
cd .. |
回到上一级目录 |
cd / |
回到根目录 |
cd |
回到用户主目录 |
cd D:/学习资料 |
直接去绝对路径 |
其中 .. 表示上一级目录,. 表示当前目录。cd .. 是今天练得最多的组合,它就是昨天学的"相对路径"的用法。
pwd # 当前在 D:/学习资料
cd 代码 # 进入"代码"文件夹
pwd # 现在在 D:/学习资料/代码
cd .. # 退回上一级
pwd # 回到 D:/学习资料
cd 代码 && pwd # 一条命令组合:进入并立刻看位置
cd .. 中间必须有空格:cd .. 对,cd.. 错。目录名还区分大小写,英文目录 cd Code 和 cd code 是两回事。如果进不去,第一反应是 ls 看看目录名到底叫什么,是不是打错字了。
mkdir 和 touch:造文件夹、造文件
mkdir 名字(make directory)= 新建文件夹,等于资源管理器里"右键 → 新建文件夹"touch 名字= 新建一个空文件;如果文件已存在,则更新它的时间戳
mkdir myproject # 新建一个名为 myproject 的文件夹
mkdir -p a/b/c # 一次建三层:a 里面有 b,b 里面有 c
touch hello.py # 新建一个空文件 hello.py
touch a.txt b.txt # 一次建两个文件(命令后可以跟多个目标)
验证一下效果:
ls # 看到 myproject、a、hello.py、a.txt、b.txt
cd a/b/c && pwd # 进入三层目录,pwd 看完整路径
mkdir -p a/b/c 是今天的一个亮点:-p(parents)会自动创建中间缺失的父目录,一口气把三层全建出来。不带 -p 时 mkdir a/b/c 会报错,因为 b 还不存在,所以多层目录必带 -p。
两条别混:
mkdir建的是目录,touch建的是文件,touch myproject会造出一个空文件而不是文件夹。- 文件夹名和文件名不要带空格,用
myproject而不是my project,否则命令要加引号,很麻烦。
cp 和 mv:复制、移动、改名
cp 源 目标(copy)= 复制:把源文件复制成目标,原来的还在mv 源 目标(move)= 移动:把源文件挪到目标位置,原来的没了;给同一个目录下的文件换个目标名,就是重命名
格式都是"先写源,后写目标",和说话顺序一致:cp 谁 到哪。
cp hello.py hello2.py # 复制一份:现在有 hello.py 和 hello2.py
mv hello2.py old.py # 改名字:hello2.py 消失,变成 old.py
mv old.py 笔记/ # 移动:把 old.py 挪进"笔记"文件夹(目录后加 /)
ls # 当前目录只剩 hello.py
ls 笔记 # 笔记文件夹里现在有 old.py
规则一句话:目标写的是新文件名就是改名,写的是目录就是移动进去。
注意几点:
cp和mv都要求源文件存在,源写错了会报"找不到文件"。- 复制目录要加
-r(递归):cp -r 代码 代码备份,不加会报错;mv移动目录不用加。 - 目标目录名写错时,命令可能把文件"改名"成那个错名字,看起来像是移走了,其实它还在原地,多
ls确认。
rm:删除,命令行没有回收站
rm 文件(remove)= 删除文件。这里必须给你提个醒:命令行删除没有回收站,删了就是真没了,不像资源管理器还能从回收站找回。
rm test.txt # 删除 test.txt,命令没有输出、直接删掉
ls # 确认:test.txt 已经不在了
删除目录用 rm -r 目录名(-r 递归删除里面所有东西),更危险,能不碰就不碰。
rm 没有任何"你确定吗"的提示,回车即删,这是它和图形界面最大的区别。rm -r 删目录是"连锅端",里面文件全没了。所以守三条规矩:
- 删除前先
ls确认文件名没打错 - 新手阶段只删自己刚建的练习文件
- 不确定的文件,宁可不删,留着也不碍事
真被删了想找回?命令行没有回收站。所以删除前先 ls、重要文件先备份,这个习惯越早养成越好。
cat 和 clear:看文件内容、清屏幕
cat 文件= 把文件内容打印到屏幕上。小文件用它看,一眼见底clear= 清屏,把终端里乱七八糟的历史命令清掉,回到干干净净的一行提示符。快捷键 Ctrl+L 效果一样
touch hello.py
cat hello.py # 空文件,什么也不输出
echo "print('hi')" > hello.py # 先往文件里写一行内容(> 是重定向,把输出写进文件)
cat hello.py # 输出:print('hi')
clear # 屏幕清空,回到干净提示符
cat 后面必须是存在的文件,文件名错了会报 No such file or directory。它适合看短文件,以后文件很长就用别的方式(今天用不到,先知道就行)。clear 只是"看不见了",并没有删除任何东西,历史记录还在。
命令记不住怎么办
这一节其实是今天最重要的一节:不是背命令,而是知道"有哪些命令、去哪查"。
下面这张表建议存进你的笔记,想不起来时看功能反推命令:
| 我想干什么 | 用什么命令 | 例 |
|---|---|---|
| 我在哪 | pwd |
pwd |
| 这里有什么 | ls |
ls -l |
| 我要去哪个目录 | cd |
cd 代码 |
| 建文件夹 | mkdir |
mkdir myproject |
| 建空文件 | touch |
touch a.py |
| 复制 | cp |
cp a.py b.py |
| 移动/改名 | mv |
mv a.py old.py |
| 删除 | rm |
rm test.txt |
| 看文件内容 | cat |
cat hello.py |
| 清屏 | clear |
clear |
记不住时的两个办法:
- 查:翻上面这张表。
- 问 AI:把"我想干什么"直接告诉 AI,让它给你命令。比如这样问:
我是 Linux 初学者,想看看当前文件夹里所有文件的大小,应该用什么命令?请给出命令和一句大白话解释。
AI 会告诉你:ls -lh(-h 表示以人类可读的方式显示大小)。
还有个记忆窍门:命令英文单词记不住,就记功能联想——要"复制"想到 copy → cp,要"移动"想到 move → mv。别在终端里乱敲试运气,报错看不懂很正常,复制报错问 AI 是最快的路径。学命令的正确姿势是今天只求"见过、会用",熟练靠的是每天敲,不靠死记。
随堂练习
全部用 Cursor 的终端操作。做完一步,用 pwd / ls 确认一步。
-
练习一(完整流程串联):
mkdir myproject→cd myproject→touch hello.py→ls查看 →cat hello.py查看内容。 提示:每敲一条命令就观察输出;cd之后用pwd确认自己真的进去了。 -
练习二(改名与复制):用
mv把hello.py改名为demo.py;用cp复制一份demo_backup.py。 提示:复制完ls,应该同时看到demo.py和demo_backup.py。 -
练习三(体会相对路径):用
cd ..反复进出目录,每换一个位置就敲pwd看路径变化,体会"当前位置决定相对路径"。 提示:站在myproject里时,cd ..会回到它的上一级;注意观察提示符里的路径跟着变。 -
练习四(一条命令建三层):执行
mkdir -p a/b/c,然后cd a/b/c,最后pwd看结果。 提示:pwd输出的路径末尾应该是a/b/c;这题和第 3 题连起来练,把"目录嵌套"彻底打通。 -
★ 进阶题(组合命令):不看表,独立完成"在 D 盘建一个名为
practice的文件夹,进入,建两个文件,复制一份,再退回上一级目录",全程只许用命令,不许用鼠标。写完把全过程敲给 AI 检查。
AI 协作提示词
场景:记不住命令,让 AI 当"命令字典"
提示词:
我是 Linux 命令初学者。请给我出一份"我想要的 vs 用什么命令"对照表,
覆盖这些功能:看当前目录、列出文件、进入目录、新建文件夹、新建文件、复制、移动/改名、删除、查看文件内容、清屏。
每条命令给我一句大白话解释,不要讲原理。
场景:命令报错了,把报错丢给 AI
提示词:
我是初学者,在 Windows 的 Cursor 终端里执行 Linux 命令时报错了,报错内容是:
(把报错原文粘贴到这里)
请告诉我:这个报错是什么意思?我哪一步做错了?应该改成什么命令?
常见报错速查
| 报错信息 | 什么意思 | 怎么办 |
|---|---|---|
command not found / 命令不识别 |
命令拼写错了,或者这条命令不存在 | 对照命令表检查拼写,重点检查空格和大小写 |
cd: No such file or directory |
目录名打错了或目录不存在 | 先 ls 看看当前有什么,照着目录名再打 |
No such file or directory(其他命令) |
文件/目录不存在,或路径写错 | pwd 看位置,ls 看名字,对一下再执行 |
mkdir: cannot create directory ... File exists |
这个名字的文件夹已经存在 | 换个名字,或先 ls 确认,别重复建 |
cp: omitting directory |
复制的是目录,但没加 -r |
复制目录用 cp -r 源 目标 |
收个尾
今天学到的命令格式是"动词 + 参数 + 目标",迷路了先 pwd 看位置、ls 看内容。cd .. 回上一级,mkdir -p a/b/c 一键建三层,mv 改名和移动是同一招,rm 没有回收站、回车即删。命令记不住很正常,查表、问 AI 都是好办法。
明天学 Git——代码的"时光机"。你写代码总会写崩、改错,Git 能让你一键回到之前的正常版本。明天会用到今天学的终端操作,所以今晚把 cd 和 ls 多敲几遍。