Linux常用命令大全
Linux常用命令大全
前言
工欲善其事必先利其器!人都有遗忘性,必须把以前学的整理,温故而知新,可以为师矣。本笔记整理了Linux系统中最常用的命令,按功能分类,便于查询和使用。
一、文件与目录管理
1. 目录操作
pwd - 显示当前工作目录
1 | pwd |
功能:输出当前所在的绝对路径
cd - 切换目录
1 | cd [目录路径] |
功能:改变当前工作目录
示例:1
2
3
4cd /etc # 切换到/etc目录
cd ~ # 切换到用户主目录
cd .. # 切换到上级目录
cd ../.. # 切换到上上级目录
ls - 列出目录内容
1 | ls [选项] [目录/文件] |
功能:列出目录中的文件和子目录
常用选项:
-l:以长格式显示(包含权限、所有者、大小、修改时间等)-a:显示所有文件,包括隐藏文件(以.开头的文件)-h:以人类可读的格式显示文件大小-r:反向排序-t:按修改时间排序
示例:1
2ls -la /home/user # 显示/home/user目录的所有文件(包括隐藏文件)的详细信息
ls -lh # 以人类可读格式显示当前目录文件大小
mkdir - 创建目录
1 | mkdir [选项] 目录名 |
功能:创建新目录
常用选项:
-p:递归创建多级目录
示例:1
2mkdir newdir # 创建单个目录
mkdir -p dir1/dir2/dir3 # 递归创建多级目录
rmdir - 删除空目录
1 | rmdir [选项] 目录名 |
功能:删除空目录
常用选项:
-p:递归删除多级空目录
示例:1
2rmdir newdir # 删除名为newdir的空目录
rmdir -p dir1/dir2/dir3 # 递归删除多级空目录
2. 文件操作
touch - 创建文件或更新时间戳
1 | touch [文件名] |
功能:如果文件不存在则创建空文件;如果文件存在,则更新其访问时间和修改时间
示例:1
touch newfile.txt # 创建空文件或更新时间戳
cp - 复制文件或目录
1 | cp [选项] 源文件 目标文件 |
功能:复制文件或目录
常用选项:
-r:递归复制目录及其内容-i:覆盖前提示确认-v:显示复制过程
示例:1
2
3cp file.txt backup.txt # 复制file.txt为backup.txt
cp -r dir1 dir2 # 复制整个目录dir1到dir2
cp -iv *.txt backup/ # 复制所有txt文件到backup目录,并显示复制过程
mv - 移动或重命名文件/目录
1 | mv [选项] 源文件/目录 目标文件/目录 |
功能:移动文件/目录或重命名
常用选项:
-i:覆盖前提示确认-v:显示移动过程
示例:1
2
3mv file.txt /tmp # 将file.txt移动到/tmp目录
mv file.txt newfile.txt # 重命名file.txt为newfile.txt
mv dir1 dir2 # 如果dir2不存在,则重命名dir1为dir2;如果dir2存在,则将dir1移动到dir2下
rm - 删除文件或目录
1 | rm [选项] 文件/目录 |
功能:删除文件或目录
常用选项:
-r:递归删除目录及其内容-f:强制删除,无需确认-i:删除前提示确认-v:显示删除过程
示例:1
2
3
4rm file.txt # 删除单个文件
rm -r dir1 # 删除目录及其内容
rm -rf dir2 # 强制删除目录及其内容,无需确认
rm *.log # 删除当前目录下所有.log文件
ln - 创建链接
1 | ln [源文件] [链接名] # 创建硬链接 |
功能:创建文件或目录的链接
- 硬链接:通过索引节点号(Inode)链接到文件内容,删除源文件后链接仍可访问
- 软链接:类似于Windows的快捷方式,链接指向源文件路径,删除源文件后链接失效
示例:1
2
3ln file.txt hardlink.txt # 创建硬链接
ln -s file.txt symlink.txt # 创建软链接
ln -s /usr/local/bin bin-link # 为目录创建软链接
二、文件内容查看与处理
1. 文件内容查看
cat - 显示文件内容
1 | cat [选项] 文件名 |
功能:显示文件的全部内容
常用选项:
-n:显示行号-b:显示非空行的行号
示例:1
2cat file.txt # 显示文件内容
cat -n file.txt # 显示文件内容并带行号
less - 分页查看文件内容
1 | less 文件名 |
功能:分页显示文件内容,支持上下滚动和搜索
常用操作:
空格键:向下翻页b:向上翻页/关键词:向下搜索关键词?关键词:向上搜索关键词n:查找下一个匹配项N:查找上一个匹配项q:退出
示例:1
less large_file.txt # 分页查看大文件内容
head - 显示文件开头
1 | head [选项] 文件名 |
功能:显示文件的前几行内容
常用选项:
-n <行数>:显示指定行数的内容(默认10行)
示例:1
2head file.txt # 显示文件前10行
head -n 20 file.txt # 显示文件前20行
tail - 显示文件结尾
1 | tail [选项] 文件名 |
功能:显示文件的最后几行内容
常用选项:
-n <行数>:显示指定行数的内容(默认10行)-f:实时跟踪文件内容变化(常用于日志监控)
示例:1
2
3
4tail file.txt # 显示文件最后10行
tail -n 20 file.txt # 显示文件最后20行
tail -f /var/log/syslog # 实时监控系统日志
2. 文件内容搜索与处理
grep - 在文件中搜索匹配的行
1 | grep [选项] "模式" 文件名 |
功能:在文件中搜索包含指定模式的行
常用选项:
-i:忽略大小写-n:显示匹配行的行号-v:显示不匹配的行-r:递归搜索目录下的所有文件-A <行数>:显示匹配行及其后的指定行数-B <行数>:显示匹配行及其前的指定行数
示例:1
2
3grep "error" log.txt # 搜索log.txt中包含"error"的行
grep -n "warning" log.txt # 搜索包含"warning"的行并显示行号
grep -r "function" /home/user # 递归搜索/home/user目录下所有包含"function"的文件
sed - 流编辑器,用于文本替换和处理
1 | sed [选项] '命令' 文件名 |
功能:对文件内容进行替换、删除、插入等操作
常用选项:
-i:直接修改文件内容(否则仅显示修改结果)-e:执行多个sed命令
示例:1
2
3sed 's/old/new/g' file.txt # 将文件中所有"old"替换为"new"(仅显示结果)
sed -i 's/old/new/g' file.txt # 将文件中所有"old"替换为"new"(直接修改文件)
sed '/^#/d' file.txt # 删除所有以#开头的注释行
awk - 文本处理工具,用于数据提取和报告生成
1 | awk '条件 {命令}' 文件名 |
功能:按行处理文本文件,支持字段提取、条件判断和计算
示例:1
2
3awk '{print $1, $3}' file.txt # 打印文件中每行的第1和第3个字段
awk -F: '{print $1}' /etc/passwd # 以冒号为分隔符,打印/etc/passwd中每行的第1个字段(用户名)
awk '$3 > 1000 {print $1}' /etc/passwd # 打印UID大于1000的用户名
wc - 统计文件的字节数、字数、行数
1 | wc [选项] 文件名 |
功能:统计文件的行数、字数、字节数等信息
常用选项:
-l:统计行数-w:统计字数-c:统计字节数-m:统计字符数
示例:1
2
3
4wc -l file.txt # 统计文件行数
wc -w file.txt # 统计文件字数
wc -c file.txt # 统计文件字节数
wc -l *.txt # 统计当前目录下所有txt文件的总行数
三、权限管理
1. 文件权限查看
ls -l - 查看文件权限
1 | ls -l 文件名 |
功能:显示文件的详细信息,包括权限、所有者、所属组等
权限表示格式:rwxrwxrwx
- 前三位:文件所有者的权限
- 中间三位:文件所属组的权限
- 后三位:其他用户的权限
权限含义:
r:读权限(4)w:写权限(2)x:执行权限(1)-:无权限(0)
示例:1
2
3ls -l file.txt # 查看文件权限
# 输出示例:-rw-r--r-- 1 user group 1024 Aug 28 12:00 file.txt
# 权限部分:rw-(所有者)r--(所属组)r--(其他用户)
2. 权限修改
chmod - 修改文件或目录的权限
1 | chmod [选项] 权限 文件名/目录名 |
功能:修改文件或目录的访问权限
权限表示方式:
- 数字表示法:如755、644
- 符号表示法:如u+x、g-w、o=r
数字权限计算:
- r=4, w=2, x=1, -=0
- 所有者权限 + 所属组权限 + 其他用户权限
示例:1
2
3
4
5chmod 755 file.sh # 设置文件权限为rwxr-xr-x
chmod u+x file.sh # 给所有者添加执行权限
chmod g-w file.txt # 移除所属组的写权限
chmod o=r file.txt # 给其他用户设置只读权限
chmod -R 777 dir1 # 递归修改目录及其内容的权限为rwxrwxrwx
chown - 修改文件或目录的所有者和所属组
1 | chown [选项] 所有者[:所属组] 文件名/目录名 |
功能:修改文件或目录的所有者和所属组
常用选项:
-R:递归修改目录及其内容的所有者和所属组
示例:1
2
3chown user file.txt # 修改文件所有者为user
chown user:group file.txt # 修改文件所有者为user,所属组为group
chown -R user:group dir1 # 递归修改目录及其内容的所有者和所属组
chgrp - 修改文件或目录的所属组
1 | chgrp [选项] 组名 文件名/目录名 |
功能:修改文件或目录的所属组
常用选项:
-R:递归修改目录及其内容的所属组
示例:1
2chgrp group file.txt # 修改文件所属组为group
chgrp -R group dir1 # 递归修改目录及其内容的所属组
四、系统信息与管理
1. 系统信息查看
uname - 显示系统信息
1 | uname [选项] |
功能:显示系统的基本信息
常用选项:
-a:显示所有系统信息(内核名称、主机名、内核版本、内核发布日期、硬件架构等)-r:显示内核版本-m:显示硬件架构
示例:1
2uname -a # 显示所有系统信息
uname -r # 显示内核版本
hostname - 显示或设置主机名
1 | hostname [选项] |
功能:显示或设置系统主机名
示例:1
2hostname # 显示当前主机名
sudo hostname new-hostname # 临时设置主机名(重启后失效)
uptime - 显示系统运行时间和负载
1 | uptime |
功能:显示系统运行时间、用户数和系统负载
示例:1
2uptime # 显示系统运行时间和负载
# 输出示例:14:30:00 up 2 days, 10:15, 2 users, load average: 0.12, 0.08, 0.05
free - 显示内存使用情况
1 | free [选项] |
功能:显示系统内存和交换分区的使用情况
常用选项:
-h:以人类可读的格式显示-m:以MB为单位显示-g:以GB为单位显示
示例:1
free -h # 以人类可读格式显示内存使用情况
df - 显示磁盘使用情况
1 | df [选项] |
功能:显示文件系统的磁盘使用情况
常用选项:
-h:以人类可读的格式显示-T:显示文件系统类型
示例:1
2df -h # 以人类可读格式显示磁盘使用情况
df -hT # 显示磁盘使用情况和文件系统类型
du - 显示目录或文件的磁盘使用空间
1 | du [选项] [目录/文件] |
功能:显示目录或文件的磁盘使用空间
常用选项:
-h:以人类可读的格式显示-s:仅显示总计-c:显示总计并添加总和行
示例:1
2
3du -h # 显示当前目录下各文件和目录的大小
du -sh dir1 # 显示目录dir1的总大小
du -h --max-depth=1 # 显示当前目录下一级子目录的大小
top - 实时显示系统进程信息
1 | top |
功能:实时显示系统的进程状态,包括CPU、内存使用情况和进程列表
常用操作:
P:按CPU使用率排序M:按内存使用率排序N:按进程ID排序k:终止指定进程q:退出top
2. 用户和组管理
useradd - 创建新用户
1 | sudo useradd [选项] 用户名 |
功能:创建新用户
常用选项:
-m:创建用户主目录-s:指定用户的登录shell-g:指定用户的初始所属组
示例:1
sudo useradd -m -s /bin/bash newuser # 创建新用户并指定主目录和shell
passwd - 设置用户密码
1 | passwd [用户名] |
功能:设置或修改用户密码
示例:1
2passwd newuser # 设置newuser的密码
sudo passwd root # 设置root用户密码
userdel - 删除用户
1 | sudo userdel [选项] 用户名 |
功能:删除用户
常用选项:
-r:同时删除用户主目录
示例:1
2sudo userdel newuser # 删除用户
sudo userdel -r newuser # 删除用户并同时删除其主目录
groupadd - 创建新组
1 | sudo groupadd 组名 |
功能:创建新的用户组
示例:1
sudo groupadd newgroup # 创建新组
groupdel - 删除组
1 | sudo groupdel 组名 |
功能:删除用户组
示例:1
sudo groupdel newgroup # 删除组
usermod - 修改用户属性
1 | sudo usermod [选项] 用户名 |
功能:修改用户的属性,如所属组、shell、主目录等
常用选项:
-aG:将用户添加到指定的附加组-s:修改用户的登录shell-d:修改用户的主目录
示例:1
2sudo usermod -aG sudo newuser # 将newuser添加到sudo组
sudo usermod -s /bin/zsh newuser # 修改newuser的shell为zsh
五、网络命令
1. 网络连接测试
ping - 测试网络连接
1 | ping [选项] 目标地址 |
功能:测试与目标主机的网络连接是否正常
常用选项:
-c <次数>:发送指定次数的ICMP包后停止-s <大小>:设置ICMP包的大小
示例:1
2ping www.google.com # 测试与Google的连接
ping -c 5 www.google.com # 发送5个ICMP包后停止
curl - 发送HTTP请求并获取响应
1 | curl [选项] URL |
功能:发送HTTP/HTTPS请求,下载或上传文件
常用选项:
-O:将远程文件下载到本地,保持文件名不变-L:跟随重定向-I:仅显示HTTP头信息-X:指定HTTP请求方法(GET、POST、PUT等)-d:发送POST请求的数据
示例:1
2
3
4curl www.google.com # 获取Google首页内容
curl -O https://example.com/file.txt # 下载文件
curl -I www.google.com # 显示HTTP头信息
curl -X POST -d "name=test" https://example.com/api # 发送POST请求
wget - 下载文件
1 | wget [选项] URL |
功能:从网络上下载文件
常用选项:
-O <文件名>:指定下载文件的保存名称-c:断点续传-r:递归下载整个网站
示例:1
2
3wget https://example.com/file.txt # 下载文件
wget -O newname.txt https://example.com/file.txt # 下载文件并指定保存名称
wget -c https://example.com/largefile.zip # 断点续传大文件
2. 网络配置与信息
ifconfig - 显示或配置网络接口(较旧的命令)
1 | ifconfig [选项] [网络接口] |
功能:显示或配置网络接口的IP地址、子网掩码、MAC地址等信息
示例:1
2ifconfig # 显示所有网络接口信息
ifconfig eth0 # 显示指定网络接口信息
ip - 网络配置工具(替代ifconfig的新命令)
1 | ip [选项] 命令 [网络接口] |
功能:显示或配置网络接口、路由表、ARP表等
常用命令:
addr:显示或配置IP地址link:显示或配置网络接口route:显示或配置路由表
示例:1
2
3ip addr show # 显示所有网络接口的IP地址
ip link show # 显示所有网络接口信息
ip route show # 显示路由表
netstat - 显示网络连接、路由表、接口统计等
1 | netstat [选项] |
功能:显示网络连接、路由表、接口统计、伪装连接和多播成员等信息
常用选项:
-t:显示TCP连接-u:显示UDP连接-l:显示监听状态的连接-n:使用数字形式显示地址和端口号-p:显示进程ID和进程名
示例:1
2netstat -tlnp # 显示所有监听的TCP端口及对应的进程
netstat -rn # 显示路由表
ss - 显示套接字统计信息(替代netstat的新命令)
1 | ss [选项] |
功能:显示网络套接字的详细信息,比netstat更快更高效
常用选项:
-t:显示TCP套接字-u:显示UDP套接字-l:显示监听状态的套接字-n:使用数字形式显示地址和端口号-p:显示进程ID和进程名
示例:1
2ss -tlnp # 显示所有监听的TCP端口及对应的进程
ss -u # 显示所有UDP套接字
六、进程管理
1. 进程查看
ps - 显示进程状态
1 | ps [选项] |
功能:显示当前进程的状态
常用选项:
aux:显示所有用户的所有进程(BSD风格)-ef:显示所有进程的完整信息(System V风格)-l:显示长格式输出
示例:1
2
3ps aux # 显示所有用户的所有进程
ps aux | grep python # 查找与Python相关的进程
ps -ef | grep ffmpeg # 查找与ffmpeg相关的进程
top - 实时显示进程动态(详见系统信息部分)
htop - 交互式进程查看器(需要安装)
1 | top |
功能:交互式显示进程动态,比top更强大(需要先安装:sudo apt install htop)
2. 进程控制
kill - 终止进程
1 | kill [选项] 进程ID |
功能:向进程发送信号,默认发送TERM信号(终止进程)
常用信号:
-9或-SIGKILL:强制终止进程-15或-SIGTERM:优雅终止进程(默认)-1或-SIGHUP:重新加载配置
示例:1
2
3kill 12345 # 终止进程ID为12345的进程
kill -9 12345 # 强制终止进程
pkill -f process-name # 根据进程名终止进程
nohup - 在后台运行命令,忽略挂断信号
1 | nohup 命令 & |
功能:在后台运行命令,即使关闭终端也能继续运行
示例:1
2nohup python script.py & # 在后台运行Python脚本
nohup ./server.sh > server.log 2>&1 & # 后台运行服务器,并将输出重定向到日志文件
jobs - 显示当前终端的后台作业
1 | jobs [选项] |
功能:显示当前终端的后台作业列表
示例:1
jobs # 显示后台作业列表
fg - 将后台作业切换到前台
1 | fg %作业号 |
功能:将后台运行的作业切换到前台运行
示例:1
fg %1 # 将作业号为1的后台作业切换到前台
bg - 将前台作业切换到后台
1 | bg %作业号 |
功能:将暂停的作业切换到后台继续运行
示例:1
bg %1 # 将作业号为1的暂停作业切换到后台继续运行
七、软件包管理
1. APT包管理(Debian/Ubuntu系统)
apt update - 更新软件包列表
1 | sudo apt update |
功能:更新本地软件包列表,获取最新的软件包信息
apt upgrade - 升级已安装的软件包
1 | sudo apt upgrade |
功能:升级所有已安装的软件包到最新版本
apt install - 安装软件包
1 | sudo apt install 软件包名 |
功能:安装指定的软件包
示例:1
2sudo apt install git # 安装Git
sudo apt install nginx mysql-server # 安装Nginx和MySQL
apt remove - 卸载软件包
1 | sudo apt remove 软件包名 |
功能:卸载指定的软件包,但保留配置文件
apt purge - 完全卸载软件包
1 | sudo apt purge 软件包名 |
功能:卸载指定的软件包,并删除配置文件
apt autoremove - 自动删除不需要的依赖包
1 | sudo apt autoremove |
功能:删除不再需要的依赖包
2. YUM包管理(CentOS/RHEL系统)
yum update - 更新软件包
1 | sudo yum update |
功能:更新所有已安装的软件包
yum install - 安装软件包
1 | sudo yum install 软件包名 |
功能:安装指定的软件包
yum remove - 卸载软件包
1 | sudo yum remove 软件包名 |
功能:卸载指定的软件包
八、应用案例:后台服务管理
使用nohup后台运行服务
1 | # 进入项目目录 |
使用screen管理会话(推荐用于开发)
1 | # 安装screen(如果未安装) |
使用systemd管理服务(生产环境最佳)
创建systemd服务文件
1
2# 创建systemd服务文件
sudo nano /etc/systemd/system/api-active.service编写服务配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18[Unit]
Description=API Active Service
After=network.target
[Service]
Type=simple
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu/project
Environment=PATH=/home/ubuntu/project/venv/bin
ExecStart=/home/ubuntu/project/venv/bin/uvicorn api_active:app --host 0.0.0.0 --port 8000 --workers 4
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target管理服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# 重新加载systemd配置
sudo systemctl daemon-reload
# 启用开机自启
sudo systemctl enable api-active
# 启动服务
sudo systemctl start api-active
# 查看服务状态
sudo systemctl status api-active
# 查看服务日志
sudo journalctl -u api-active -f
# 停止服务
sudo systemctl stop api-active
# 重启服务
sudo systemctl restart api-active
验证服务是否运行
1 | # 检查进程 |
九、常用快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl + C |
中断当前命令 |
Ctrl + Z |
暂停当前命令,放入后台 |
Ctrl + D |
退出当前终端或shell |
Ctrl + L |
清屏 |
Ctrl + A |
移动光标到行首 |
Ctrl + E |
移动光标到行尾 |
Ctrl + U |
删除光标前的所有字符 |
Ctrl + K |
删除光标后的所有字符 |
Ctrl + W |
删除光标前的一个单词 |
Tab |
自动补全命令或文件名 |
↑ / ↓ |
浏览命令历史 |
Ctrl + R |
搜索命令历史 |
十、注意事项
- 谨慎使用root权限:使用
sudo命令时要格外小心,避免误操作导致系统问题 - 备份重要数据:在执行可能导致数据丢失的命令前(如
rm -rf),确保已备份重要数据 - 注意路径:执行文件操作命令时,要注意当前工作目录和目标路径
- 查看命令帮助:使用
命令 --help或man 命令查看命令的详细用法 - 网络安全:不要在生产环境中使用弱密码,定期更新系统和软件包
Ubuntu 24 环境变量设置指南
1. 临时环境变量(仅当前终端会话有效)
在当前终端中设置临时环境变量,重启终端后会失效:
1 | export AES_KEY="nIpDDCrGKmN7d4nqRmIVfwHZgzCKDf/qdkGbL97/gEY=" |
2. 用户级永久环境变量(仅对当前用户有效)
编辑用户主目录下的 .bashrc 文件:
1 | nano ~/.bashrc |
在文件末尾添加以下行:
1 | # AES加密配置 |
保存并退出(按 Ctrl+O 保存,Ctrl+X 退出)。
使更改生效:
1 | source ~/.bashrc |
3. 系统级永久环境变量(对所有用户有效)
编辑 /etc/environment 文件(需要管理员权限):
1 | sudo nano /etc/environment |
在文件中添加以下行(注意:不要使用 export 关键字):
1 | AES_KEY="nIpDDCrGKmN7d4nqRmIVfwHZgzCKDf/qdkGbL97/gEY=" |
保存并退出。更改将在下次登录后生效,或者可以使用以下命令立即生效:
1 | source /etc/environment |
4. 在 Python 代码中读取环境变量
修改 api_active.py 文件,使用 os 模块读取环境变量:
1 | import os |
同样,修改 check_active.py 文件:
1 | import os |
5. 验证环境变量是否设置成功
在终端中执行以下命令查看环境变量:
1 | echo $AES_KEY |
或者创建一个简单的Python脚本验证:
1 | import os |
6. 注意事项
- 安全性:不要在日志或错误消息中输出环境变量的值
- 权限:确保包含环境变量的配置文件具有适当的权限(特别是系统级配置文件)
- 版本控制:不要将包含敏感信息的环境变量文件提交到版本控制系统
- 备份:定期备份包含重要环境变量的配置文件