终端与命令行¶
一、学习目标¶
学完这一讲能做到:
- 分清朝四个概念:终端窗口、Shell、命令行、命令;
- 说出 Windows 与 Linux 上同一条命令写法不同的原因,并能在两边各写出正确形式;
- 完成进入目录、查看文件、追加内容、查找文本、终结进程这五类操作;
- 用 AI 查命令时把操作系统与目标说清楚,并验证给出的结果。
二、前置¶
- 会开终端窗口,见 Windows 基本操作。
- 知道当前用的是哪个系统与哪个 Shell:PowerShell 里执行
$PSVersionTable,Linux 里执行echo $SHELL。
三、正文¶
3.1 终端、Shell、命令行¶
| 概念 | 是什么 | 出问题时改哪里 |
|---|---|---|
| 终端 | 显示文字、接收键盘输入的窗口程序 | 字体、配色、标签页 |
| Shell | 解析命令的程序(PowerShell、bash、zsh、fish) | 别名、环境变量、启动脚本 |
| 命令行界面(CLI) | 用输入文本代替点击图标的操作方式 | —— |
| 命令 | Shell 能识别的一个动作 | 参数与用法 |
图形界面(GUI)上手快,但远程服务器通常只有命令行可用,批量操作也只能靠命令。这一章要练的是命令,不是窗口外观。
3.2 四个常见 Shell 的差异¶
Windows 上会同时存在四种:
- PowerShell:Windows 11 默认,功能完整。
ls、cd、rm只是别名,参数写法与 Linux 不同。 - CMD:老式命令提示符,不建议作为主要学习对象。
- WSL:在 Windows 里跑真正的 Linux,最接近服务器环境。
- Git Bash:装 Git 时附带,支持大部分 Linux 基础命令。
Linux 与 macOS 原生用 bash 或 zsh,命令写法基本通用。fish 开箱好用,但与 bash 语法不兼容。
看到这个就算成:能说出自己当前终端的 Shell 名称。
3.3 文件与目录¶
$ cd /srv/demo
$ pwd
/srv/demo
$ ls -l
total 8
-rw-r--r-- 1 root root 120 Oct 21 10:02 README.md
drwxr-xr-x 2 root root 4096 Oct 21 10:02 data
cd ..返回上一级,cd ~回到用户主目录;ls -l看详细列表,ls -a含隐藏文件;PowerShell 用Get-ChildItem(别名gci);mkdir -p a/b连父目录一起建;- 删除有风险:Linux 用
rm -rf dir,PowerShell 用Remove-Item dir -Recurse -Force。
看到这个就算成:能进入任意目录、查看内容、新建并删除一个空目录。
3.4 查看文件内容¶
cat一次输出全文;PowerShell 里cat是Get-Content的别名;tail -f持续跟踪日志,按Ctrl + C停止;PowerShell 写Get-Content app.log -Wait;head -n 5看前五行;PowerShell 写Get-Content app.log -Head 5;- 简单编辑用
nano或vim,Windows 上有notepad,VS Code 用code file.txt。
看到这个就算成:能打开日志并让新写入的行实时出现。
3.5 管道与重定向¶
$ echo "hello" > note.txt
$ echo "world" >> note.txt
$ cat note.txt
hello
world
$ cat note.txt | grep -c "o"
2
> 覆盖写入,>> 追加写入。管道 | 把前一条命令的输出交给后一条。
两个系统的差别在传递的东西:Linux 传文本流,PowerShell 传对象,所以同名过滤命令在两边写法不同:
看到这个就算成:能写出覆盖与追加两种写入,并用管道数出匹配行数。
3.6 搜索与过滤¶
$ grep -rn "error" /var/log/demo
/var/log/demo/app.log:12:error: connection refused
$ find . -name "*.txt"
./note.txt
- 查内容:Linux 用
grep,PowerShell 用Select-String(别名sls),CMD 用findstr; - 查文件位置:Linux 用
find,PowerShell 用Get-ChildItem -Recurse -Filter; - Windows 上的
find是另一个文本查找工具,找不到文件不是参数写错。
看到这个就算成:能在指定目录下同时查出「哪一行匹配」和「哪个文件名叫什么」。
3.7 权限与管理员¶
$ chmod +x run.sh
$ ls -l run.sh
-rwxr-xr-x 1 demo demo 42 Oct 21 10:10 run.sh
$ sudo systemctl restart demo
$ systemctl is-active demo
active
Linux 用 chmod 改权限,需要管理员时在命令前加 sudo。Windows 用 ACL 管理权限,日常开发很少改,需要管理员时以「管理员身份运行」打开终端。
看到这个就算成:能说清 sudo 与「以管理员运行」是同一件事的两种做法。
3.8 让 AI 查命令的正确问法¶
先说系统与 Shell,再说目标,最后说限制条件。缺少系统信息时,AI 容易给出这条系统上不存在的命令。
- 反例:「怎么查占用 8080 端口的进程」——得到的答案可能是
lsof,Windows 上没有这个命令。 - 正例:「我在 Windows 11 的 PowerShell 里,要查哪个进程占用了 8080 端口,给一条命令」。
拿到命令之后先做三件事:读懂每一段在做什么、确认路径与影响范围、破坏性操作先在测试环境跑一遍。参数不确定时查 --help 或 man。
看到这个就算成:能对同一条需求写出带系统信息的提问,并指出 AI 答案里不可执行的部分。
3.9 附录:命令对照速查表¶
| 功能 | Linux / macOS | Windows PowerShell | 关键差异 |
|---|---|---|---|
| 切换目录 | cd |
cd |
通用 |
| 列出文件 | ls -la |
ls 或 gci |
PowerShell 不认 -la |
| 显示路径 | pwd |
pwd |
通用 |
| 建目录 | mkdir -p a/b |
mkdir a/b |
通用 |
| 删目录 | rm -rf dir |
Remove-Item dir -Recurse -Force |
参数完全不同 |
| 复制 | cp -r |
Copy-Item -Recurse |
参数不同 |
| 看前几行 | head -n 5 |
Get-Content -Head 5 |
命令不同 |
| 跟踪日志 | tail -f |
Get-Content -Wait |
命令不同 |
| 搜内容 | grep -rn |
Select-String |
Windows 没有 grep |
| 找文件 | find . -name |
Get-ChildItem -Recurse -Filter |
find 是另一回事 |
| 清屏 | clear |
clear 或 cls |
通用 |
| 提权执行 | sudo 命令 |
以管理员身份打开终端 | 机制不同 |
四、练习¶
- 在自己的机器上执行
pwd、ls -l、mkdir -p demo/data,把输出贴进笔记。 - 在
demo/app.log里追加三行内容,用tail -f观察,再退出跟踪。 - 用一句话数出
app.log里含error的行数。 - 在 Linux 与 Windows 上各查出「哪个进程占用 8080 端口」,把两条命令都记下来。
- 拿一条 AI 给的命令,指出其中依赖系统的那一部分。
五、验收标准¶
- 能解释终端与 Shell 的区别,并说出自己当前用的 Shell。
- 五项操作(进目录、看文件、追加写入、查找文本、结束进程)都能独立完成。
- 对照速查表能写对 Windows 与 Linux 两边的删除与查找命令。
- 提问时自带系统与目标,拿到答案后能判断是否可执行。
六、下一讲¶
下一讲进入终端环境与配置:把终端、Shell、提示符、会话管理这四层配成一套顺手的组合,并让配置跟着人走。