一、文件与目录操作命令(最基础高频)
1. ls - 列出目录内容
- 功能:列出指定目录下的文件 / 目录,默认列出当前目录。
- 核心参数:
-l(长格式):显示文件权限、所有者、大小、修改时间等详细信息。-a(all):显示所有文件(含隐藏文件,以.开头)。-h(human-readable):以人类可读格式显示文件大小(如 KB、MB)。-r(reverse):反向排序(默认按字母升序)。-t(time):按修改时间排序(最新在前)。
- 示例:
ls -lha # 长格式显示当前目录所有文件,含隐藏文件,大小人性化显示 ls /home/user # 列出指定目录/home/user下的内容
2. cd - 切换工作目录
- 功能:切换当前终端的工作目录。
- 核心用法:
cd 目录路径:切换到指定目录(绝对路径 / 相对路径)。cd ~或cd:切换到当前用户的家目录(如/home/ubuntu)。cd ..:切换到上级目录。cd -:切换到上一次所在的目录。
- 示例:
cd /etc/nginx # 绝对路径切换到nginx配置目录 cd ../logs # 相对路径切换到上级目录的logs子目录 cd ~/Documents # 切换到家目录的Documents文件夹
3. pwd - 显示当前工作目录
- 功能:打印当前终端所在的绝对路径。
- 示例:
pwd # 输出如:/home/user/Documents
4. mkdir - 创建目录
- 功能:创建新目录。
- 核心参数:
-p(parents):递归创建多级目录(父目录不存在时自动创建)。-m(mode):创建时指定目录权限(如755)。
- 示例:
mkdir test # 创建单个目录test mkdir -p data/logs # 递归创建data目录及子目录logs mkdir -m 700 private # 创建权限为700(仅所有者可读写执行)的目录
5. rm - 删除文件 / 目录
- 功能:删除文件或目录,慎用(无回收站,删除后难恢复)。
- 核心参数:
-f(force):强制删除(忽略不存在的文件,不提示)。-r(recursive):递归删除目录及目录内所有内容(删除目录必须用)。-i(interactive):删除前提示确认(默认部分系统启用)。
- 示例:
rm file.txt # 删除单个文件file.txt rm -rf dir/ # 强制递归删除dir目录及所有内容(高危命令,谨慎使用) rm -i *.log # 删除所有.log文件,删除前逐一提示
6. cp - 复制文件 / 目录
- 功能:复制文件或目录到指定位置。
- 核心参数:
-r(recursive):递归复制目录(复制目录必须用)。-p(preserve):保留文件的权限、所有者、修改时间等属性。-f(force):强制覆盖目标文件(无需提示)。-a(archive):等价于-dR --preserve=all,适用于备份(保留所有属性 + 递归复制)。
- 示例:
cp file.txt /home/user/ # 复制file.txt到/home/user目录下 cp -r dir/ /backup/ # 递归复制dir目录到/backup目录下 cp -a docs/ docs_backup/ # 备份docs目录,保留所有属性
7. mv - 移动 / 重命名文件 / 目录
- 功能:移动文件 / 目录到指定位置,或重命名文件 / 目录。
- 核心参数:
-f(force):强制覆盖目标文件(无提示)。-i(interactive):覆盖前提示确认。
- 示例:
mv file.txt newfile.txt # 重命名file.txt为newfile.txt mv data/ /home/user/ # 移动data目录到/home/user目录下 mv -f old.log /tmp/ # 强制移动old.log到/tmp目录,覆盖已存在文件
8. touch - 创建空文件 / 修改文件时间戳
- 功能:创建空白文件,或更新文件的访问时间、修改时间(默认两者都更新)。
- 核心参数:
-d(date):指定时间戳(如2024-01-01 10:00)。-m(modify):仅更新修改时间。-a(access):仅更新访问时间。
- 示例:
touch test.txt # 创建空文件test.txt touch -d "2024-05-20 14:30" old.txt # 修改old.txt的时间戳为指定时间 touch -a readme.md # 仅更新readme.md的访问时间
9. cat - 查看文件内容
- 功能:连接并打印文件内容(适合查看小文件)。
- 核心参数:
-n(number):显示行号。-b(number-nonblank):仅对非空行显示行号。-T(show-tabs):显示制表符(Tab)为^I。
- 示例:
cat /etc/hosts # 查看hosts文件内容 cat -n test.txt # 显示test.txt内容并标注行号 cat file1.txt file2.txt > file3.txt # 合并file1和file2的内容到file3(覆盖)
10. more/less - 分页查看大文件
- 功能:分页显示文件内容(适合大文件,避免内容刷屏)。
- 核心区别:
more:仅支持向下滚动(空格翻页,Enter 换行,q退出)。less:支持上下滚动、搜索(更灵活,/关键词搜索,n下一个,q退出)。
- 示例:
more /var/log/syslog # 分页查看系统日志(仅向下翻) less /etc/passwd # 分页查看用户配置文件(支持上下滚动和搜索)
11. head/tail - 查看文件首尾内容
- 功能:
head查看文件开头部分,tail查看文件结尾部分。 - 核心参数:
-n N:显示前 N 行(head)或后 N 行(tail),默认 10 行。-f(follow):实时跟踪文件更新(tail专属,适合查看日志)。
- 示例:
head -5 /etc/passwd # 查看passwd文件前5行 tail -10 /var/log/nginx/access.log # 查看nginx访问日志最后10行 tail -f /var/log/syslog # 实时跟踪系统日志更新(按Ctrl+C退出)
12. find - 查找文件 / 目录
- 功能:按路径、名称、大小、时间等条件查找文件 / 目录。
- 核心参数:
-name "文件名":按名称查找(支持通配符*、?)。-path "路径":按路径查找。-size [+/-]大小:按大小查找(如+100M大于 100MB,-10K小于 10KB)。-mtime [+/-]天数:按修改时间查找(如+7修改时间超过 7 天,-124 小时内修改)。-type f/d:指定查找类型(f文件,d目录)。-exec 命令 {} \;:对查找结果执行指定命令({}代指查找结果)。
- 示例:
find /home -name "*.txt" # 在/home目录下查找所有.txt文件 find /etc -type d -name "nginx" # 在/etc目录下查找名为nginx的目录 find /var/log -size +50M # 在/var/log目录下查找大于50MB的文件 find /tmp -mtime +3 -exec rm -rf {} \; # 删除/tmp目录下3天前修改的文件/目录
13. grep - 文本搜索工具
- 功能:在文件或命令输出中搜索匹配的字符串 / 正则表达式。
- 核心参数:
-i(ignore-case):忽略大小写。-n(line-number):显示匹配行的行号。-v(invert-match):反向匹配(显示不包含关键词的行)。-r(recursive):递归搜索目录下所有文件。-E(extended-regexp):支持扩展正则表达式(无需转义+、|等)。
- 示例:
grep "error" /var/log/syslog # 在系统日志中搜索"error"字符串 grep -in "warning" /etc/nginx/nginx.conf # 忽略大小写搜索nginx配置文件中的"warning",显示行号 grep -r "test" /home/user # 递归搜索/home/user目录下所有文件中的"test" ps aux | grep "nginx" # 结合管道,搜索nginx进程
二、文件权限与用户管理命令
1. chmod - 修改文件 / 目录权限
- 功能:修改文件或目录的访问权限(所有者、组用户、其他用户的读 / 写 / 执行权限)。
- 权限表示:
- 数字法(常用):
r=4、w=2、x=1,权限组合为三者之和(如755= 所有者 rwx,组用户 rx,其他用户 rx)。 - 符号法:
u(所有者)、g(组用户)、o(其他用户)、a(所有用户);+(添加权限)、-(移除权限)、=(设置权限)。
- 数字法(常用):
- 示例:
chmod 755 script.sh # 设为所有者可读写执行,其他用户只读执行 chmod 644 file.txt # 设为所有者读写,其他用户只读(文件常用权限) chmod u+x test.sh # 给所有者添加执行权限 chmod g-w dir/ # 给组用户移除写权限
2. chown - 修改文件 / 目录所有者
- 功能:修改文件或目录的所有者(需 root 权限或文件所有者)。
- 核心用法:
chown [所有者][:组] 文件/目录。 - 示例:
sudo chown user:user file.txt # 将file.txt的所有者和组改为user sudo chown root /home/user/test.sh # 将test.sh的所有者改为root sudo chown -R www-data:www-data /var/www # 递归修改/var/www目录的所有者为www-data(web服务常用)
3. chgrp - 修改文件 / 目录所属组
- 功能:单独修改文件或目录的所属组(
chown可替代,但该命令更专注)。 - 示例:
chgrp users file.txt # 将file.txt的所属组改为users chgrp -R staff /home/shared # 递归修改/shared目录的所属组为staff
4. useradd - 创建新用户
- 功能:创建 Linux 系统用户(需 root 权限)。
- 核心参数:
-m(create-home):自动创建用户家目录(如/home/用户名)。-s shell路径:指定用户登录 shell(如/bin/bash,默认/bin/sh)。-g 组名:指定用户初始组。-G 组名1,组名2:指定用户附加组。
- 示例:
sudo useradd -m -s /bin/bash newuser # 创建新用户newuser,自动创建家目录,登录shell为bash sudo useradd -g staff -G sudo newuser # 创建用户newuser,初始组为staff,附加组为sudo(获取管理员权限)
5. passwd - 修改用户密码
- 功能:修改当前用户或其他用户的密码(修改其他用户需 root 权限)。
- 核心参数:
-l(lock):锁定用户(禁止登录)。-u(unlock):解锁用户。-d(delete):删除用户密码(登录无需密码)。
- 示例:
passwd # 修改当前用户密码(输入时密码不显示) sudo passwd newuser # 管理员修改newuser的密码 sudo passwd -l newuser # 锁定newuser用户
6. userdel - 删除用户
- 功能:删除系统用户(需root 权限)。
- 核心参数:
-r(remove):递归删除用户家目录和邮件目录(默认仅删除用户账号)。
- 示例:
sudo userdel -r newuser # 彻底删除newuser用户及家目录
7. groupadd/groupdel - 组管理
- 功能:
groupadd创建用户组,groupdel删除用户组(需 root 权限)。 - 示例:
sudo groupadd dev # 创建名为dev的用户组 sudo groupdel dev # 删除dev用户组
8. id/whoami/w - 查看用户信息
- id:显示当前用户的 UID、GID 及所属组。
- whoami:显示当前登录用户名。
- w:显示当前系统所有登录用户及他们的操作。
- 示例:
id # 输出如:uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom)... whoami # 输出当前用户名,如user w # 显示所有登录用户及进程信息
三、系统管理与进程命令
1. ps - 查看进程状态
- 功能:列出当前系统的进程信息。
- 核心参数:
aux:显示所有用户的所有进程(最常用组合)。-ef:显示进程的父进程 ID(PPID)、进程 ID(PID)等详细信息。-u 用户名:仅显示指定用户的进程。
- 示例:
ps aux # 查看所有进程(USER用户名、PID进程ID、%CPU CPU使用率、%MEM内存使用率、COMMAND命令) ps aux | grep "nginx" # 查看nginx相关进程 ps -ef | grep "python" # 查看python进程及父进程ID
2. top - 实时监控系统资源与进程
- 功能:实时动态显示系统 CPU、内存、进程等资源使用情况(默认每 3 秒刷新)。
- 交互快捷键:
P:按 CPU 使用率排序(默认)。M:按内存使用率排序。N:按进程 ID(PID)排序。k:终止指定 PID 的进程。q:退出 top。
- 示例:
top # 启动实时监控 top -u user # 仅监控用户user的进程
3. kill - 终止进程
- 功能:向进程发送信号,实现终止、重启等操作(需知道进程 PID,root 可终止任意进程)。
- 核心信号:
-15(SIGTERM,默认):优雅终止进程(允许进程清理资源)。-9(SIGKILL):强制终止进程(立即杀死,无清理,慎用)。-1(SIGHUP):重启进程(部分服务如 nginx、apache 支持)。
- 示例:
kill 1234 # 向PID为1234的进程发送SIGTERM信号(优雅终止) kill -9 1234 # 强制终止PID为1234的进程 kill -1 8080 # 重启PID为8080的服务进程 killall nginx # 终止所有nginx进程(按进程名终止,需安装psmisc包)
4. systemctl - 系统服务管理(Systemd 系统)
- 功能:管理系统服务(启动、停止、重启、设置开机自启,适用于 Ubuntu 16.04+、CentOS 7+)。
- 核心用法:
systemctl start 服务名:启动服务。systemctl stop 服务名:停止服务。systemctl restart 服务名:重启服务。systemctl status 服务名:查看服务状态。systemctl enable 服务名:设置开机自启。systemctl disable 服务名:取消开机自启。systemctl list-unit-files --type=service:列出所有服务及开机自启状态。
- 示例:
sudo systemctl start nginx # 启动nginx服务 sudo systemctl stop mysql # 停止mysql服务 sudo systemctl restart sshd # 重启ssh服务 sudo systemctl status docker # 查看docker服务状态 sudo systemctl enable nginx # 设置nginx开机自启
5. df - 查看磁盘空间使用情况
- 功能:显示文件系统的磁盘空间使用情况(总容量、已用、可用、挂载点)。
- 核心参数:
-h(human-readable):人性化显示大小(KB/MB/GB)。-T(type):显示文件系统类型(如 ext4、xfs)。
- 示例:
df -h # 查看所有挂载的文件系统磁盘使用情况 df -h /home # 查看/home目录所在文件系统的磁盘使用情况 df -T # 显示文件系统类型
6. du - 查看目录 / 文件磁盘占用
- 功能:计算文件或目录占用的磁盘空间(与
df区别:df看文件系统整体,du看具体文件 / 目录)。 - 核心参数:
-h:人性化显示大小。-s(summarize):仅显示总大小(不显示子目录详情)。-c(total):显示总计大小。
- 示例:
du -sh /home/user # 查看/home/user目录总占用空间 du -h /var/log/ # 查看/var/log目录及子目录的占用详情 du -hc *.txt # 查看所有.txt文件的占用大小,并显示总计
7. free - 查看内存使用情况
- 功能:显示系统内存(物理内存、交换分区)的使用情况。
- 核心参数:
-h:人性化显示大小。-m:以 MB 为单位显示(默认 KB)。-g:以 GB 为单位显示。
- 示例:
free -h # 人性化显示内存使用情况 free -m # 以MB为单位显示
8. uname - 查看系统信息
- 功能:显示系统内核版本、主机名、硬件架构等信息。
- 核心参数:
-a(all):显示所有系统信息(最常用)。-r:仅显示内核版本。-n:仅显示主机名。
- 示例:
uname -a # 输出如:Linux ubuntu 5.4.0-150-generic #167-Ubuntu SMP Wed May 24 15:51:08 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux uname -r # 输出内核版本:5.4.0-150-generic
9. hostname - 查看 / 修改主机名
- 功能:显示或临时修改系统主机名(永久修改需编辑配置文件)。
- 示例:
hostname # 显示当前主机名 sudo hostname new-hostname # 临时修改主机名为new-hostname(重启失效) sudo hostnamectl set-hostname new-hostname # 永久修改主机名(Systemd系统,无需重启)
10. date - 查看 / 修改系统时间
- 功能:显示或修改系统日期和时间。
- 示例:
date # 显示当前系统时间(如:Wed Oct 18 15:30:22 CST 2023) date "+%Y-%m-%d %H:%M:%S" # 自定义格式显示(年-月-日 时:分:秒) sudo date -s "2024-01-01 10:00:00" # 修改系统时间为指定时间
四、网络操作命令
1. ifconfig/ip - 网络接口配置
- 功能:查看或配置网络接口(IP 地址、子网掩码、MAC 地址等)。
ifconfig:传统命令(部分系统需安装 net-tools 包)。ip:新一代命令(功能更全,推荐使用)。
- 示例:
ifconfig # 查看所有网络接口信息 ip addr # 查看IP地址(等价于ifconfig) ip link set eth0 up/down # 启用/禁用eth0网卡 sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 # 临时设置eth0的IP地址
2. ping - 测试网络连通性
- 功能:向目标主机发送 ICMP 请求包,测试网络是否可达。
- 核心参数:
-c 次数:指定发送包的次数(默认无限发送,Ctrl+C 终止)。-i 间隔:指定发送间隔(默认 1 秒)。-s 大小:指定数据包大小。
- 示例:
ping www.baidu.com # 测试与百度的连通性(无限发送) ping -c 4 192.168.1.1 # 向网关发送4个数据包测试连通性
3. netstat/ss - 查看网络连接状态
- 功能:显示系统的网络连接、端口监听、进程关联等信息。
netstat:传统命令(需安装 net-tools 包)。ss:新一代命令(更快、功能更全)。
- 核心参数:
-t(tcp):仅显示 TCP 连接。-u(udp):仅显示 UDP 连接。-l(listen):仅显示监听状态的端口。-n(numeric):显示 IP 和端口号(不解析域名)。-p(program):显示关联的进程 PID 和名称(需 root 权限)。
- 示例:
netstat -tlnp # 查看所有监听的TCP端口及关联进程 ss -ulnp # 查看所有监听的UDP端口及关联进程 netstat -an | grep 80 # 查看80端口的连接状态
4. curl/wget - 网络下载工具
- curl:多功能网络工具,支持 HTTP/HTTPS/FTP 等协议,可下载文件、发送请求。
- wget:专注于文件下载(支持断点续传、后台下载)。
- 示例:
# curl用法 curl https://www.baidu.com # 访问百度并输出HTML内容 curl -O https://example.com/file.zip # 下载文件并保存为原文件名 curl -L https://example.com/redirect # 跟随重定向下载 # wget用法 wget https://example.com/file.zip # 下载文件 wget -c https://example.com/large.zip # 断点续传下载大文件 wget -b https://example.com/bigfile.iso # 后台下载(日志保存到wget-log)
5. scp - 远程文件复制
- 功能:通过 SSH 协议在本地和远程主机之间复制文件 / 目录(加密传输)。
- 核心参数:
-r:递归复制目录。-P 端口:指定远程主机 SSH 端口(默认 22)。
- 示例:
# 本地文件复制到远程主机 scp localfile.txt user@remote-ip:/home/user/ # 远程文件复制到本地 scp user@remote-ip:/home/user/remotefile.txt ./ # 复制目录(加-r) scp -r localdir/ user@remote-ip:/home/user/
6. ssh - 远程登录
- 功能:通过 SSH 协议远程登录 Linux 主机(加密传输,安全)。
- 核心参数:
-p 端口:指定远程主机 SSH 端口(默认 22)。-X:启用 X11 转发(远程图形界面)。
- 示例:
ssh user@remote-ip # 登录远程主机(默认端口22) ssh -p 2222 user@remote-ip # 登录指定端口2222的远程主机 ssh -X user@remote-ip # 登录并启用图形界面转发
五、压缩与解压命令
1. tar - 归档 / 压缩工具(最常用)
- 功能:将多个文件 / 目录归档为一个 tar 包,可结合 gzip/bzip2/xz 压缩。
- 核心参数(记忆口诀:打包压缩
czf,解压xzf):-c(create):创建归档包。-x(extract):解压归档包。-z(gzip):用 gzip 压缩 / 解压(后缀.tar.gz或.tgz)。-j(bzip2):用 bzip2 压缩 / 解压(后缀.tar.bz2)。-J(xz):用 xz 压缩 / 解压(后缀.tar.xz)。-f(file):指定归档文件名(必须放在参数最后)。-v(verbose):显示压缩 / 解压过程。-C(directory):指定解压目录(默认当前目录)。
- 示例:
# 压缩(tar.gz格式) tar -czvf file.tar.gz dir1/ file1.txt # 将dir1和file1.txt压缩为file.tar.gz # 解压(tar.gz格式) tar -xzvf file.tar.gz # 解压到当前目录 tar -xzvf file.tar.gz -C /home/user/ # 解压到/home/user目录 # 压缩(tar.bz2格式) tar -cjvf file.tar.bz2 dir1/ # 解压(tar.xz格式) tar -xJvf file.tar.xz
2. zip/unzip - ZIP 格式压缩 / 解压
- 功能:处理 ZIP 格式的压缩文件(跨平台兼容,Windows/Linux 通用)。
- 示例:
# 压缩(需安装zip包) zip -r file.zip dir1/ file1.txt # 递归压缩dir1和file1.txt为file.zip # 解压(需安装unzip包) unzip file.zip # 解压到当前目录 unzip file.zip -d /home/user/ # 解压到指定目录 unzip -l file.zip # 查看压缩包内的文件列表
3. gzip/gunzip - GZ 格式压缩 / 解压
- 功能:压缩单个文件(不能压缩目录),压缩后原文件删除(后缀
.gz)。 - 示例:
gzip file.txt # 压缩file.txt为file.txt.gz(原文件删除) gzip -k file.txt # 压缩并保留原文件 gunzip file.txt.gz # 解压为file.txt(原.gz文件删除)
六、其他实用命令
1. history - 查看命令历史
- 功能:显示当前用户执行过的命令历史(默认保存 1000 条,可通过
HISTSIZE调整)。 - 示例:
history # 查看所有命令历史 history 10 # 查看最近10条命令 !123 # 执行历史中第123条命令 !ls # 执行上一条以ls开头的命令 Ctrl+R # 搜索命令历史(输入关键词匹配)
2. alias - 设置命令别名
- 功能:为常用命令设置简化别名(临时生效,永久生效需写入配置文件)。
- 示例:
alias ll='ls -lha' # 临时设置ll为ls -lha的别名 alias rm='rm -i' # 临时设置rm为带提示的删除(安全) # 永久生效(写入用户配置文件) echo "alias ll='ls -lha'" >> ~/.bashrc # 对当前用户生效 source ~/.bashrc # 立即生效(无需重启终端) unalias ll # 取消别名
3. sudo - 临时获取 root 权限
- 功能:允许普通用户执行需 root 权限的命令(需在
/etc/sudoers中配置权限)。 - 示例:
sudo apt update # 以root权限更新软件源(Debian/Ubuntu) sudo yum install nginx # 以root权限安装nginx(CentOS/RHEL) sudo -i # 切换到root用户(需输入当前用户密码)
4. apt/yum/dnf - 包管理命令
- 功能:Linux 系统软件包管理工具(自动解决依赖关系)。
apt:Debian/Ubuntu 系列系统(apt-get 的简化版)。yum:CentOS 6/RHEL 6 系列(已逐步被 dnf 替代)。dnf:CentOS 7+/RHEL 7 + 系列(yum 的升级版)。
- 示例:
# Debian/Ubuntu(apt) sudo apt update # 更新软件源索引 sudo apt install nginx # 安装nginx sudo apt remove nginx # 卸载nginx(保留配置文件) sudo apt purge nginx # 彻底卸载nginx(删除配置文件) sudo apt upgrade # 升级所有已安装软件 # CentOS/RHEL(yum) sudo yum update # 更新软件源 sudo yum install nginx # 安装nginx sudo yum remove nginx # 卸载nginx sudo yum list installed # 列出已安装软件 # CentOS 8+/RHEL 8+(dnf) sudo dnf install nginx sudo dnf remove nginx
5. echo - 输出字符串 / 变量
- 功能:在终端输出指定字符串或环境变量的值。
- 示例:
echo "Hello Linux" # 输出字符串 echo $PATH # 输出环境变量PATH的值(系统命令搜索路径) echo "当前用户:$USER" # 输出当前用户名(变量需加$) echo "abc" > file.txt # 将字符串写入文件(覆盖原有内容) echo "def" >> file.txt # 将字符串追加到文件末尾
6. wc - 统计文本行数 / 字数 / 字节数
- 功能:统计文件或命令输出的行数(-l)、单词数(-w)、字节数(-c)。
- 示例:
wc -l file.txt # 统计file.txt的行数 wc -w file.txt # 统计单词数 wc -c file.txt # 统计字节数 cat file.txt | wc -l # 统计命令输出的行数
七、命令行实用技巧
- 管道符
|:将前一个命令的输出作为后一个命令的输入(如ps aux | grep nginx)。 - 重定向:
>:覆盖写入文件(如ls > list.txt)。>>:追加写入文件(如echo "test" >> list.txt)。<:从文件读取输入(如wc -l < file.txt)。
- 通配符:
*:匹配任意多个字符(如*.txt所有.txt 文件)。?:匹配单个字符(如file?.txt匹配 file1.txt、file2.txt)。[]:匹配括号内的任意一个字符(如file[1-3].txt匹配 file1-3.txt)。
- 快捷键:
Tab:自动补全命令 / 文件名 / 目录名(高效必备)。Ctrl+C:终止当前运行的命令。Ctrl+D:退出当前终端 / 登录会话(等价于exit)。Ctrl+Z:暂停当前命令(用fg恢复到前台,bg放到后台)。