第2章-Linux常用命令


第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 看内容。任何命令搞不清了,先 pwdls

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 Codecd 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)会自动创建中间缺失的父目录,一口气把三层全建出来。不带 -pmkdir 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

规则一句话:目标写的是新文件名就是改名,写的是目录就是移动进去

注意几点:

  • cpmv 都要求源文件存在,源写错了会报"找不到文件"。
  • 复制目录要加 -r(递归):cp -r 代码 代码备份,不加会报错;mv 移动目录不用加。
  • 目标目录名写错时,命令可能把文件"改名"成那个错名字,看起来像是移走了,其实它还在原地,多 ls 确认。

rm:删除,命令行没有回收站

rm 文件(remove)= 删除文件。这里必须给你提个醒:命令行删除没有回收站,删了就是真没了,不像资源管理器还能从回收站找回。

rm test.txt          # 删除 test.txt,命令没有输出、直接删掉
ls                   # 确认:test.txt 已经不在了

删除目录用 rm -r 目录名(-r 递归删除里面所有东西),更危险,能不碰就不碰。

rm 没有任何"你确定吗"的提示,回车即删,这是它和图形界面最大的区别。rm -r 删目录是"连锅端",里面文件全没了。所以守三条规矩:

  1. 删除前先 ls 确认文件名没打错
  2. 新手阶段只删自己刚建的练习文件
  3. 不确定的文件,宁可不删,留着也不碍事

真被删了想找回?命令行没有回收站。所以删除前先 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

记不住时的两个办法:

  1. :翻上面这张表。
  2. 问 AI:把"我想干什么"直接告诉 AI,让它给你命令。比如这样问:
我是 Linux 初学者,想看看当前文件夹里所有文件的大小,应该用什么命令?请给出命令和一句大白话解释。

AI 会告诉你:ls -lh-h 表示以人类可读的方式显示大小)。

还有个记忆窍门:命令英文单词记不住,就记功能联想——要"复制"想到 copy → cp,要"移动"想到 move → mv。别在终端里乱敲试运气,报错看不懂很正常,复制报错问 AI 是最快的路径。学命令的正确姿势是今天只求"见过、会用",熟练靠的是每天敲,不靠死记。

随堂练习

全部用 Cursor 的终端操作。做完一步,用 pwd / ls 确认一步。

  1. 练习一(完整流程串联)mkdir myprojectcd myprojecttouch hello.pyls 查看 → cat hello.py 查看内容。 提示:每敲一条命令就观察输出;cd 之后用 pwd 确认自己真的进去了。

  2. 练习二(改名与复制):用 mvhello.py 改名为 demo.py;用 cp 复制一份 demo_backup.py。 提示:复制完 ls,应该同时看到 demo.pydemo_backup.py

  3. 练习三(体会相对路径):用 cd .. 反复进出目录,每换一个位置就敲 pwd 看路径变化,体会"当前位置决定相对路径"。 提示:站在 myproject 里时,cd .. 会回到它的上一级;注意观察提示符里的路径跟着变。

  4. 练习四(一条命令建三层):执行 mkdir -p a/b/c,然后 cd a/b/c,最后 pwd 看结果。 提示:pwd 输出的路径末尾应该是 a/b/c;这题和第 3 题连起来练,把"目录嵌套"彻底打通。

  5. 进阶题(组合命令):不看表,独立完成"在 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 能让你一键回到之前的正常版本。明天会用到今天学的终端操作,所以今晚把 cdls 多敲几遍。