作为技术工程师,在日常工作和项目开发中,Linux 系统是不可或缺的工具。熟练掌握 Linux 常用命令,能够大大提高工作效率,高效地管理和操作服务器、开发环境等。本文将对 Linux 常用命令进行分类总结,从基础到高级,帮助读者全面掌握 Linux 命令的使用。

一、基础命令
- 命令介绍 这些命令是 Linux 系统中最基础、最常用的操作指令,用于文件和目录的基本管理以及系统信息的查看等。例如:
- ls :列出目录中的文件和文件夹。常用选项如 -l(详细列表)、-a(显示隐藏文件)、-h(以易读格式显示文件大小)等。例如,
ls -l
可以查看文件的详细信息,包括权限、所有者、大小等;ls -a
可以显示包括隐藏文件(以.开头的文件)在内的所有文件。 - cd :切换目录。使用
cd 目录名
可以进入指定目录,cd ..
返回上一级目录,cd ~
返回用户主目录。 - pwd :显示当前工作目录的绝对路径。在操作过程中,随时可以使用该命令查看当前所在位置。
- mkdir :创建目录。
mkdir 目录名
可创建一个新目录,mkdir -p 目录路径
可递归创建多级目录。 - rm :删除文件或目录。
rm 文件名
删除文件,rm -r 目录名
递归删除目录及其内容。需谨慎使用,删除后的数据难以恢复。 - cp :复制文件或目录。
cp 源文件 目标文件
复制文件,cp -r 源目录 目标目录
复制目录。 - mv :移动或重命名文件或目录。
mv 源文件 目标路径
将文件移动到指定位置,mv 原文件名 新文件名
对文件进行重命名。 - cat :查看文件内容。
cat 文件名
可显示文件内容,对于小文件快速查看内容较为方便。
- 使用场景与案例 在日常的文件和目录操作中,这些基础命令几乎每天都会用到。例如,在搭建项目环境时,需要创建项目的目录结构,使用 mkdir 逐级创建各个子目录;在整理文件时,根据需要将文件移动到不同的目录下,使用 mv 命令进行操作;查看文件内容时,使用 cat 快速了解文件的大致信息等。这些基础命令为后续更复杂的操作奠定了基础。
二、文件与目录操作命令
-
文件操作
- touch :创建空文件。
touch 文件名
可生成一个指定名称的空文件,常用于创建日志文件或作为其他操作的基础文件。 - ln :创建链接文件。
ln -s 目标文件 链接文件
可创建符号链接,类似于 Windows 中的快捷方式,方便对文件的快速访问和管理。 - find :查找文件。
find 查找路径 -name 文件名
可在指定路径下查找符合名称条件的文件,还可结合其他选项如 -type(指定文件类型)、-mtime(按照修改时间查找)等进行更精确的查找。例如,find /home -name "*.txt"
可在 /home 目录下查找所有后缀为.txt 的文件。 - rename :批量重命名文件。
rename 's/旧名模式/新名模式/' 目标文件
可按照指定的正则表达式模式对文件进行批量重命名,提高文件管理效率。
- touch :创建空文件。
-
目录操作
- tree :以树状图的形式显示目录结构。
tree 目录名
可直观地展示目录及其子目录、文件的层次关系,方便对目录结构的整体把握。
- tree :以树状图的形式显示目录结构。
三、文本处理命令
-
文本查看
- less :分页查看文件内容。与 cat 相比,less 更适合查看大文件,使用
less 文件名
打开文件后,可通过上下箭头或空格键翻页,按 q 键退出查看。 - more :与 less 类似,也是分页查看文件内容,但功能相对较少,翻页操作不如 less 灵活。
- head :查看文件的开头部分。
head -n 文件名
默认显示文件的前 10 行内容,通过 -n 选项可指定显示的行数,例如head -5 文件名
显示前 5 行。 - tail :查看文件的结尾部分。
tail -n 文件名
默认显示文件的后 10 行内容,同样可通过 -n 选项调整显示行数。此外,tail -f 文件名
可实时查看文件的尾部新增内容,常用于监控日志文件的更新。
- less :分页查看文件内容。与 cat 相比,less 更适合查看大文件,使用
-
文本编辑与处理
- grep :在文件中查找符合条件的字符串。
grep "查找内容" 文件名
可在指定文件中查找包含 "查找内容" 的行,配合选项如 -i(忽略大小写)、-n(显示行号)、-r(递归查找目录)等可实现更强大的查找功能。例如,grep -i "error" /var/log/messages
可在 /var/log/messages 文件中忽略大小写查找包含 "error" 的行。 - sed :流编辑器,用于对文本进行编辑和处理。
sed 's/原字符串/新字符串/g' 文件名
可将文件中所有匹配的原字符串替换为新字符串,还可实现删除、插入等操作。 - awk :强大的文本处理工具,按照指定的模式对文本进行处理和分析。
awk '{print $n}' 文件名
可打印文件中每行的第 n 个字段,结合条件判断等语句可完成复杂的文本处理任务。 - cut :截取文本中的字段。
cut -d "分隔符" -f 字段号 文件名
可按照指定的分隔符提取文件中相应字段的内容,例如cut -d ":" -f 1,3 /etc/passwd
可提取 /etc/passwd 文件中用户名和用户 ID 字段。 - sort :对文本内容进行排序。
sort 文件名
默认按字典顺序对文件中的行进行排序,配合 -n(按数值排序)、-r(逆序排序)等选项可实现不同的排序需求。 - uniq :去除文本中相邻的重复行。
uniq 文件名
可对已经排序后的文件内容进行重复行的去除。 - wc :统计文件中的行数、字数和字节数。
wc -l 文件名
统计文件的行数,wc -w
统计字数,wc -c
统计字节数,帮助了解文件的大致规模和内容量。
- grep :在文件中查找符合条件的字符串。
四、系统信息与资源管理命令
-
系统信息查看
- uname :查看系统的基本信息。
uname -a
可显示系统内核版本、主机名、处理器架构等所有信息,uname -s
仅显示操作系统名称,uname -r
显示内核版本号。 - hostname :查看和设置主机名。
hostname
命令单独使用可查看当前主机名,使用hostname 新主机名
可临时设置主机名(需具有管理员权限)。 - uptime :显示系统运行时间、当前时间、登录用户数以及系统负载情况。通过该命令可了解系统的整体运行状态。
- top :实时显示系统中各个进程的资源占用情况,包括 CPU 使用率、内存使用率、进程 ID、进程名称等信息。在 top 界面中,可通过按键进行排序、过滤等操作,方便对系统性能进行监控和分析。
- free :查看系统的内存使用情况。
free -h
以易读的格式(如 MB、GB)显示系统的总内存、已用内存、空闲内存以及缓存和缓冲区的大小,帮助了解内存资源的分配和使用状态。 - df :查看文件系统的磁盘空间使用情况。
df -h
显示各个挂载点的磁盘总容量、已用空间、可用空间以及使用百分比等信息,便于对磁盘空间进行管理和监控。 - du :查看文件或目录所占用的磁盘空间大小。
du -sh 目录名
可查看指定目录的总大小(以易读格式显示),du -h 目录名
则可详细显示目录下每个子文件和子目录的大小。
- uname :查看系统的基本信息。
-
进程管理
- ps :查看当前系统的进程快照。
ps aux
可显示系统中所有进程的详细信息,包括用户、进程 ID、CPU 和内存使用率、进程名称等。通过该命令可快速了解系统中正在运行的进程情况。 - kill :向进程发送信号,用于终止进程。
kill -9 进程 ID
可强制终止指定的进程,kill -15 进程 ID
则是向进程发送终止信号,让进程正常退出。 - pkill :根据进程名称等条件杀死进程。
pkill 进程名
可直接终止所有匹配名称的进程,操作相对方便,但需谨慎使用以免误杀重要进程。 - killall :与 pkill 类似,也是根据进程名称终止进程。
killall 进程名
会向所有同名进程发送信号,实现批量终止进程的效果。 - top :除了查看系统资源占用情况外,在 top 界面中还可以通过输入相应指令对进程进行操作,如结束进程、改变进程优先级等,实现对进程的动态管理。
- ps :查看当前系统的进程快照。
五、网络命令
-
网络配置与测试
- ifconfig :查看和配置网络接口。
ifconfig
命令可显示所有网络接口的配置信息,包括 IP 地址、子网掩码、广播地址等;使用ifconfig 网络接口名 IP地址
可配置指定接口的 IP 地址(需要管理员权限)。不过在较新的 Linux 系统中,该命令逐渐被 ip 命令所替代。 - ip :更强大、更灵活的网络配置命令。
ip addr
可查看网络接口的地址信息,ip link
用于设置接口状态(如 up、down),ip route
管理路由规则等,功能涵盖了网络配置的多个方面。 - ping :测试网络连通性。
ping 目标 IP地址
向目标主机发送 ICMP 回显请求,根据返回的应答信息判断网络是否通畅以及网络延迟情况。 - netstat :显示网络连接、路由表、接口统计等网络相关信息。
netstat -an
可查看所有监听和非监听的网络连接状态,包括端口号、协议类型、连接状态等;netstat -rn
显示路由表信息。不过该命令在一些系统中也逐渐被 ss 命令所替代。 - traceroute :追踪数据包的传输路径。
traceroute 目标 IP地址
可显示数据包从本地主机到目标主机所经过的路由器和网络跳数,帮助分析网络路由情况和排查网络故障。 - nslookup :查询域名的 DNS 信息。
nslookup 域名
可查看该域名对应的 IP 地址、DNS 服务器等信息,用于检查域名解析是否正常。 - dig :更全面和灵活的 DNS 查询工具。与 nslookup 类似,但功能更加强大,可查询 DNS 记录的各种类型,如 A 记录、MX 记录、TXT 记录等,并且输出格式更易于解析。
- ifconfig :查看和配置网络接口。
-
文件传输与远程登录
- scp :基于 SSH 协议进行文件的远程安全复制。
scp 本地文件 用户名@远程主机:远程路径
可将本地文件复制到远程主机,反之也可从远程主机复制文件到本地,过程中会对数据进行加密传输,保证文件传输的安全性。 - rsync :更高效、灵活的文件同步工具。
rsync -avz 本地目录 用户名@远程主机:远程目录
可实现本地与远程目录的同步,具有增量传输、保持文件属性、压缩传输等优点,适用于大容量数据的备份和同步。 - ftp/sftp :文件传输协议和安全文件传输协议。ftp 是传统的文件传输方式,但安全性较低;sftp 基于 SSH 协议,提供了加密的文件传输服务,通过
sftp 用户名@远程主机
登录远程主机后,可进行文件的上传、下载、删除等操作。 - ssh :安全外壳协议,用于远程登录到其他计算机。
ssh 用户名@远程主机
可通过加密的通道连接到远程主机,在远程主机上执行命令和操作,实现了远程管理的安全性和便捷性。
- scp :基于 SSH 协议进行文件的远程安全复制。
六、软件包管理命令
-
基于 Debian 的系统(如 Ubuntu)
-
apt :高级软件包管理工具。
- apt update :更新软件包列表,确保系统知道最新的软件包版本信息。
- apt upgrade :升级系统中已安装的所有软件包到最新版本。
- apt install 软件包名 :安装指定的软件包。
- apt remove 软件包名 :卸载指定的软件包。
- apt search 关键词 :搜索与关键词相关的软件包。
- apt show 软件包名 :显示软件包的详细信息,包括版本、描述、依赖关系等。
-
dpkg :低级软件包管理工具,直接操作.deb 格式的软件包文件。
- dpkg -i 软件包文件名.deb :安装或升级指定的.deb 软件包文件。
- dpkg -r 软件包名 :移除已安装的软件包。
- dpkg -l :列出系统中所有已安装的软件包。
-
-
基于 Red Hat 的系统(如 CentOS)
-
yum :Yellowdog Updater Modified,软件包管理器。
- yum install 软件包名 :安装指定的软件包。
- yum remove 软件包名 :卸载指定的软件包。
- yum update 软件包名 :更新指定的软件包到最新版本,不带软件包名则更新所有软件包。
- yum search 关键词 :搜索相关的软件包。
- yum list :列出所有可安装和已安装的软件包。
-
dnf :作为 yum 的下一代版本,功能与 yum 类似,但在依赖解决和性能方面有所改进。使用方法与 yum 基本相同,如
dnf install 软件包名
安装软件包等。 -
rpm :Red Hat Package Manager,低级软件包管理工具,操作.rpm 格式的软件包文件。
- rpm -ivh 软件包文件名.rpm :安装.rpm 软件包文件。
- rpm -e 软件包名 :卸载已安装的软件包。
- rpm -qa :查询系统中所有已安装的软件包。
-
七、用户与权限管理命令
-
用户管理
- useradd :创建新用户。
useradd 用户名
可创建一个新用户,还可通过选项指定用户的主目录、用户 ID 等信息,如useradd -m -d /home/custom_dir 用户名
可为用户创建指定的主目录。 - usermod :修改用户属性。
usermod -s 登录 shell 用户名
可更改用户的登录 shell 类型,usermod -G 用户组 用户名
可修改用户的所属附加用户组等。 - userdel :删除用户。
userdel 用户名
删除指定用户,若用户主目录存在且需要同时删除,可使用userdel -r 用户名
。 - passwd :设置或更改用户密码。
passwd 用户名
可为指定用户设置或修改密码,普通用户只能更改自己的密码,管理员可更改任意用户的密码。 - su :切换用户身份。
su 用户名
可切换到指定用户的身份进行操作,需输入目标用户的密码(除非是以 root 用户切换且目标用户无密码设置等情况)。 - sudo :以超级用户或其他用户权限执行命令。通过在
/etc/sudoers
文件中配置权限,普通用户可以使用sudo 命令
以更高的权限(如 root 权限)执行指定的命令,避免了频繁切换用户和输入 root 密码,提高了系统安全性。
- useradd :创建新用户。
-
用户组管理
- groupadd :创建新的用户组。
groupadd 用户组名
即可创建一个用户组,可通过 -g 选项指定组 ID。 - groupmod :修改用户组属性。
groupmod -n 新组名 原组名
可更改用户组的名称,groupmod -g 新 GID 组名
修改用户组的组 ID。 - groupdel :删除用户组。
groupdel 用户组名
可删除指定的用户组,但需确保该组中无用户存在且无相关文件关联等情况。
- groupadd :创建新的用户组。
-
文件权限与所有者管理
-
chmod :更改文件或目录的权限。权限分为读(r)、写(w)、执行(x)三种,分别对应数字 4、2、1。用户类别分为文件所有者(u)、所属用户组(g)、其他用户(o)以及所有类别(a)。使用方法:
- 符号模式 :如
chmod u+rwx,g+rx,o+r 文件名
表示给文件所有者增加读写执行权限,给所属用户组增加读执行权限,给其他用户增加读权限。 - 数字模式 :如
chmod 755 文件名
,其中 7(4+2+1)表示所有者有读写执行权限,5(4+0+1)表示所属用户组和其他用户有读执行权限。
- 符号模式 :如
-
chown :更改文件或目录的所有者。
chown 新所有者 用户名:组名 文件名
可将文件的所有者更改为指定的用户和组,例如chown user1:user_group 文件名
将文件的所有者设为 user1,所属用户组设为 user_group。 -
chgrp :更改文件或目录的所属用户组。
chgrp 新组名 文件名
可单独更改文件的所属用户组。
-
八、压缩与解压缩命令
-
常用压缩工具
-
tar :归档工具,常与压缩功能结合使用。
- tar -cvf 归档文件名.后缀 要归档的文件或目录 :创建归档文件,如
tar -cvf archive.tar file1 dir1
将 file1 和 dir1 打包成 archive.tar 文件。 - tar -xvf 归档文件名.后缀 :解压归档文件,
tar -xvf archive.tar
可将 archive.tar 文件解压到当前目录。 - tar -tvf 归档文件名.后缀 :查看归档文件中的内容列表。
- tar -cvf 归档文件名.后缀 要归档的文件或目录 :创建归档文件,如
-
gzip :对文件进行压缩,将文件压缩为.gz 格式。
- gzip 文件名 :将文件压缩成.gz 格式,原文件会被删除,如
gzip file.txt
生成 file.txt.gz。 - gzip -d 文件名.gz :解压.gz 格式文件。
- gzip 文件名 :将文件压缩成.gz 格式,原文件会被删除,如
-
bzip2 :提供更高的压缩率,将文件压缩为.bz2 格式。
- bzip2 文件名 :压缩文件为.bz2 格式,原文件删除。
- bzip2 -d 文件名.bz2 :解压.bz2 格式文件。
-
zip/unzip :支持对文件和目录进行压缩和解压,生成.zip 格式文件。
- zip -r 压缩文件名.zip 要压缩的文件或目录 :压缩文件或目录,如
zip -r archive.zip dir1
将 dir1 目录压缩成 archive.zip 文件。 - unzip 压缩文件名.zip :解压.zip 文件到当前目录,可使用 -d 选项指定解压目录。
- zip -r 压缩文件名.zip 要压缩的文件或目录 :压缩文件或目录,如
-
-
压缩与解压缩操作案例 在实际工作中,压缩与解压缩操作非常常见。例如,将项目代码目录进行打包压缩后上传至服务器进行部署,使用
tar -zcvf project.tar.gz project_dir
可将 project_dir 目录及其内容压缩成 project.tar.gz 文件(其中 -z 表示使用 gzip 压缩算法);在服务器上解压该文件时,使用tar -zxvf project.tar.gz
将代码解压到指定位置,方便后续的安装和配置操作。对于一些下载的压缩文件,如软件安装包等,根据不同压缩格式选择相应的解压工具进行解压后使用。
九、磁盘管理命令
-
磁盘分区与格式化
- fdisk :传统的磁盘分区工具,用于对磁盘进行分区操作。通过
fdisk 磁盘设备名
进入分区界面,可查看分区表、创建新分区、删除分区等,操作过程需要输入相应的指令(如 n 创建新分区、d 删除分区、w 保存分区表等),分区完成后需要对新分区进行格式化才能使用。 - parted :更加强大的磁盘分区工具,支持对大容量磁盘进行操作,功能类似于 fdisk,但界面和操作方式有所不同。例如,
parted 磁盘设备名
进入 parted 模式,可进行分区的创建、调整大小、删除等操作。 - mkfs :用于对分区进行格式化,指定文件系统类型。如
mkfs.ext4 分区设备名
可将分区格式化为 ext4 文件系统,常见的文件系统类型还有 ext3、xfs、ntfs 等。
- fdisk :传统的磁盘分区工具,用于对磁盘进行分区操作。通过
-
磁盘挂载与卸载
- mount :挂载磁盘分区或外部存储设备(如 U 盘、光盘等)到指定的挂载点。
mount 分区设备名 挂载点
可将分区挂载到指定目录,挂载后即可通过该目录访问分区中的文件。此外,还可通过修改/etc/fstab
文件实现磁盘的自动挂载,在系统启动时自动挂载指定的分区到对应的挂载点。 - umount :卸载已挂载的磁盘分区或设备。
umount 挂载点
即可安全地卸载磁盘,避免数据丢失和文件系统损坏。
- mount :挂载磁盘分区或外部存储设备(如 U 盘、光盘等)到指定的挂载点。
十、其他实用命令
-
定时任务与计划作业
-
cron :Linux 系统中的定时任务服务,通过编辑 crontab 文件来设置定时任务。
- crontab -e :编辑当前用户的 crontab 文件,在文件中按照 "分 时 日 月 周 指定命令" 的格式设置定时任务。例如,
30 2 * * * /usr/bin/backup_script.sh
表示每天凌晨 2 点 30 分执行备份脚本 /usr/bin/backup_script.sh。 - crontab -l :查看当前用户的 crontab 文件内容。
- crontab -e :编辑当前用户的 crontab 文件,在文件中按照 "分 时 日 月 周 指定命令" 的格式设置定时任务。例如,
-
at :用于执行一次性的计划任务,任务在指定的时间执行一次。
at 时间
(如at 18:00
)进入 at 命令界面,输入要执行的命令后按 Ctrl+D 保存,系统会在指定时间执行这些命令。
-
-
系统时间管理
- date :显示和设置系统日期与时间。
date
单独使用可查看当前系统时间,使用date -s "日期时间"
(如date -s "2025-08-06 10:30:00")可设置系统时间为指定的时间(需要具有管理员权限)。此外,还可通过该命令查看日期和时间的特定格式信息,如
date "+%Y-%m-%d"` 可仅显示日期部分。 - timedatectl :在使用 systemd 的系统中,用于查看和设置系统时间、时区以及 NTP(网络时间协议)同步等。
timedatectl status
可查看系统时间相关状态信息,timedatectl set-timezone 时区名
(如 Asia/Shanghai)设置系统时区,timedatectl set-ntp true
启用 NTP 同步,确保系统时间的准确性。
- date :显示和设置系统日期与时间。
-
日志查看与分析
- dmesg :查看内核环形缓冲区中的系统消息日志,这些日志通常与硬件设备、内核模块加载等系统底层事件相关。
dmesg
命令可帮助排查硬件兼容性问题、驱动加载问题等。 - syslog :系统日志服务,将系统各服务和应用程序的日志信息记录到指定文件中(默认在 /var/log/ 目录下)。不同的日志文件记录不同类型的信息,如 auth.log 记录认证相关事件、daemon.log 记录系统服务日志等。通过查看这些日志文件,可了解系统和服务的运行状况,分析故障原因。
- journalctl :在 systemd 系统中,用于查询和查看系统日志。
journalctl -u 服务名
可查看指定服务的日志,journalctl -b
查看本次启动的日志,journalctl --since "时间"
(如 `journalctl --since "2025-08-05 08:00:00")查看从指定时间以后产生的日志,方便对日志进行精确筛选和分析。
- dmesg :查看内核环形缓冲区中的系统消息日志,这些日志通常与硬件设备、内核模块加载等系统底层事件相关。
-
Shell 脚本编写基础
-
脚本创建与执行
-
变量与参数使用
- 在脚本中定义变量:
var_name="value"
,使用变量时用${var_name}
或$var_name
。 - 脚本参数:
$0
表示脚本名称,$1
、$2
等表示传递给脚本的第一个、第二个参数,$#
表示参数个数,$@
表示所有参数。
- 在脚本中定义变量:
-
条件语句与循环结构
- 条件语句 :
if [ 条件 ]; then ... elif [ 条件 ]; then ... else ... fi
用于根据条件执行不同的命令块。 - 循环结构 :
for 变量 in 列表; do ... done
遍历列表中的元素;while [ 条件 ]; do ... done
在条件为真时循环执行命令;until [ 条件 ]; do ... done
在条件为假时循环执行命令。通过编写 Shell 脚本,可以将一系列复杂的 Linux 命令组合起来,实现自动化的批量操作和任务调度,大大提高工作效率,减少重复性工作。
- 条件语句 :
-
掌握 Linux 常用命令对于技术工程师来说至关重要,本文对各类命令进行了详细的分类总结,从基础操作到高级管理,涵盖了文件、文本、系统、网络、软件包、用户权限、磁盘以及实用工具等多个方面的命令。通过不断学习和实践这些命令,读者可以在日常工作中更加高效地使用 Linux 系统,解决各种技术问题和任务需求。同时,熟练运用 Shell 脚本编写技巧,可进一步发挥 Linux 命令的强大功能,实现自动化运维和复杂任务处理,提升在软件开发、服务器管理等领域的综合能力。