引言

刚开始学习 Linux 的时候,很多人都会有一种感觉:命令太多了,记不住。

其实不需要一上来就把所有命令都背下来。日常开发、部署、调试中真正高频使用的命令,大概就集中在几个方面:目录操作、文件操作、文本查看、搜索过滤、权限管理、压缩解压、进程管理、端口查询和网络测试

这篇文章就按照实际使用场景,把 Linux 中最常见的一批基础指令整理一下。不是单纯堆命令,而是尽量讲清楚这些命令平时到底用来干什么。


一、Linux 常用指令整体分类

可以先看一张简单的分类图:

Linux常用指令

目录操作

pwd

ls

cd

mkdir

rmdir

文件操作

touch

cp

mv

rm

ln

文件查看

cat

less

head

tail

文本搜索

grep

find

wc

权限管理

chmod

chown

sudo

压缩解压

tar

zip

unzip

进程管理

ps

top

kill

网络端口

ping

netstat

curl

wget

如果 CSDN 不支持 Mermaid 图,也没关系。简单理解就是:
Linux 指令不是乱的,它们基本都围绕“文件、进程、网络、权限”这几类问题展开。


二、目录相关指令

1. pwd:查看当前所在目录

pwd 用来查看当前终端所在路径。

pwd

示例:

/home/user/project

这个命令非常简单,但很重要。尤其是在执行删除、移动、复制命令之前,最好先 pwd 确认一下自己在哪个目录,避免误操作。


2. ls:查看目录内容

ls 用来查看当前目录下有哪些文件和目录。

ls

常用写法:

ls -l      # 以详细信息显示
ls -a      # 显示隐藏文件
ls -lh     # 文件大小以 K、M、G 显示
ls -al     # 显示所有文件的详细信息

比如:

ls -lh

可能看到类似结果:

-rw-r--r-- 1 user user  1.2K Jun  8 10:20 main.c
drwxr-xr-x 2 user user  4.0K Jun  8 10:22 include

开头字符也很有用:

开头字符 含义
- 普通文件
d 目录
l 链接文件

所以看到 d 开头,一般就知道它是目录。


3. cd:切换目录

cd 用来进入某个目录。

cd /home/user

常用写法:

cd ..      # 回到上一级目录
cd .       # 当前目录
cd ~       # 回到当前用户家目录
cd -       # 回到上一次所在目录

其中 cd - 挺实用,比如你在两个目录之间来回切换:

cd /etc/nginx
cd /home/user/project
cd -

这样就可以快速回到上一个目录。


4. mkdir:创建目录

创建一个目录:

mkdir test

创建多级目录:

mkdir -p a/b/c

-p 的作用是:如果中间目录不存在,就一起创建。

比如:

mkdir -p logs/nginx

即使 logs 目录原本不存在,也不会报错。


5. rmdir:删除空目录

rmdir test

注意,rmdir 只能删除空目录。如果目录里面有文件,就删不了。

实际使用中,删除目录更多时候会用:

rm -r 目录名

这个后面会讲。


三、文件操作指令

1. touch:创建文件

touch a.txt

如果文件不存在,就创建一个空文件。
如果文件已经存在,就更新它的修改时间。

平时创建测试文件时很常用:

touch test.log

2. cp:复制文件或目录

复制文件:

cp a.txt b.txt

a.txt 复制一份,命名为 b.txt

复制目录:

cp -r dir1 dir2

常用参数:

参数 作用
-r 递归复制目录
-i 覆盖前询问
-f 强制覆盖
-v 显示复制过程

例如:

cp -rv src backup

表示把 src 目录复制成 backup,并显示复制过程。


3. mv:移动或重命名

重命名文件:

mv old.txt new.txt

移动文件:

mv test.txt /tmp/

移动目录:

mv project /home/user/

mv 既能移动,也能重命名。
如果目标是一个新名字,就是重命名;如果目标是一个目录,就是移动进去。


4. rm:删除文件或目录

删除文件:

rm a.txt

删除目录:

rm -r test

强制删除目录:

rm -rf test

这里一定要注意:rm -rf 很危险。

尤其是下面这种命令,千万不要随便执行:

rm -rf /

平时删除目录之前,建议先看一下:

ls test

确认没问题后再删除:

rm -rf test

一个比较稳的习惯是:
能不用 -f 就先不用 -f,能先 ls 确认就先确认。


5. ln:创建链接

Linux 中链接分为硬链接和软链接。平时更常用的是软链接。

ln -s 源文件 链接名

例如:

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

这样以后就可以直接使用:

nginx

软链接可以简单理解为 Windows 里的快捷方式。


四、文件内容查看指令

1. cat:查看文件内容

cat file.txt

适合查看内容比较少的文件。

如果文件很大,不建议直接 cat,因为终端会疯狂刷屏。


2. less:分页查看文件

less file.txt

常用操作:

按键 作用
空格 向下翻页
b 向上翻页
/关键词 搜索
n 查找下一个
q 退出

查看日志或者配置文件时,lesscat 更好用。


3. head:查看文件开头

默认查看前 10 行:

head file.txt

查看前 20 行:

head -n 20 file.txt

4. tail:查看文件末尾

默认查看最后 10 行:

tail file.txt

查看最后 50 行:

tail -n 50 file.txt

实时查看日志:

tail -f app.log

这个命令非常常用。比如服务启动后想看日志有没有报错:

tail -f logs/server.log

如果只想先看最后 100 行,再继续实时跟踪:

tail -n 100 -f logs/server.log

五、搜索和过滤指令

1. grep:按关键字搜索文本

grep 用来从文件中筛选包含某个关键字的行。

grep "error" app.log

常用写法:

grep -i "error" app.log       # 忽略大小写
grep -n "error" app.log       # 显示行号
grep -r "main" ./src          # 递归搜索目录
grep -rn "TODO" .             # 递归搜索并显示行号

实际开发中,经常会这样查日志:

grep -in "exception" app.log

含义是:
忽略大小写搜索 exception,并显示所在行号。


2. find:查找文件

按文件名查找:

find . -name "test.txt"

查找所有 .c 文件:

find . -name "*.c"

查找普通文件:

find . -type f

查找目录:

find . -type d

查找大于 100MB 的文件:

find . -type f -size +100M

清理临时文件时也可能用到:

find . -name "*.tmp"

确认无误后再删除:

find . -name "*.tmp" -delete

注意:带 -delete 的命令一定要谨慎,最好先不加 -delete 查看结果。


3. wc:统计行数、单词数、字节数

统计文件行数:

wc -l file.txt

统计当前目录下文件数量:

ls | wc -l

统计某个日志里 error 出现的行数:

grep "error" app.log | wc -l

这里就用到了管道。


六、管道和重定向

Linux 命令好用,很大一部分原因是它们可以组合。


1. 管道符 |

管道符 | 的作用是:
把前一个命令的输出,交给后一个命令继续处理。

ps aux | grep nginx

含义是:

ps aux 的输出  --->  grep nginx 进行过滤

再比如:

cat app.log | grep "error"

不过这个命令也可以简写成:

grep "error" app.log

管道更常见的用法是多命令组合:

netstat -tunlp | grep 8080

表示从所有端口信息里筛选出包含 8080 的那一行。


2. 输出重定向 >

> 会把命令输出写入文件,并覆盖原内容。

echo "hello linux" > a.txt

3. 追加重定向 >>

>> 会把内容追加到文件末尾,不覆盖原内容。

echo "new line" >> a.txt

七、权限相关指令

Linux 中每个文件都有权限,可以通过 ls -l 查看:

ls -l test.sh

示例:

-rwxr-xr-- 1 user user 1024 Jun 8 10:20 test.sh

其中:

rwx r-x r--

可以分成三组:

权限位置 含义
第一组 文件所有者的权限
第二组 同组用户的权限
第三组 其他用户的权限

权限字符含义:

字符 含义
r 可读
w 可写
x 可执行

1. chmod:修改权限

给脚本添加执行权限:

chmod +x test.sh

然后就可以执行:

./test.sh

也可以用数字方式:

chmod 755 test.sh

数字含义:

数字 权限
4
2
1 执行

所以:

7 = 4 + 2 + 1 = rwx
5 = 4 + 1 = r-x

755 表示:

所有者:rwx
同组用户:r-x
其他用户:r-x

2. chown:修改文件所属用户

sudo chown user:user file.txt

递归修改目录所属用户:

sudo chown -R user:user project

这个命令在部署项目时经常见到,比如某个目录没有权限写入,就可能需要调整所属用户。


3. sudo:以管理员权限执行命令

普通用户执行某些命令时可能会遇到权限不足:

Permission denied

这时可以使用:

sudo 命令

例如:

sudo rm -rf /opt/test

不过 sudo 权限很大,尤其配合 rm -rf 时一定要小心。


八、压缩和解压指令

1. tar:打包和解包

打包成 .tar

tar -cvf project.tar project/

解包 .tar

tar -xvf project.tar

常用参数:

参数 含义
-c 创建包
-x 解包
-v 显示过程
-f 指定文件名
-z 使用 gzip
-J 使用 xz

2. tar.gz 格式

压缩成 .tar.gz

tar -czvf project.tar.gz project/

解压 .tar.gz

tar -xzvf project.tar.gz

实际下载源码包时,经常会遇到 .tar.gz


3. zip 和 unzip

压缩:

zip -r project.zip project/

解压:

unzip project.zip

如果需要和 Windows 之间传文件,zip 格式会更常见。


九、进程管理指令

1. ps:查看进程

查看当前终端进程:

ps

查看系统所有进程:

ps aux

搜索指定进程:

ps aux | grep nginx

常见字段:

字段 含义
USER 进程所属用户
PID 进程 ID
%CPU CPU 占用
%MEM 内存占用
COMMAND 启动命令

2. top:实时查看系统进程

top

常用操作:

按键 作用
P 按 CPU 占用排序
M 按内存占用排序
q 退出

服务器卡顿时,可以先用 top 看看是不是某个进程占用了大量 CPU 或内存。


3. kill:结束进程

根据 PID 结束进程:

kill PID

强制结束进程:

kill -9 PID

例如:

kill -9 12345

一般建议先使用普通 kill,如果进程没有响应,再考虑 kill -9


十、端口和网络相关指令

这一部分是实际排查问题时非常常用的。


1. ping:测试网络是否连通

ping www.baidu.com

指定发送次数:

ping -c 4 www.baidu.com

如果能收到响应,说明基本网络是通的。
如果一直不通,可能是网络、DNS、防火墙或者目标服务器的问题。


2. netstat:查看端口和网络连接

netstat 是很多人最常用的端口查看命令。

查看当前监听端口:

netstat -tunlp

常用参数:

参数 含义
-t 查看 TCP
-u 查看 UDP
-n 以数字形式显示,不解析域名和服务名
-l 只显示监听状态
-p 显示对应进程

查看某个端口是否被占用,比如 8080:

netstat -tunlp | grep 8080

示例输出:

tcp  0  0 0.0.0.0:8080  0.0.0.0:*  LISTEN  12345/java

这说明:

8080 端口正在被 PID 为 12345 的 java 进程监听

如果要结束这个进程,可以执行:

kill -9 12345

有些系统默认可能没有 netstat,需要安装 net-tools

sudo apt install net-tools

或者在 CentOS 系列中:

sudo yum install net-tools

现在很多新系统也推荐使用 ss,但从学习和实际使用习惯来说,netstat 仍然非常常见。


3. curl:测试接口或网页请求

请求一个网页:

curl www.example.com

只看响应头:

curl -I www.example.com

测试本地接口:

curl http://127.0.0.1:8080/api/test

后端开发中,curl 非常常用。比如服务启动后,可以用它简单测试接口是否正常返回。


4. wget:下载文件

wget https://example.com/test.tar.gz

后台下载:

wget -b https://example.com/bigfile.zip

下载 Linux 安装包、源码包时经常会用到。


十一、磁盘相关指令

1. df:查看磁盘整体使用情况

df -h

示例:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   35G   15G  70% /

-h 表示用更容易阅读的方式显示,比如 G、M。

服务器提示磁盘满了,第一步通常就是:

df -h

2. du:查看目录占用空间

查看某个目录总大小:

du -sh project

查看当前目录下一级文件和目录的大小:

du -h --max-depth=1

排查磁盘占用时常用:

du -h --max-depth=1 /var

如果 /var 很大,就继续往里面查:

du -h --max-depth=1 /var/log

这样一层一层找,很容易定位哪个目录占空间。


十二、几个常见实战场景

场景一:查看服务是否启动

比如查看 nginx:

ps aux | grep nginx

或者查看端口:

netstat -tunlp | grep 80

如果能看到 80 端口处于 LISTEN 状态,说明服务大概率已经监听端口了。


场景二:查看 8080 端口被谁占用

netstat -tunlp | grep 8080

假设看到:

tcp  0  0 0.0.0.0:8080  0.0.0.0:*  LISTEN  12345/java

说明 8080 被 PID 为 12345 的 Java 进程占用。

结束它:

kill -9 12345

场景三:实时查看程序日志

tail -f app.log

查看最后 100 行并持续跟踪:

tail -n 100 -f app.log

场景四:在日志中搜索错误信息

grep -in "error" app.log

如果日志很大,可以配合 tail 使用:

tail -n 1000 app.log | grep -in "error"

意思是:
只在最后 1000 行日志中搜索 error


场景五:查找大文件

find . -type f -size +100M

查看当前目录下哪个文件或目录最占空间:

du -h --max-depth=1

十三、常用指令速查表

指令 作用 常见用法
pwd 查看当前目录 pwd
ls 查看目录内容 ls -al
cd 切换目录 cd /home/user
mkdir 创建目录 mkdir -p a/b/c
touch 创建文件 touch a.txt
cp 复制文件或目录 cp -r dir1 dir2
mv 移动或重命名 mv old.txt new.txt
rm 删除文件或目录 rm -rf dir
ln 创建链接 ln -s src link
cat 查看文件内容 cat file.txt
less 分页查看文件 less file.txt
head 查看文件开头 head -n 20 file.txt
tail 查看文件末尾 tail -f app.log
grep 搜索文本 grep -rn "main" .
find 查找文件 find . -name "*.c"
wc 统计行数等 wc -l file.txt
chmod 修改权限 chmod +x test.sh
chown 修改所属用户 sudo chown user:user file
tar 打包解包 tar -xzvf a.tar.gz
zip 压缩 zip zip -r a.zip dir
unzip 解压 zip unzip a.zip
ps 查看进程 ps aux
top 实时查看进程 top
kill 结束进程 kill -9 PID
netstat 查看端口 netstat -tunlp
ping 测试网络 ping -c 4 baidu.com
curl 测试请求 curl -I example.com
wget 下载文件 wget 文件地址
df 查看磁盘整体空间 df -h
du 查看目录大小 du -sh dir

十四、学习 Linux 指令的小建议

Linux 命令不用一开始全背下来,刚学的时候可以先抓住高频命令。

我个人建议先掌握这几组:

目录操作:pwd、ls、cd、mkdir
文件操作:touch、cp、mv、rm
文件查看:cat、less、head、tail
文本搜索:grep、find
权限管理:chmod、chown、sudo
进程端口:ps、top、kill、netstat
磁盘网络:df、du、ping、curl、wget

这些命令掌握以后,日常使用 Linux 基本就不会太吃力了。

另外,Linux 命令真正强的地方在于组合,比如:

ps aux | grep nginx
netstat -tunlp | grep 8080
tail -n 1000 app.log | grep "error"
find . -name "*.log" | wc -l

单个命令可能很简单,但多个命令通过管道组合起来,就可以完成很多实际排查工作。


总结

这篇文章主要整理了 Linux 中最常见的一批基础指令,包括目录操作、文件操作、文件查看、搜索过滤、权限管理、压缩解压、进程管理、端口查询和网络测试。

对于初学者来说,最重要的不是一次性记住所有参数,而是知道:

  • 想看当前路径,用 pwd
  • 想看文件列表,用 ls
  • 想进入目录,用 cd
  • 想复制移动删除,用 cpmvrm
  • 想看日志,用 tail -f
  • 想搜索内容,用 grep
  • 想查文件,用 find
  • 想看进程,用 pstop
  • 想查端口,用 netstat
  • 想看磁盘,用 dfdu

Linux 指令看起来多,但常用的其实就这些。多敲几遍,多结合实际场景用,很快就能熟悉起来。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐