概述

Ubuntu是基于Debian的Linux发行版,拥有强大的命令行工具。本文档介绍Ubuntu中常用的命令,涵盖文件操作、软件管理、网络配置、系统管理等各个方面。

文件和目录操作

基础命令

# 列出目录内容
ls -la                    # 详细列表,显示隐藏文件
ls -lh                    # 人类可读的文件大小
ls -lt                    # 按修改时间排序
ls -R                     # 递归列出子目录

# 切换目录
cd /path/to/directory     # 绝对路径
cd ..                     # 上级目录
cd ~                      # 家目录
cd -                      # 上一个目录

# 显示当前目录
pwd                       # 显示完整路径

# 创建目录
mkdir directory_name      # 创建单个目录
mkdir -p path/to/dir      # 递归创建多级目录
mkdir -m 755 new_dir      # 创建目录并设置权限

# 删除目录
rmdir empty_directory     # 删除空目录
rm -r directory           # 递归删除目录及其内容
rm -rf directory          # 强制递归删除(危险!)

# 复制文件和目录
cp source_file dest_file          # 复制文件
cp -r source_dir dest_dir         # 递归复制目录
cp -a source dest                # 保留属性复制
cp -i source dest                # 覆盖前提示

# 移动和重命名
mv old_name new_name              # 重命名
mv file /path/to/destination      # 移动文件
mv -i source dest                 # 覆盖前提示

# 删除文件
rm file.txt                       # 删除文件
rm -i file.txt                    # 删除前提示
rm -f file.txt                    # 强制删除

文件查看和编辑

# 查看文件内容
cat file.txt                      # 显示整个文件
less file.txt                     # 分页查看(推荐)
more file.txt                     # 分页查看
head -n 20 file.txt               # 查看前20行
tail -n 20 file.txt               # 查看后20行
tail -f file.txt                  # 实时查看文件变化

# 文件搜索
grep "pattern" file.txt           # 在文件中搜索
grep -r "pattern" /path/          # 递归搜索目录
grep -i "pattern" file.txt        # 忽略大小写
grep -n "pattern" file.txt        # 显示行号

# 文本编辑器
nano file.txt                     # 简单文本编辑器
vim file.txt                      # 高级文本编辑器
emacs file.txt                    # Emacs编辑器

文件权限和属性

# 查看权限
ls -l file.txt                    # 显示权限信息
stat file.txt                     # 详细文件信息

# 修改权限
chmod 755 file.txt                # 数字方式设置权限
chmod u+x file.txt                # 给所有者添加执行权限
chmod g+w file.txt                # 给组添加写权限
chmod o-r file.txt                # 删除其他人的读权限

# 修改所有者
sudo chown user:group file.txt    # 同时修改所有者和组
sudo chown user file.txt          # 只修改所有者
sudo chgrp group file.txt         # 只修改组

# 特殊权限
sudo chmod +s script.sh           # 设置SUID
sudo chmod +s /directory          # 设置SGID
sudo chmod +t /tmp                # 设置粘滞位

软件包管理

APT (Advanced Package Tool)

# 更新包列表
sudo apt update                   # 更新可用包列表
sudo apt upgrade                  # 升级已安装的包
sudo apt full-upgrade             # 完整升级(可能删除包)

# 安装软件包
sudo apt install package_name     # 安装单个包
sudo apt install package1 package2  # 安装多个包
sudo apt install -y package_name  # 自动确认安装

# 搜索包
apt search keyword                 # 搜索包名和描述
apt show package_name             # 显示包信息

# 卸载软件包
sudo apt remove package_name      # 卸载包(保留配置)
sudo apt purge package_name       # 完全卸载(删除配置)
sudo apt autoremove               # 删除不需要的依赖

# 包管理
apt list --installed              # 列出已安装的包
apt list --upgradable             # 列出可升级的包
dpkg -l                           # 列出所有已安装的包
dpkg -L package_name              # 列出包安装的文件

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

DEB包管理

# 安装DEB包
sudo dpkg -i package.deb          # 安装本地DEB包
sudo apt install -f               # 修复依赖问题

# 卸载DEB包
sudo dpkg -r package_name         # 卸载(保留配置)
sudo dpkg -P package_name         # 完全卸载

# 查询DEB包
dpkg -l | grep package            # 查看包状态
dpkg -s package_name              # 显示包信息
dpkg -c package.deb              # 查看DEB包内容

Snap包管理

# 安装Snap
sudo snap install package_name    # 安装snap包
sudo snap install package_name --classic  # 经典模式

# 查看Snap
snap list                         # 列出已安装的snap
snap find keyword                 # 搜索snap包

# 更新和卸载
sudo snap refresh package_name    # 更新snap包
sudo snap remove package_name     # 卸载snap包

# Snap管理
sudo snap refresh                 # 更新所有snap
snap info package_name            # 查看snap信息

Flatpak包管理

# 安装Flatpak
sudo apt install flatpak          # 安装flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

# 安装应用
flatpak install flathub app_id     # 安装flatpak应用

# 管理应用
flatpak list                      # 列出已安装应用
flatpak update                    # 更新应用
flatpak uninstall app_id          # 卸载应用

网络配置和管理

网络信息查看

# IP地址和接口信息
ip addr show                      # 显示所有接口IP信息
ip addr show eth0                 # 显示特定接口
ifconfig                          # 传统命令(可能需要安装net-tools)

# 网络连接状态
ip link show                      # 显示网络接口状态
ethtool eth0                      # 显示以太网接口详细信息

# 路由表
ip route show                     # 显示路由表
route -n                          # 传统命令

# 网络统计
ss -tuln                          # 显示监听端口
netstat -tuln                     # 传统命令(需要安装net-tools)
lsof -i :80                       # 查看占用80端口的进程

网络配置

# 临时配置IP
sudo ip addr add 192.168.1.100/24 dev eth0    # 添加IP地址
sudo ip link set eth0 up                      # 启用接口
sudo ip link set eth0 down                    # 禁用接口

# DHCP客户端
sudo dhclient eth0                            # 获取DHCP地址
sudo dhclient -r eth0                         # 释放DHCP地址

# DNS配置
sudo nano /etc/resolv.conf                    # 编辑DNS配置
# 示例内容:
# nameserver 8.8.8.8
# nameserver 8.8.4.4

# 主机名配置
hostname                              # 查看主机名
sudo hostname new-hostname            # 临时设置主机名
sudo nano /etc/hostname               # 永久设置主机名
sudo nano /etc/hosts                  # 编辑hosts文件

网络诊断

# 连通性测试
ping google.com                       # 测试网络连通性
ping -c 4 8.8.8.8                    # 发送4个包后停止
ping6 ipv6.google.com                 # IPv6 ping测试

# 路由跟踪
traceroute google.com                 # 跟踪到目标的路由
tracepath google.com                  # 简化版路由跟踪

# DNS查询
nslookup google.com                   # DNS查询
dig google.com                        # 详细DNS查询
host google.com                       # 简单DNS查询

# 网络性能测试
curl -o /dev/null -s -w "%{time_total}\n" http://example.com  # 测量响应时间
wget -O /dev/null http://example.com/file                     # 下载速度测试

防火墙管理

# UFW (Uncomplicated Firewall)
sudo ufw enable                      # 启用防火墙
sudo ufw disable                     # 禁用防火墙
sudo ufw status                      # 查看防火墙状态

# 规则管理
sudo ufw allow 22/tcp                # 允许SSH
sudo ufw allow 80/tcp                # 允许HTTP
sudo ufw allow 443/tcp               # 允许HTTPS
sudo ufw deny 23/tcp                 # 拒绝Telnet
sudo ufw allow from 192.168.1.0/24  # 允许特定网段

# 删除规则
sudo ufw delete allow 22/tcp         # 删除规则
sudo ufw --force reset               # 重置所有规则

# iptables(高级)
sudo iptables -L                     # 列出规则
sudo iptables -F                     # 清空规则
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # 添加规则

系统管理

进程管理

# 查看进程
ps aux                              # 显示所有进程详细信息
ps -ef                              # 另一种格式显示进程
top                                 # 实时进程监控
htop                                # 增强版top(需要安装)

# 进程控制
kill PID                            # 终止进程
kill -9 PID                         # 强制终止进程
killall process_name                # 按名称终止进程
pkill -f "process_pattern"          # 按模式匹配终止进程

# 后台任务
command &                           # 后台运行命令
jobs                                # 查看后台任务
fg %1                               # 将任务1带到前台
bg %1                               # 将任务1转到后台
kill %1                             # 终止后台任务1

# 系统资源
free -h                             # 内存使用情况
df -h                               # 磁盘使用情况
du -sh /path/to/directory           # 目录大小
iostat                              # I/O统计(需要安装sysstat)

服务管理

# Systemd服务管理
sudo systemctl start service_name           # 启动服务
sudo systemctl stop service_name            # 停止服务
sudo systemctl restart service_name         # 重启服务
sudo systemctl reload service_name          # 重新加载配置
sudo systemctl status service_name          # 查看服务状态

# 开机启动
sudo systemctl enable service_name          # 开机启动
sudo systemctl disable service_name         # 禁用开机启动
sudo systemctl is-enabled service_name      # 检查是否启用

# 常用服务示例
sudo systemctl status ssh                   # SSH服务状态
sudo systemctl restart nginx                # 重启Nginx
sudo systemctl reload apache2               # 重新加载Apache配置

# 查看所有服务
systemctl list-units --type=service        # 列出所有服务
systemctl list-units --failed              # 列出失败的服务

用户和权限管理

# 用户管理
sudo adduser new_username                   # 创建新用户
sudo useradd -m -s /bin/bash username      # 创建用户(高级方式)
sudo deluser username                       # 删除用户
sudo deluser --remove-home username         # 删除用户及家目录

# 用户组管理
sudo addgroup new_group                     # 创建新组
sudo usermod -aG group username            # 将用户添加到组
sudo deluser username group                 # 从组中移除用户
groups username                             # 查看用户所属组

# 密码管理
passwd                                      # 修改当前用户密码
sudo passwd username                        # 修改其他用户密码
sudo chage -l username                     # 查看密码过期信息
sudo chage -M 90 username                  # 设置密码90天过期

# sudo权限
sudo visudo                                 # 编辑sudoers文件
sudo -l                                     # 查看当前用户的sudo权限

系统监控

# 系统信息
uname -a                                    # 系统详细信息
lsb_release -a                              # Ubuntu版本信息
cat /proc/version                           # 内核版本
cat /proc/meminfo                           # 内存详细信息
cat /proc/cpuinfo                           # CPU详细信息

# 资源监控
top                                         # 实时进程监控
htop                                        # 增强版top
iotop                                       # I/O监控(需要安装)
nethogs                                     # 网络使用监控(需要安装)

# 日志查看
journalctl -f                               # 实时查看系统日志
journalctl -u service_name                  # 查看特定服务日志
tail -f /var/log/syslog                     # 系统日志
tail -f /var/log/auth.log                   # 认证日志

# 系统负载
uptime                                      # 系统运行时间和负载
w                                           # 当前登录用户
who                                         # 登录用户信息
last                                        # 最近登录记录

磁盘和文件系统

磁盘管理

# 磁盘分区
sudo fdisk -l                               # 列出磁盘分区
sudo fdisk /dev/sda                         # 分区工具
sudo gdisk /dev/sda                         # GPT分区工具

# 文件系统
sudo mkfs.ext4 /dev/sda1                    # 创建ext4文件系统
sudo mkfs.ntfs /dev/sda1                    # 创建NTFS文件系统
sudo mkfs.vfat /dev/sda1                    # 创建FAT32文件系统

# 挂载和卸载
sudo mount /dev/sda1 /mnt/data              # 挂载分区
sudo umount /mnt/data                       # 卸载分区
mount                                       # 查看已挂载的文件系统

# 磁盘空间
df -h                                       # 磁盘使用情况
du -sh *                                    # 当前目录下各目录大小
du -h --max-depth=1 /path                   # 指定目录深度

# 磁盘检查
sudo fsck /dev/sda1                         # 检查文件系统
sudo badblocks -s /dev/sda1                 # 检查坏块

存储设备

# USB设备
lsusb                                       # 列出USB设备
sudo fdisk -l                               # 查看USB磁盘

# 光驱
eject                                       # 弹出光驱
eject -t                                    # 收回光驱

# LVM(逻辑卷管理)
sudo pvcreate /dev/sda1                     # 创建物理卷
sudo vgcreate vg_name /dev/sda1             # 创建卷组
sudo lvcreate -L 10G -n lv_name vg_name     # 创建逻辑卷

压缩和解压

常用压缩格式

# tar.gz (gzip)
tar -czf archive.tar.gz directory/          # 创建tar.gz压缩包
tar -xzf archive.tar.gz                     # 解压tar.gz
tar -tzf archive.tar.gz                     # 查看tar.gz内容

# tar.bz2 (bzip2)
tar -cjf archive.tar.bz2 directory/         # 创建tar.bz2
tar -xjf archive.tar.bz2                    # 解压tar.bz2

# tar.xz (xz)
tar -cJf archive.tar.xz directory/          # 创建tar.xz
tar -xJf archive.tar.xz                     # 解压tar.xz

# zip
zip -r archive.zip directory/               # 创建zip压缩包
unzip archive.zip                           # 解压zip

# 7z
7z a archive.7z directory/                  # 创建7z压缩包
7z x archive.7z                             # 解压7z

# 单个文件压缩
gzip file.txt                               # 压缩为file.txt.gz
gunzip file.txt.gz                          # 解压
bzip2 file.txt                              # 压缩为file.txt.bz2
bunzip2 file.txt.bz2                        # 解压

查找和搜索

文件查找

# find命令
find /path -name "filename"                 # 按名称查找
find /path -name "*.txt"                    # 通配符查找
find /path -type f                          # 只查找文件
find /path -type d                          # 只查找目录
find /path -size +100M                      # 查找大于100M的文件
find /path -mtime -7                        # 查找7天内修改的文件
find /path -user username                   # 按用户查找
find /path -exec command {} \;              # 对找到的文件执行命令

# locate命令
sudo updatedb                               # 更新文件数据库
locate filename                             # 快速查找文件
locate -i filename                          # 忽略大小写查找

# which和whereis
which command                               # 查找命令位置
whereis command                             # 查找命令、源码和手册页

文本搜索

# grep命令
grep "pattern" file.txt                     # 基本搜索
grep -r "pattern" /path/                    # 递归搜索
grep -i "pattern" file.txt                  # 忽略大小写
grep -n "pattern" file.txt                  # 显示行号
grep -v "pattern" file.txt                  # 反向匹配(不包含模式)
grep -c "pattern" file.txt                  # 计数匹配行
grep -l "pattern" *.txt                     # 列出包含模式的文件

# 高级grep
grep -E "pattern1|pattern2" file.txt        # 或条件匹配
grep -A 5 "pattern" file.txt                # 显示匹配后5行
grep -B 5 "pattern" file.txt                # 显示匹配前5行
grep -C 5 "pattern" file.txt                # 显示匹配前后各5行

系统维护

系统更新

# 完整系统更新
sudo apt update && sudo apt upgrade -y     # 更新包列表并升级
sudo apt dist-upgrade                       # 发行版升级
sudo do-release-upgrade                     # 升级到新版本

# 内核管理
uname -r                                    # 查看当前内核版本
dpkg --list | grep linux-image              # 查看已安装内核
sudo apt remove linux-image-old-version     # 删除旧内核

清理和维护

# 系统清理
sudo apt autoremove                         # 删除不需要的包
sudo apt autoclean                          # 清理包缓存
sudo apt clean                              # 完全清理包缓存

# 临时文件清理
sudo rm -rf /tmp/*                          # 清理临时文件
sudo rm -rf /var/tmp/*                      # 清理系统临时文件

# 日志清理
sudo journalctl --vacuum-time=7d            # 清理7天前的日志
sudo journalctl --vacuum-size=100M          # 清理到100M大小

备份和恢复

# 文件备份
cp -a /source /backup                       # 复制备份
rsync -av /source/ /backup/                 # 同步备份
rsync -av --delete /source/ /backup/        # 同步并删除多余文件

# 系统备份
sudo tar -czf system-backup.tar.gz / --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run --exclude=/tmp --exclude=/mnt --exclude=/media

# 使用dd备份磁盘
sudo dd if=/dev/sda of=/path/to/backup.img bs=4M status=progress

# 恢复备份
sudo tar -xzf system-backup.tar.gz -C /
sudo dd if=/path/to/backup.img of=/dev/sda bs=4M status=progress

开发工具

Git版本控制

# 基本Git操作
git init                                    # 初始化仓库
git clone url                               # 克隆仓库
git add .                                   # 添加所有文件
git commit -m "message"                     # 提交更改
git push origin main                        # 推送到远程
git pull origin main                        # 拉取远程更改

# 分支管理
git branch                                  # 查看分支
git branch new-branch                       # 创建分支
git checkout new-branch                     # 切换分支
git merge branch-name                       # 合并分支
git branch -d branch-name                  # 删除分支

编程环境

# Python环境
python3 --version                           # 查看Python版本
pip3 install package_name                   # 安装Python包
python3 -m venv myenv                      # 创建虚拟环境
source myenv/bin/activate                   # 激活虚拟环境

# Node.js环境
node --version                              # 查看Node.js版本
npm install package_name                    # 安装npm包
npm init                                    # 初始化项目

# Docker
sudo systemctl start docker                 # 启动Docker服务
sudo docker run -it ubuntu /bin/bash        # 运行Ubuntu容器
sudo docker build -t image_name .           # 构建Docker镜像

安全相关

SSH管理

# SSH连接
ssh user@hostname                           # 基本SSH连接
ssh -p 2222 user@hostname                   # 指定端口
ssh -i key.pem user@hostname               # 使用密钥文件

# SSH密钥
ssh-keygen -t rsa -b 4096                  # 生成RSA密钥
ssh-copy-id user@hostname                  # 复制公钥到远程主机

# SSH配置
nano ~/.ssh/config                         # 编辑SSH配置文件

加密和证书

# GPG加密
gpg --gen-key                               # 生成密钥
gpg --encrypt -r recipient file.txt         # 加密文件
gpg --decrypt file.txt.gpg                  # 解密文件
gpg --sign file.txt                         # 签名文件

# SSL证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes  # 生成自签名证书
openssl x509 -in cert.pem -text -noout      # 查看证书信息

性能优化

系统调优

# 查看系统限制
ulimit -a                                   # 显示用户限制
ulimit -n 65536                            # 设置文件描述符限制

# 内核参数调优
sudo sysctl -a                              # 查看所有内核参数
sudo sysctl -w net.core.rmem_max=16777216  # 临时设置参数
sudo nano /etc/sysctl.conf                  # 永久设置内核参数

# CPU亲和性
taskset -c 0,1 command                      # 在指定CPU核心运行命令
taskset -p PID                              # 查看进程CPU亲和性

实用技巧

命令行技巧

# 历史命令
history                                     # 查看命令历史
!n                                          # 执行历史中第n个命令
!!                                          # 执行上一个命令
!$                                          # 上一个命令的最后一个参数

# 命令替换
$(command)                                  # 命令替换
`command`                                   # 反引号命令替换

# 管道和重定向
command1 | command2                         # 管道
command > file.txt                          # 输出重定向
command >> file.txt                         # 追加重定向
command 2> error.log                        # 错误重定向
command &> output.log                       # 所有输出重定向

# 后台执行
nohup command &                             # 后台运行,忽略挂起信号
screen                                      # 创建会话
tmux                                        # 终端复用器

快捷键

# Bash快捷键
Ctrl + C                                    # 中断命令
Ctrl + Z                                    # 挂起命令
Ctrl + D                                    # 退出Shell
Ctrl + L                                    # 清屏
Ctrl + A                                    # 光标到行首
Ctrl + E                                    # 光标到行尾
Ctrl + U                                    # 删除到行首
Ctrl + K                                    # 删除到行尾
Ctrl + R                                    # 搜索命令历史
Tab                                         # 自动补全

故障排除

常见问题解决

# 磁盘空间不足
sudo apt autoremove                         # 删除不需要的包
sudo apt clean                              # 清理包缓存
sudo journalctl --vacuum-time=7d            # 清理日志

# 网络问题
sudo systemctl restart networking           # 重启网络服务
sudo dhclient -r                            # 释放DHCP
sudo dhclient                               # 重新获取IP

# 权限问题
sudo chmod +x script.sh                     # 添加执行权限
sudo chown user:group file                  # 修改所有者
sudo usermod -aG group username            # 添加用户到组

# 进程问题
sudo pkill -f process_name                  # 终止进程
sudo kill -9 PID                            # 强制终止进程
sudo systemctl restart service_name         # 重启服务

日志分析

# 系统日志
journalctl -xe                             # 查看错误日志
journalctl -u service_name -f               # 实时查看服务日志
tail -f /var/log/syslog                     # 系统日志实时查看

# 应用日志
tail -f /var/log/nginx/error.log            # Nginx错误日志
tail -f /var/log/apache2/error.log         # Apache错误日志
tail -f /var/log/mysql/error.log            # MySQL错误日志

总结

Ubuntu命令行工具提供了强大的系统管理能力。掌握这些命令可以:

  • 提高工作效率:快速完成各种系统任务
  • 自动化管理:通过脚本实现自动化运维
  • 故障诊断:快速定位和解决系统问题
  • 系统优化:根据需要调整系统参数
  • 安全保障:实施各种安全措施