本文面向初学者,整理最常用的基础命令,内容主要参考 Microsoft Learn 的官方入门教程与 Linux 系统课程讲义。
提示
本文只选取了常用的基础命令,更完整的命令与参数说明请查阅Linux 命令大全 - 菜鸟教程。另外,命令不需要死记硬背:常用命令多用几次自然就熟悉了,冷门命令用到时再查即可。
先认识终端
终端每行显示一个提示符(如 username@machine:~$),在其后输入命令并按 Enter 执行。
Linux 命令的一般格式是:
命令 [选项] [参数]例如 ls -l /home 中,ls 是命令,-l 是选项,/home 是参数。选项可以组合,如 ls -la。
几个提高效率的基本操作:
- Tab 键:自动补全命令和文件名,输入开头几个字母按 Tab 即可,多按几次可列出候选项;
- ↑ / ↓ 方向键:翻看之前执行过的命令;
Ctrl + C:强制中断当前正在运行的命令;clear:清空屏幕(快捷键Ctrl + L)。
目录与文件操作
目录导航
| 命令 | 作用 |
|---|---|
pwd | 显示当前所在目录的完整路径 |
ls | 列出当前目录中的文件和子目录 |
ls -l | 长格式列出,包含权限、大小、修改时间等详细信息 |
ls -a | 同时显示以 . 开头的隐藏文件 |
cd <目录> | 切换到指定目录 |
mkdir <目录> | 创建新目录 |
rmdir <目录> | 删除目录,只能删除空目录 |
ls 的其余常用选项:
| 选项 | 作用 |
|---|---|
-r | 逆序显示(默认为升序) |
-R | 递归列出所有子目录的内容 |
-s | 显示每个文件占用的空间(KB 数) |
-S | 按文件大小排序,大的在前 |
-h | 与 -l 或 -s 搭配,用易读单位(KB / MB)显示 |
cd 的几个特殊用法:
cd hello_world # 进入当前目录下的 hello_world 子目录
cd .. # 返回上一级目录
cd ~ # 回到当前用户的主目录(直接输入 cd 效果相同)
cd - # 回到上一次所在的目录
cd / # 切换到根目录mkdir 默认一次只能创建一级目录,加上 -p 可以一次创建多级:
mkdir -p projects/cpp/hello创建、复制与删除
| 命令 | 作用 | 示例 |
|---|---|---|
touch | 创建空文件 | touch hello_world.txt |
cp | 复制文件,-r 复制目录 | cp a.txt b.txt |
mv | 移动文件,也可用于重命名 | mv a.txt ../a.txt |
rm | 删除文件,-r 删除目录 | rm hello_world.txt |
cp 的常用选项:
| 选项 | 作用 |
|---|---|
-r / -R | 递归复制目录及其中的所有内容(复制目录时必加) |
-a | 递归复制,并保留权限、所有者和符号链接等属性 |
-i | 覆盖已存在的目标文件前先询问 |
-f | 目标文件已存在时强制覆盖,不询问 |
mv 是把源文件「剪切」到目标位置:目标路径不存在时,相当于重命名;目标是已存在的目录时,则把源文件移入该目录。常用选项有 -i(覆盖前询问)、-f(强制覆盖)、-b(覆盖前先备份)。
mv hello.txt ../example/ # 移动到上一级的 example 目录
mv hello.txt hello1.txt # 原地改名rm 的常用选项:
| 选项 | 作用 |
|---|---|
-i | 删除每个文件前都询问确认 |
-f | 强制删除,不询问 |
-r / -R | 递归删除目录及其中的所有内容 |
删除不可恢复
rm 删除的文件不会进入回收站,直接消失且无法撤销。执行删除命令前务必确认路径写对了,尤其不要对系统目录或 /(根目录)执行 rm -r。
下面这两条命令绝对不要执行——它们会从根目录开始删掉系统里的一切,效果相当于把 Windows 的 C 盘格式化:
rm -rf /
rm -rf /*在 root 用户下执行更是灾难性的,所以日常操作用普通用户账号即可,只在确有必要时才用 sudo。即使是要清空当前目录,也建议先 pwd 确认位置、再用 ls 看一眼要删什么。
查看文件内容
不同场景要用不同的查看命令:短文件直接全看,长文件分页看,只想看头尾几行就用 head / tail。
cat:直接输出全部内容
cat 有三个常见用法。
用法一:显示文件内容
cat /etc/passwd用法二:合并文件——把多个文件按顺序拼起来,写入新文件(>> 则是追加到已有文件末尾):
cat file1 file2 > file3
cat file2 >> file1用法三:创建简单文件——不指定输入文件时,cat 会读取键盘输入,配合 > 可以边输入边写文件,输入完按 Ctrl + D 结束:
cat > fileless 与 more:分页查看
文件太长时,cat 会把内容一股脑刷过去,这时应该分页查看。
less /etc/passwd
more /etc/passwdless 和 more 功能类似:都可以一页一页翻看,按空格键翻下一页,按 q 退出。两者的区别是:
less可以用 ↑ / ↓ 方向键逐行回看,more只能往下翻;less不必一次读完整个文件,打开大文件更快。
所以长文件优先用 less;cat 更适合内容不多的短文件。
head 与 tail:只看开头或结尾
head -n 5 hello_world.txt # 查看开头 5 行
tail -n 5 hello_world.txt # 查看结尾 5 行不加 -n 时两者默认都显示 10 行。tail -f <文件> 会持续跟踪文件新增的内容,适合实时查看日志:
tail -f /var/log/syslog编辑文件
终端里编辑文本有两种路线:图形界面编辑器和终端编辑器。
快速上手:nano
nano hello_world.txtnano 对新手最友好,屏幕底部会直接列出可用快捷键:Ctrl + O 保存、Ctrl + X 退出。
也可以直接调用图形界面程序:
code hello_world.txt # 用 VS Code 打开(需先安装 WSL 扩展)
notepad.exe hello_world.txt # 直接调用 Windows 记事本vi / vim
vi 是几乎所有 Linux 都自带的文本编辑器,vim(vi improved)是它的增强版,兼容 vi 的全部指令,还能用不同颜色区分语法。服务器上未必有 nano,但一定有 vi,所以值得掌握最基本的用法。
vi 的操作方式与普通编辑器差别很大:它有两种基本模式,输入的命令在不同模式下含义完全不同。
- 命令模式:刚进入
vi时处于这个模式。此时敲的字母是「指令」,不会显示在屏幕上,也不会写入文件; - 插入模式:此时敲的字才会作为正文写入文件。
两种模式的切换方式:
命令模式 --(按 i / a / o 等插入命令)--> 插入模式
插入模式 --(按 Esc 键)--------------> 命令模式在任何模式下按 Esc,都可以回到命令模式。
进入与退出:
vim filename文件不存在时 vim 会新建一个文件并进入编辑,已存在则打开它。进入后处于命令模式。退出要先按 Esc 回到命令模式,再用「冒号 + 命令」的形式:
| 命令 | 作用 |
|---|---|
:q | 退出(文件没有改动时可用) |
:q! | 放弃修改强制退出 |
:wq | 保存并退出(等价于 :x) |
常用插入命令(在命令模式下按,按完即进入插入模式):
| 命令 | 作用 |
|---|---|
i | 在光标位置插入正文 |
a | 在光标右边插入正文 |
I | 在光标所在行的开头插入 |
A | 在光标所在行的末尾插入 |
o | 在光标所在行的下面新增一行 |
O | 在光标所在行的上面新增一行 |
注意 vi 区分大小写:i 和 I、a 和 A、o 和 O 是不同的命令。
管道与重定向
管道 | 把前一个命令的输出交给后一个命令作为输入,重定向 > 把输出写入文件而不是屏幕。有了它们,简单命令可以像积木一样组合出复杂功能。
假设有一个水果清单 fruits.txt:
Orange
Banana
Apple
Pear
Plum
Kiwi
Strawberry
Peach用管道对内容排序——cat 的输出不再直接打印,而是交给 sort 排序:
$ cat fruits.txt | sort
Apple
Banana
Kiwi
Orange
Peach
Pear
Plum
Strawberry用 grep 搜索包含特定字符串的行:
$ cat fruits.txt | grep P
Pear
Plum
Peach用 > 把排序结果写入新文件(>> 则是追加到文件末尾):
$ cat fruits.txt | sort > sorted_fruit.txt
$ cat sorted_fruit.txt
Apple
Banana
Kiwi
Orange
Peach
Pear
Plum
Strawberry管道可以串联多段,配合 wc -l 还能统计行数,例如统计当前目录下有多少个文件:
ls | wc -l打包与压缩
tar 用于把一批文件打成一个包(archive),并可选地用 gzip 压缩。它本身不移动、不删除原文件。
命令格式为 tar [选项] 文件,常用选项:
| 选项 | 作用 |
|---|---|
-c | 创建新的档案文件(打包) |
-x | 从档案文件中释放文件(解包) |
-t | 列出档案文件的内容清单,不解包 |
-v | 显示处理过程中的文件信息 |
-z | 用 gzip 压缩 / 解压缩 |
-f | 指定档案文件名,必选,且要写在选项的最后 |
-C | 指定解压到的目录,仅在解包时使用 |
打包与压缩:
tar -cvf data1.tar 1.txt 2.txt 3.txt # 打包成 data1.tar
tar -zcvf data1.tar.gz 1.txt 2.txt 3.txt # 打包并 gzip 压缩解包:
tar -xvf data1.tar # 解包到当前目录
tar -xvf data1.tar -C /home/user # 解包到指定目录
tar -zxvf data1.tar.gz -C /home/user # 解压 .tar.gz 到指定目录记不住选项组合时,抓住这个规律:打包用 -c、解包用 -x,带 z 就是 gzip 压缩格式,-f 后面跟文件名且必须放最后。
提示
tar 打出的 .tar 只是打包、不减小体积;.tar.gz(也写作 .tgz)才是打包加压缩。从网上下载的源码包多是 .tar.gz,解压后用 tar -zxvf 即可。
安装与更新软件
Linux 发行版自带包管理器,直接从命令行安装和更新软件。Ubuntu 使用 apt:
sudo apt update # 刷新可用软件列表
sudo apt install <软件名> # 安装软件,例如 sudo apt install vim
sudo apt upgrade # 升级所有已安装的软件更新和升级两步常合并执行:sudo apt update && sudo apt upgrade。安装和升级需要管理员权限,所以命令以 sudo 开头,执行时会要求输入你的 Linux 密码。
提示
包管理器命令随发行版而异:Arch Linux 用 sudo pacman -S <软件名>,openSUSE 用 sudo zypper install <软件名>,Alpine 用 sudo apk add <软件名>,Red Hat / CentOS 用 sudo yum install <软件名>。具体以所用发行版的文档为准。
查看帮助
遇到陌生命令,可以先问命令本身:
man ls # 打开 ls 的完整手册
ls --help # 输出简明的参数说明man 是 manual(手册)的缩写,几乎所有命令都有手册页。手册页较长,阅读时的操作与 less 一致:Enter 下翻一行、空格键下翻一屏、q 退出。
man 的常用选项:
| 选项 | 作用 |
|---|---|
-a | 在所有手册中搜索该关键字 |
-f | 只显示该关键字的简短描述(等价于 whatis) |
-M | 指定手册页的搜索路径 |
man 后面还可以跟一个数字指定手册的类别,如 man 1 ls 只看第 1 类(用户命令)中的 ls。常见的类别有:1 用户命令、2 系统调用、3 库函数、5 文件格式、8 系统管理命令。
也可以把报错或需求直接交给 AI 助手,让它给出对应的命令。
其他值得知道的命令
| 命令 | 作用 |
|---|---|
who | 列出当前所有已登录的用户及其终端 |
whoami | 只显示当前用户名(who am i 效果相同) |
tty | 显示当前终端的设备名 |
df -h | 查看各磁盘分区的剩余空间,-h 用易读单位显示 |
du -sh <目录> | 查看某个目录占用了多少空间 |
ps aux | 列出正在运行的进程 |
kill <进程号> | 结束指定进程(进程号来自 ps 的输出) |
who 与 tty 在多人共用的服务器上更常用——它们能告诉你「现在还有谁在线、我在哪个终端上」。
评论