常见的Linux命令
本文按截至 2026-08-13 的主流发行版工具更新。不同发行版、Shell 和工具版本的参数可能不同;执行修改权限、删除文件或管理服务的命令前,先用 man 命令名 或 命令名 --help 查看本机说明。
1. 文件和目录操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 `ls`: 列出目录内容。 `cd`: 切换当前工作目录。 `pwd`: 显示当前工作目录的路径。 `mkdir`: 创建新目录。 `rmdir`: 删除空目录。 `rm`: 删除文件或目录(`rm -r`递归删除目录及其内容)。 `cp`: 复制文件或目录。 `mv`: 移动或重命名文件或目录。 `touch`: 创建一个新的空文件或更新文件的时间戳。 `cat`: 显示文件内容。 `more` / `less`: 分页显示文件内容。 `head`: 显示文件的前几行。 `tail`: 显示文件的最后几行。 `find`: 搜索文件和目录。 `chmod`: 修改文件或目录的权限。 `chown`: 改变文件或目录的所有者。
ls
描述 : 列出目录内容。
示例 :1 2 3 4 ls ls -l ls -a ls -lh
cd
描述 : 切换当前工作目录。
示例 :1 2 3 cd /home/user/Documents cd .. cd ~
pwd
mkdir
描述 : 创建新目录。
示例 :1 2 mkdir new_folder mkdir -p dir1/dir2/dir3
rmdir
rm
描述 : 删除文件或目录。
示例 :1 2 3 rm file.txt rm -r directory rm -rf directory
cp
描述 : 复制文件或目录。
示例 :1 2 cp file1.txt file2.txt cp -r directory1 directory2
mv
描述 : 移动或重命名文件或目录。
示例 :1 2 mv old_name.txt new_name.txt mv file.txt /path/to/directory
touch
描述 : 创建一个新的空文件或更新文件的时间戳。
示例 :1 2 touch newfile.txt touch existingfile.txt
cat
描述 : 显示文件内容,通常用于查看文本文件的内容。
示例 :1 2 cat file.txt cat file1.txt file2.txt
more / less
描述 : 分页显示文件内容,便于逐屏阅读。
示例 :1 2 more file.txt less file.txt
head
描述 : 显示文件的前几行。
示例 :1 2 head file.txt head -n 20 file.txt
tail
描述 : 显示文件的最后几行。
示例 :1 2 3 tail file.txt tail -n 20 file.txt tail -f log.txt
find
描述 : 搜索文件和目录。
示例 :1 2 find /path -name "*.txt" find /path -type d -name "backup"
chmod
描述 : 修改文件或目录的权限。
示例 :1 2 chmod 755 script.sh chmod u+x script.sh
chown
描述 : 改变文件或目录的所有者。
示例 :1 2 chown user:group file.txt chown -R user:group directory/
2. 文件查看和编辑 1 2 3 4 5 `nano`: 一个简单的文本编辑器。 `vi` / `vim`: 功能强大的文本编辑器。 `grep`: 在文件中搜索文本模式。 `awk`: 文本处理工具,适用于处理和分析文本数据。 `sed`: 流编辑器,用于文本的查找和替换。
nano
vi / vim
描述 : 功能强大的文本编辑器,支持模式编辑。
示例 :1 2 vi file.txt vim file.txt
基本操作 :
i: 切换到插入模式以编辑文本。
:wq: 保存并退出。
:q!: 不保存退出。
grep
描述 : 在文件中搜索指定的文本模式。
示例 :1 2 3 grep "hello" file.txt grep -r "function" /path/to/dir grep -i "pattern" file.txt
awk
描述 : 文本处理工具,适用于从文本文件或命令输出中提取和操作数据。
示例 :1 awk '{print $1, $3}' file.txt
sed
描述 : 流编辑器,用于文本的查找和替换。
示例 :1 2 sed 's/oldtext/newtext/g' file.txt sed -n '1,5p' file.txt
3. 系统管理 1 2 3 4 5 6 7 8 9 `sudo`: 以超级用户(root)权限运行命令。 `ps`: 显示当前运行的进程。 `top`: 动态显示系统的运行情况,包括CPU、内存使用情况。 `kill`: 终止进程(`kill -9`强制终止)。 `df`: 显示磁盘空间使用情况。 `du`: 显示目录或文件的磁盘使用情况。 `free`: 显示内存使用情况。 `uptime`: 显示系统的运行时间和负载平均值。 `shutdown`: 关闭或重启系统。
sudo
描述 : 以超级用户(root)权限运行命令。
示例 :1 2 sudo apt-get update sudo systemctl status ssh
ps
top
描述 : 动态显示系统的运行情况,包括CPU、内存使用情况。
示例 :
kill
df
du
描述 : 显示目录或文件的磁盘使用情况。
示例 :1 2 3 4 du -sh /home/user du -h --max-depth=1 显示当前目录下每个子目录的大小
free
4. 网络操作 1 2 3 4 5 6 7 `ping`: 检查网络连接是否正常。 `ip`: 显示或配置网络接口、地址和路由。 `curl`: 命令行工具,用于发送HTTP请求。 `wget`: 用于从网络下载文件。 `ssh`: 通过网络远程登录到另一台计算机。 `scp` / `sftp`: 通过SSH在本地和远程计算机之间传输文件。 `ss`: 显示套接字和网络连接信息。
ping
描述 : 测试与主机的网络连通性。
示例 :1 2 ping google.com ping -c 4 192.168.1.1
ip
描述 : 显示或管理网络接口、地址和路由,是现代 Linux 系统中替代大部分 ifconfig、route 用法的工具。
示例 :1 2 3 4 5 ip address show ip -brief address ip route show sudo ip link set eth0 down sudo ip link set eth0 up
ifconfig 属于旧的 net-tools 套件,部分系统仍可选装,但新脚本优先使用 ip。
ssh
描述 : 使用SSH协议连接到远程主机。
示例 :1 2 ssh user@remote_host ssh -p 2222 user@host
scp
描述 : 通过SSH在本地和远程主机之间安全地复制文件。
示例 :1 2 scp file.txt user@remote_host:/path/to/destination scp -r directory user@remote_host:/path/to/destination
wget
描述 : 从网络下载文件。
示例 :1 2 wget http://example.com/file.txt wget -c http://example.com/file.txt
curl
描述 : 通过 URL 传输数据,常用于调用 HTTP API、查看响应头或下载文件。
示例 :1 2 curl -I https://example.com curl -L -o file.txt https://example.com/file.txt
ss
描述 : 查看套接字统计信息。netstat 已基本过时,查看连接时优先使用 ss。
示例 :
sftp
描述 : 在 SSH 上进行交互式文件传输,比明文 FTP 更适合远程文件操作。
示例 :
5. 软件包管理 1 2 3 4 `apt`: Debian/Ubuntu系统中适合交互使用的包管理命令;脚本中通常使用`apt-get`。 `dnf`: Fedora及较新的RHEL系列系统的包管理工具。 `yum`: 旧版RHEL/CentOS的包管理工具;在RHEL 8/9中通常是兼容`dnf`的命令。 `pacman`: Arch Linux系统的包管理工具。
apt (适用于基于Debian的系统,例如Ubuntu)apt update
apt upgrade
apt install
描述 : 安装新的软件包。
示例 :1 sudo apt install package_name
apt remove
描述 : 删除已安装的软件包。
示例 :1 sudo apt remove package_name
apt autoremove
描述 : 删除系统中不再需要的孤立软件包(通常是依赖项)。
示例 :
yum(主要用于 RHEL 7、CentOS 7 等旧系统)RHEL 8/9 以 DNF 为基础,yum 命令主要用于兼容旧用法。新系统和新脚本优先使用下一节的 dnf。
yum update
yum install
描述 : 安装新的软件包。
示例 :1 sudo yum install package_name
yum remove
描述 : 删除已安装的软件包。
示例 :1 sudo yum remove package_name
yum search
dnf(适用于 Fedora、RHEL 8/9 及其兼容发行版)dnf update
dnf install
描述 : 安装新的软件包。
示例 :1 sudo dnf install package_name
dnf remove
描述 : 删除已安装的软件包。
示例 :1 sudo dnf remove package_name
dnf search
pacman (适用于Arch Linux)pacman -Syu
pacman -S
描述 : 安装新的软件包。
示例 :1 sudo pacman -S package_name
pacman -R
描述 : 删除已安装的软件包。
示例 :1 sudo pacman -R package_name
pacman -Ss
6. 压缩与解压 1 2 3 `tar`: 用于创建、解压或查看压缩包(如`tar -czvf`创建一个压缩文件,`tar -xzvf`解压文件)。 `gzip` / `gunzip`: 压缩和解压文件。 `zip` / `unzip`: 用于压缩和解压zip格式的文件。
tar
描述 : 打包和解包文件。
示例 :1 2 3 4 tar -cvf archive.tar directory/ tar -xvf archive.tar tar -zcvf archive.tar.gz directory/ tar -zxvf archive.tar.gz
zip / unzip
描述 : 压缩和解压缩ZIP文件。
示例 :1 2 zip archive.zip file1 file2 unzip archive.zip
7. 系统信息 1 2 3 4 5 6 `uname`: 显示系统信息。 `hostname`: 显示或设置系统的主机名。 `whoami`: 显示当前用户的用户名。 `id`: 显示当前用户的ID信息。 `dmesg`: 显示系统引导日志信息。 `lsb_release`: 显示Linux发行版信息。
uname
描述 : 显示系统的基本信息,如操作系统名称、内核版本等。
示例 :1 2 3 uname uname -a uname -r
hostname
描述 : 显示或设置系统的主机名。
示例 :1 2 hostname sudo hostname new_hostname
whoami
id
描述 : 显示当前用户的用户ID (UID)、组ID (GID) 及所属组的信息。
示例 :
dmesg
描述 : 显示内核启动时产生的消息(也称为启动日志),通常用于诊断启动问题或硬件故障。
示例 :1 2 dmesg dmesg | grep error
lsb_release
描述 : 显示Linux发行版的相关信息,例如发行版名称、版本号、代号等。
示例 :1 2 lsb_release -a lsb_release -d
uptime
描述 : 显示系统的启动时间、运行时间、当前用户数、平均负载等信息。
示例 :
df
free
描述 : 显示系统的内存使用情况,包括物理内存和交换内存。
示例 :
top
描述 : 实时显示系统的任务和进程信息,包括CPU和内存的使用情况。
示例 :
ps
这些命令可以帮助你获取关于Linux系统的各种信息,从基本的系统信息到详细的内存和进程状态。 以下是一些常用的进程管理命令的详细描述和示例:
8. 进程管理 1 2 3 `bg`: 将进程放到后台运行。 `fg`: 将后台进程带到前台运行。 `jobs`: 显示当前用户的作业列表。
bg
描述 : 将一个挂起的进程放到后台继续运行。通常用于将暂停的前台作业转为后台作业。
示例 :
fg
描述 : 将后台的某个作业带到前台运行。可以用来恢复在后台运行的作业到前台继续执行。
示例 :
jobs
描述 : 显示当前用户的作业列表,列出所有在当前shell会话中启动的作业,包括后台运行和暂停的作业。
示例 :
kill
描述 : 向指定进程发送信号。默认信号是SIGTERM (15),用来终止进程。
示例 :
killall
描述 : 向指定名称的所有进程发送信号。常用于终止所有匹配指定名称的进程。
示例 :
pkill
描述 : 根据进程名称或其他属性(如用户、会话)发送信号,与killall类似但更灵活。
示例 :1 2 pkill firefox pkill -u user1
ps
top
描述 : 实时显示系统中所有进程的资源使用情况(CPU、内存等),按资源占用排序,方便监控和管理进程。
示例 :
htop
描述 : 类似于top,但有更友好的界面,支持交互操作,如直接终止进程。
示例 :
nice
描述 : 启动一个进程并设置其优先级(影响其CPU使用比例),较低的优先级意味着进程会更少地占用CPU时间。
示例 :
renice
nohup
描述 : 让命令在退出终端后继续运行,通常用于长时间运行的任务。输出默认保存到nohup.out文件中。
示例 :
strace
描述 : 跟踪系统调用和信号,用于调试和分析进程的行为。
示例 :
9. 常用的 VI 编辑器操作命令
VI命令
功能
区域
vi filename
打开filename文件
文本编辑
gvim filename
在另一个窗口打开filename文件
:w
保存文件
:w vpset.net
保存至vpset.net 文件
:q
退出编辑器
:q!
退出编辑器,且不保存
:wq
退出编辑器,且保存文件
a
在当前光标位置的右边添加文本
插入文本
i
在当前光标位置的左边添加文本
A
在当前行的末尾位置添加文本
J
合并光标所在行及下一行为一行
I
在当前行的开始处添加文本
O
在当前行的上面新建一行
o
在当前行的下面新建一行
r
替换光标所在处的字符
替换
R
替换光标所到之处的字符,直到按下ESC键为止
:s/old/new
用new替换行中首次出现的old
:s/old/new/g
用new替换行中所有的old
:n,m s/old/new/g
用new替换从n到m行中所有的old
:%s/old/new/g
用new替换当前文件里所有的old
h
向左
移动光标
j
向下
k
向上
l
向右
空格键
向右
Backspace
向左
Enter
移动到下一行首
横线-
移动到上一行首
ctrl+b
屏幕往”后”移动一页
ctrl+f
屏幕往”前”移动一页
ctrl+u
屏幕往”后”移动半页
ctrl+d
屏幕往”前”移动半页
数字0
移到当前行的第一个字符
$
移动到光标所在行的”行尾”
^
移动到当前行的第一个非空白字符
w
光标跳到下个字的开头
e
光标跳到下个字的字尾
b
光标回到上个字的开头
#l
光标移到该行的第#个位置,如:5l,56l
x
删除光标所在位置的字符
删除文本
#x
例如,「6x」表示从光标位置开始删除6个字符
X
大写的X,每按一次,删除光标所在位置的”前面”一个字符
#X
例如,「20X」表示删除光标所在位置的”前面”20个字符
dd
删除光标所在行
#dd
从光标所在行开始删除#行
u
撤销上一步操作
恢复
U
撤销对当前行的所有操作
yw
将光标所在之处到字尾的字符复制到缓冲区中
复制粘贴
#yw
复制#个字到缓冲区
yy
复制光标所在行到缓冲区
#yy
例如,「6yy」表示拷贝从光标所在的该行”往下数”6行文字
y^
复制从光标到行首的内容
y$
复制从光标到行尾的内容
p
将缓冲区内的字符贴到光标所在位置后
P
将缓冲区内的字符贴到光标所在位置前
n+
向下跳转n行
跳到指定行
n-
向上跳转n行
nG
跳到行号为n的行
G
调至文件的底部
ctrl+g
列出光标所在行的行号
/vpser
向光标下搜索vpser字符串
搜索
?vpser
从光标位置向上搜索vpser字符串
n
沿上一次搜索的方向查找下一个匹配项
N
沿上一次搜索的反方向查找匹配项
:set nu
显示行号
设置行号
:set nonu
取消显示行号
1. 文件操作 vi filename
:w
:w filename
:q
:q!
描述 : 强制退出 VI 编辑器,不保存更改。
示例 :
:wq
2. 文本插入操作 a
描述 : 在当前光标位置的右边开始插入文本。
示例 :
i
描述 : 在当前光标位置的左边开始插入文本。
示例 :
A
O
描述 : 在当前行的上面新建一行,并进入插入模式。
示例 :
o
描述 : 在当前行的下面新建一行,并进入插入模式。
示例 :
3. 文本删除操作 x
dd
#dd
d$
4. 文本复制与粘贴操作 yy
p
P
5. 搜索与替换操作 /pattern
?pattern
n
N
:s/old/new
描述 : 将当前行中首次出现的old替换为new。
示例 :
:%s/old/new/g
描述 : 将整个文件中所有的old替换为new。
示例 :
6. 移动光标操作 h
j
k
l
^
描述 : 移动光标到当前行的第一个非空白字符;使用 0 可到当前行的第一个字符。
示例 :
$
w
e
描述 : 将光标移动到当前或下一个单词的结尾。
示例 :
b
G
gg
参考资料