Skip to main content

Linux 基础命令大全

文件和目录操作

查看和导航

# 显示当前目录
pwd

# 列出文件
ls # 基本列表
ls -l # 详细列表
ls -la # 包含隐藏文件
ls -lh # 人类可读的文件大小
ls -lt # 按修改时间排序
ls -lS # 按文件大小排序
ls -lR # 递归列出子目录

# 切换目录
cd /path/to/dir # 切换到指定目录
cd ~ # 切换到用户主目录
cd .. # 返回上级目录
cd - # 返回上次目录

# 查看目录树
tree # 树形显示目录结构
tree -L 2 # 只显示 2 层
tree -a # 显示隐藏文件

创建和删除

# 创建目录
mkdir mydir # 创建单个目录
mkdir -p /path/to/nested # 创建嵌套目录
mkdir dir1 dir2 dir3 # 创建多个目录

# 创建文件
touch file.txt # 创建空文件或更新时间戳
echo "content" > file.txt # 创建文件并写入内容
cat > file.txt # 交互式创建文件(Ctrl+D 结束)

# 删除文件和目录
rm file.txt # 删除文件
rm -f file.txt # 强制删除
rm -r dir/ # 递归删除目录
rm -rf dir/ # 强制递归删除
rmdir empty_dir/ # 删除空目录

# 安全删除(交互式确认)
rm -i file.txt
rm -ri dir/

复制和移动

# 复制
cp source.txt dest.txt # 复制文件
cp -r source_dir/ dest_dir/ # 递归复制目录
cp -p file.txt backup.txt # 保留属性
cp -u src/* dest/ # 只复制更新的文件
cp -v src dest # 显示详细信息

# 移动/重命名
mv old.txt new.txt # 重命名文件
mv file.txt /path/to/dir/ # 移动文件
mv -i old new # 交互式(覆盖前确认)
mv -u src dest # 只移动更新的文件

查找文件

# find - 强大的文件查找工具
find /path -name "*.txt" # 按名称查找
find /path -iname "*.TXT" # 不区分大小写
find /path -type f # 查找文件
find /path -type d # 查找目录
find /path -size +100M # 查找大于 100MB 的文件
find /path -mtime -7 # 查找 7 天内修改的文件
find /path -user username # 按用户查找
find /path -perm 644 # 按权限查找

# 组合条件
find /path -name "*.log" -mtime +30 -exec rm {} \;

# locate - 快速文件查找
locate filename # 通过索引快速查找
locate -i filename # 不区分大小写
sudo updatedb # 更新索引数据库

# which - 查找命令位置
which python # 查找命令的完整路径
which -a python # 显示所有匹配的路径

# whereis - 查找二进制、源码和帮助文件
whereis python # 查找 python 相关文件

文件内容查看

查看文件

# cat - 显示全部内容
cat file.txt # 显示文件内容
cat file1 file2 # 连接多个文件
cat -n file.txt # 显示行号
cat -A file.txt # 显示所有字符(包括不可见字符)

# less - 分页查看(推荐)
less file.txt # 分页查看
less -N file.txt # 显示行号
# 快捷键: 空格=下一页, b=上一页, /=搜索, q=退出

# more - 简单分页
more file.txt # 分页查看
more +10 file.txt # 从第 10 行开始

# head - 查看开头
head file.txt # 显示前 10 行
head -n 20 file.txt # 显示前 20 行
head -c 100 file.txt # 显示前 100 字节

# tail - 查看结尾
tail file.txt # 显示后 10 行
tail -n 20 file.txt # 显示后 20 行
tail -f file.txt # 实时查看文件更新(日志)
tail -F file.txt # 即使文件被删除重建也继续跟踪

# 实用组合
tail -f /var/log/syslog | grep ERROR

文件搜索

# grep - 文本搜索
grep "pattern" file.txt # 搜索文本
grep -i "pattern" file.txt # 不区分大小写
grep -r "pattern" /path/ # 递归搜索目录
grep -n "pattern" file.txt # 显示行号
grep -v "pattern" file.txt # 显示不匹配的行
grep -c "pattern" file.txt # 统计匹配行数
grep -A 3 "pattern" file.txt # 显示匹配行及后 3 行
grep -B 3 "pattern" file.txt # 显示匹配行及前 3 行
grep -C 3 "pattern" file.txt # 显示匹配行及前后 3 行

# 正则表达式
grep -E "pattern1|pattern2" file.txt # 扩展正则表达式
grep "^start" file.txt # 行首匹配
grep "end$" file.txt # 行尾匹配

# awk - 文本处理
awk '{print $1}' file.txt # 打印第一列
awk '{print $1, $3}' file.txt # 打印第 1 和第 3 列
awk -F: '{print $1}' /etc/passwd # 指定分隔符

# sed - 流编辑器
sed 's/old/new/g' file.txt # 替换文本
sed -i 's/old/new/g' file.txt # 直接修改文件
sed -n '10,20p' file.txt # 显示第 10-20 行
sed '/pattern/d' file.txt # 删除匹配的行

文件权限

查看和修改权限

# 查看权限
ls -l file.txt
# -rw-r--r-- 1 user group 1234 Jan 1 12:00 file.txt
# 权限说明: - rw- r-- r--
# 文件类型 所有者 组 其他

# chmod - 修改权限
chmod 755 file.sh # 数字方式
chmod u+x file.sh # 符号方式(用户+执行)
chmod g-w file.txt # 组-写入
chmod o+r file.txt # 其他+读取
chmod a+x file.sh # 所有人+执行
chmod -R 755 dir/ # 递归修改

# 常用权限
# 755 (rwxr-xr-x): 脚本和可执行文件
# 644 (rw-r--r--): 普通文件
# 600 (rw-------): 私密文件
# 700 (rwx------): 私密目录

# chown - 修改所有者
chown user file.txt # 修改所有者
chown user:group file.txt # 修改所有者和组
chown -R user:group dir/ # 递归修改

# chgrp - 修改组
chgrp group file.txt # 修改组
chgrp -R group dir/ # 递归修改

进程管理

查看进程

# ps - 进程快照
ps aux # 显示所有进程
ps aux | grep nginx # 查找特定进程
ps -ef # 完整格式
ps -u username # 显示特定用户的进程

# top - 实时进程监控
top # 交互式进程监控
top -u username # 监控特定用户
# 快捷键: q=退出, k=杀死进程, M=按内存排序, P=按CPU排序

# htop - 增强版 top
htop # 更友好的界面(需安装)

# pgrep - 按名称查找进程
pgrep nginx # 查找 nginx 进程 ID
pgrep -l nginx # 显示进程名称

管理进程

# kill - 终止进程
kill PID # 正常终止(SIGTERM)
kill -9 PID # 强制终止(SIGKILL)
kill -15 PID # 优雅终止
killall process_name # 按名称终止所有进程
pkill nginx # 按名称终止进程

# 后台运行
command & # 后台运行
nohup command & # 后台运行且不挂断
nohup command > output.log 2>&1 & # 重定向输出

# 进程控制
Ctrl+Z # 暂停前台进程
bg # 继续后台运行
fg # 调到前台
jobs # 查看后台作业

系统信息

系统监控

# 系统信息
uname -a # 系统信息
uname -r # 内核版本
hostname # 主机名
uptime # 运行时间和负载

# CPU 信息
lscpu # CPU 详细信息
cat /proc/cpuinfo # CPU 信息文件

# 内存信息
free -h # 内存使用(人类可读)
free -m # 以 MB 显示
cat /proc/meminfo # 详细内存信息

# 磁盘信息
df -h # 磁盘使用情况
df -i # inode 使用情况
du -sh /path # 目录大小
du -h --max-depth=1 /path # 查看子目录大小
lsblk # 块设备信息
fdisk -l # 磁盘分区信息

# 网络信息
ifconfig # 网络接口(旧)
ip addr # 网络接口(新)
ip route # 路由表
netstat -tulpn # 监听端口
ss -tulpn # 更快的 netstat

网络操作

网络工具

# ping - 测试连通性
ping google.com # 持续 ping
ping -c 4 google.com # ping 4 次
ping -i 0.5 google.com # 每 0.5 秒 ping 一次

# curl - HTTP 工具
curl http://example.com # GET 请求
curl -I http://example.com # 只获取头信息
curl -X POST http://api.com # POST 请求
curl -d "data=value" http://api.com # 发送数据
curl -H "Header: value" http://api.com # 自定义头
curl -o file.zip http://example.com/file.zip # 下载文件

# wget - 下载工具
wget http://example.com/file.zip # 下载文件
wget -c http://example.com/file.zip # 断点续传
wget -b http://example.com/file.zip # 后台下载
wget -r http://example.com # 递归下载

# ssh - 远程连接
ssh user@host # SSH 连接
ssh -p 2222 user@host # 指定端口
ssh -i key.pem user@host # 使用密钥

# scp - 远程复制
scp file.txt user@host:/path # 上传文件
scp user@host:/path/file.txt . # 下载文件
scp -r dir/ user@host:/path # 上传目录
scp -P 2222 file.txt user@host:/path # 指定端口

# rsync - 同步工具
rsync -avz source/ dest/ # 同步目录
rsync -avz source/ user@host:/dest/ # 远程同步
rsync -avz --delete source/ dest/ # 删除目标多余文件

压缩和解压

tar 归档

# 打包
tar -cvf archive.tar files/ # 打包目录
tar -czf archive.tar.gz files/ # 打包并 gzip 压缩
tar -cjf archive.tar.bz2 files/ # 打包并 bzip2 压缩
tar -cJf archive.tar.xz files/ # 打包并 xz 压缩

# 解包
tar -xvf archive.tar # 解包
tar -xzf archive.tar.gz # 解压 gzip
tar -xjf archive.tar.bz2 # 解压 bzip2
tar -xJf archive.tar.xz # 解压 xz

# 查看内容
tar -tvf archive.tar # 查看tar内容
tar -tzf archive.tar.gz # 查看压缩包内容

# 解压到指定目录
tar -xzf archive.tar.gz -C /path/to/dir

其他压缩格式

# gzip
gzip file.txt # 压缩(删除原文件)
gzip -k file.txt # 压缩(保留原文件)
gunzip file.txt.gz # 解压

# zip/unzip
zip archive.zip files # 创建 zip
zip -r archive.zip dir/ # 递归压缩目录
unzip archive.zip # 解压
unzip -l archive.zip # 查看内容
unzip archive.zip -d /path # 解压到指定目录

用户和组管理

# 用户信息
whoami # 当前用户
id # 用户 ID 和组
who # 登录用户
w # 登录用户详细信息
last # 最近登录记录

# 添加用户
sudo useradd username # 添加用户
sudo useradd -m -s /bin/bash username # 创建主目录和指定 shell
sudo passwd username # 设置密码

# 修改用户
sudo usermod -aG group username # 添加到组
sudo usermod -L username # 锁定用户
sudo usermod -U username # 解锁用户

# 删除用户
sudo userdel username # 删除用户
sudo userdel -r username # 删除用户及主目录

# 切换用户
su - username # 切换用户
sudo su - # 切换到 root

软件包管理

# 更新
sudo apt update # 更新软件包列表
sudo apt upgrade # 升级所有软件包
sudo apt dist-upgrade # 发行版升级

# 安装和删除
sudo apt install package # 安装软件包
sudo apt remove package # 删除软件包
sudo apt purge package # 彻底删除(包括配置)
sudo apt autoremove # 删除不需要的依赖

# 搜索
apt search keyword # 搜索软件包
apt show package # 显示软件包信息

# 清理
sudo apt clean # 清理下载的包文件
sudo apt autoclean # 清理旧的包文件

实用技巧

命令别名

# 查看现有别名
alias

# 创建别名
alias ll='ls -la'
alias ..='cd ..'
alias ...='cd ../..'
alias update='sudo apt update && sudo apt upgrade'

# 永久保存(添加到 ~/.bashrc)
echo "alias ll='ls -la'" >> ~/.bashrc
source ~/.bashrc

历史命令

# 查看历史
history # 显示所有历史
history 10 # 显示最后 10 条

# 使用历史
!! # 执行上一条命令
!n # 执行第 n 条命令
!string # 执行最近以 string 开头的命令
Ctrl+R # 搜索历史命令

# 清除历史
history -c # 清除当前会话历史
rm ~/.bash_history # 删除历史文件

管道和重定向

# 管道
command1 | command2 # 管道传递
ls | grep "txt" # 过滤文件
ps aux | grep nginx | wc -l # 统计进程数

# 重定向
command > file # 覆盖写入文件
command >> file # 追加到文件
command 2> error.log # 重定向错误输出
command > output.log 2>&1 # 合并标准输出和错误输出
command < input.txt # 从文件读取输入

# 丢弃输出
command > /dev/null # 丢弃标准输出
command 2> /dev/null # 丢弃错误输出
command > /dev/null 2>&1 # 丢弃所有输出

相关资源