[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"menus-public":3,"blog-10031":83,"blog-10031-comments":92},[4,15,43,66],{"id":5,"title":6,"link":7,"icon":8,"target":9,"sort_order":10,"is_active":11,"parent_id":12,"created_at":13,"children":14},10001,"首页","\u002F","","_blank",0,true,null,"2026-04-04T12:03:45",[],{"id":16,"title":17,"link":18,"icon":8,"target":19,"sort_order":20,"is_active":11,"parent_id":12,"created_at":21,"children":22},10038,"墨言博客","\u002Fblog","_self",1,"2026-10-30T23:08:14",[23,29,36],{"id":24,"title":25,"link":26,"icon":8,"target":19,"sort_order":20,"is_active":11,"parent_id":16,"created_at":27,"children":28},10039,"技术前沿","\u002Fblog?category=10001","2026-10-30T23:10:46",[],{"id":30,"title":31,"link":32,"icon":8,"target":19,"sort_order":33,"is_active":11,"parent_id":16,"created_at":34,"children":35},10042,"生活随笔","\u002Fblog?category=20007",2,"2026-10-30T23:55:19",[],{"id":37,"title":38,"link":39,"icon":8,"target":19,"sort_order":40,"is_active":11,"parent_id":16,"created_at":41,"children":42},10043,"旅游日记","\u002Fblog?category=20006",3,"2026-10-31T00:00:11",[],{"id":33,"title":44,"link":45,"icon":8,"target":19,"sort_order":33,"is_active":11,"parent_id":12,"created_at":46,"children":47},"新闻中心","\u002Fnews","2026-10-24T19:09:40",[48,54,60],{"id":49,"title":50,"link":51,"icon":8,"target":19,"sort_order":20,"is_active":11,"parent_id":33,"created_at":52,"children":53},10046,"产品动态","\u002Fnews?category=20010","2026-10-31T00:17:38",[],{"id":55,"title":56,"link":57,"icon":8,"target":19,"sort_order":33,"is_active":11,"parent_id":33,"created_at":58,"children":59},10047,"新闻热点","\u002Fnews?category=20009","2026-10-31T00:17:55",[],{"id":61,"title":62,"link":63,"icon":8,"target":19,"sort_order":40,"is_active":11,"parent_id":33,"created_at":64,"children":65},10045,"公司动态","\u002Fnews?category=20008","2026-10-31T00:17:11",[],{"id":67,"title":68,"link":69,"icon":8,"target":19,"sort_order":67,"is_active":11,"parent_id":12,"created_at":46,"children":70},4,"精彩视频","\u002Fvideo",[71,77],{"id":72,"title":73,"link":74,"icon":8,"target":19,"sort_order":10,"is_active":11,"parent_id":67,"created_at":75,"children":76},13,"活动记录","\u002Fvideo?category=6","2026-10-25T21:04:39",[],{"id":78,"title":79,"link":80,"icon":8,"target":19,"sort_order":20,"is_active":11,"parent_id":67,"created_at":81,"children":82},11,"产品展示","\u002Fvideo?category=5","2026-10-25T21:02:59",[],{"id":84,"category_id":5,"title":85,"author":8,"summary":86,"cover":87,"content":88,"tags":8,"seo_title":8,"seo_description":8,"seo_keywords":8,"og_image":8,"views":89,"comment_count":10,"is_top":90,"is_published":11,"created_at":91},10031,"Linux 命令使用教程","适用环境：Ubuntu 及大多数 Debian\u002FGNU Linux 发行版。","\u002Fstatic\u002Fuploads\u002Fblogs\u002F1792071395869-850763067.webp","# Ubuntu \u002F Linux 命令使用教程\n\n> 适用环境：Ubuntu 及大多数 Debian\u002FGNU Linux 发行版。终端快捷键 `Ctrl + Alt + T` 可快速打开终端。\n\n---\n\n\n\n## 1. 终端基础\n\n\n### 1.1 命令格式\n\n```bash\n命令 [选项] [参数]\n```\n\n例如：\n\n```bash\nls -l \u002Fhome\n```\n\n- `ls`：命令\n- `-l`：选项，长格式显示\n- `\u002Fhome`：参数，目标目录\n\n### 1.2 帮助信息\n\n```bash\n# 查看命令帮助\n命令 --help\n\n# 查看命令手册\nman 命令\n\n# 退出 man 页面按 q\nq\n\n# 查找命令位置\nwhich 命令\nwhereis 命令\n```\n\n### 1.3 通配符\n\n| 通配符 | 含义 |\n|--------|------|\n| `*` | 匹配任意个任意字符 |\n| `?` | 匹配单个任意字符 |\n| `[abc]` | 匹配方括号中任意一个字符 |\n| `[!abc]` | 不匹配方括号中任意一个字符 |\n| `{}` | 扩展多个字符串，如 `{a,b,c}.txt` |\n\n示例：\n\n```bash\nls *.txt          # 列出所有 txt 文件\nls file?.txt      # 列出 file1.txt file2.txt 等\nrm log{1,2,3}.txt # 删除 log1.txt log2.txt log3.txt\n```\n\n---\n\n## 2. 文件与目录操作\n\n### 2.1 目录操作\n\n```bash\n# 显示当前目录\npwd\n\n# 切换目录\ncd 目录名\ncd ..             # 返回上一级\ncd ~              # 返回用户主目录\ncd -              # 返回刚才所在的目录\n\n# 列出目录内容\nls\nls -l             # 长格式显示\nls -a             # 显示隐藏文件\nls -h             # 人类可读大小（K\u002FM\u002FG）\nls -la            # 组合使用\nls -R             # 递归列出子目录\n\n# 创建目录\nmkdir 目录名\nmkdir -p a\u002Fb\u002Fc    # 递归创建多级目录\n\n# 删除空目录\nrmdir 目录名\n\n# 删除目录及其内容（谨慎使用）\nrm -r 目录名\nrm -rf 目录名     # 强制递归删除，无法恢复\n\n# 复制目录\ncp -r 源目录 目标目录\n\n# 移动\u002F重命名目录\nmv 旧目录名 新目录名\nmv 源目录 目标目录\n```\n\n### 2.2 文件操作\n\n```bash\n# 创建空文件\ntouch 文件名\n\n# 复制文件\ncp 源文件 目标文件\ncp -i 源文件 目标文件   # 覆盖前询问\ncp -v 源文件 目标文件   # 显示复制过程\n\n# 移动\u002F重命名文件\nmv 旧文件名 新文件名\nmv 文件 目录\u002F\n\n# 删除文件\nrm 文件名\nrm -i 文件名        # 删除前询问\nrm -f 文件名        # 强制删除\n\n# 创建链接\nln 源文件 链接文件       # 硬链接\nln -s 源文件 链接文件    # 软链接（符号链接）\n```\n\n### 2.3 路径说明\n\n```bash\n\u002F           # 根目录\n~           # 当前用户主目录，如 \u002Fhome\u002Fusername\n.           # 当前目录\n..          # 上级目录\n-           # 上一次所在目录\n```\n\n---\n\n## 3. 文件查看与编辑\n\n### 3.1 查看文件内容\n\n```bash\n# 显示整个文件内容\ncat 文件名\n\n# 带行号显示\ncat -n 文件名\n\n# 分页显示（适合大文件）\nless 文件名\nmore 文件名\n\n# 显示文件前 N 行\nhead -n 20 文件名\n\n# 显示文件后 N 行\ntail -n 20 文件名\n\n# 实时追踪文件新增内容\ntail -f 日志文件\n\n# 显示文件行数、字数、字节数\nwc 文件名\nwc -l 文件名      # 只显示行数\nwc -w 文件名      # 只显示字数\nwc -c 文件名      # 只显示字节数\n```\n\n### 3.2 文本编辑器\n\n#### nano（简单易用）\n\n```bash\nnano 文件名\n```\n\n常用快捷键：\n\n- `Ctrl + O`：保存\n- `Ctrl + X`：退出\n- `Ctrl + K`：剪切当前行\n- `Ctrl + U`：粘贴\n- `Ctrl + W`：搜索\n\n#### vim\u002Fvi（功能强大）\n\n```bash\nvi 文件名\nvim 文件名\n```\n\n三种模式：\n\n1. **普通模式**：打开后的默认模式，可以移动光标、删除、复制等\n2. **插入模式**：按 `i` 进入，可以编辑文本\n3. **命令模式**：按 `:` 进入，可以保存、退出、搜索等\n\n常用命令：\n\n```bash\ni           # 在光标前插入\na           # 在光标后插入\nEsc         # 返回普通模式\n:w          # 保存\n:q          # 退出\n:wq         # 保存并退出\n:q!         # 强制退出不保存\n:set nu     # 显示行号\n:set nonu   # 取消行号\n\u002Fdd         # 搜索 dd\nn           # 下一个匹配项\nu           # 撤销\nyy          # 复制当前行\np           # 粘贴\n```\n\n---\n\n## 4. 权限与用户管理\n\n### 4.1 文件权限\n\nLinux 文件权限分为三类用户：\n\n- `u`：文件所有者（user）\n- `g`：所属组（group）\n- `o`：其他用户（others）\n- `a`：所有用户（all）\n\n权限类型：\n\n- `r`：读权限，对应数字 4\n- `w`：写权限，对应数字 2\n- `x`：执行权限，对应数字 1\n\n### 4.2 修改权限\n\n```bash\n# 符号法\nchmod u+x 文件名      # 给所有者添加执行权限\nchmod g-w 文件名      # 去掉组的写权限\nchmod o=r 文件名      # 设置其他用户只有读权限\nchmod a+x 文件名      # 给所有用户添加执行权限\n\n# 数字法\nchmod 755 文件名      # rwxr-xr-x\nchmod 644 文件名      # rw-r--r--\nchmod 777 文件名      # rwxrwxrwx（不推荐）\n\n# 递归修改目录权限\nchmod -R 755 目录名\n```\n\n### 4.3 修改所有者和所属组\n\n```bash\n# 修改所有者\nchown 用户名 文件名\n\n# 修改所属组\nchgrp 组名 文件名\n\n# 同时修改所有者和所属组\nchown 用户名:组名 文件名\n\n# 递归修改\nchown -R 用户名:组名 目录名\n```\n\n### 4.4 用户管理\n\n```bash\n# 查看当前用户\nwhoami\n\n# 查看当前登录用户\nwho\nw\n\n# 切换用户\nsu 用户名\nsu - 用户名         # 切换并加载该用户环境变量\n\n# 以 root 权限执行命令\nsudo 命令\n\n# 添加用户\nsudo adduser 用户名\nsudo useradd -m -s \u002Fbin\u002Fbash 用户名\n\n# 删除用户\nsudo deluser 用户名\nsudo userdel 用户名\n\n# 修改用户密码\npasswd\nsudo passwd 用户名\n\n# 添加用户到 sudo 组\nsudo usermod -aG sudo 用户名\n\n# 查看用户所属组\ngroups 用户名\n\n# 查看所有用户\ncat \u002Fetc\u002Fpasswd\n\n# 查看所有组\ncat \u002Fetc\u002Fgroup\n```\n\n---\n\n## 5. 系统信息与进程管理\n\n### 5.1 查看系统信息\n\n```bash\n# 查看操作系统版本\ncat \u002Fetc\u002Fos-release\nlsb_release -a\n\n# 查看内核版本\nuname -a\nuname -r\n\n# 查看主机名\nhostname\nhostnamectl\n\n# 查看系统启动时间\nuptime\n\n# 查看 CPU 信息\ncat \u002Fproc\u002Fcpuinfo\nlscpu\n\n# 查看内存使用情况\nfree -h\n\n# 查看磁盘使用情况\ndf -h\n\n# 查看 USB 设备\nlsusb\n\n# 查看 PCI 设备\nlspci\n\n# 查看硬件信息\nsudo dmidecode\n```\n\n### 5.2 进程管理\n\n```bash\n# 查看当前终端进程\nps\n\n# 查看所有进程\nps aux\n\n# 按 CPU\u002F内存排序查看\nps aux --sort=-%cpu\nps aux --sort=-%mem\n\n# 动态查看进程（交互式）\ntop\nhtop                # 需安装\n\n# 查找指定进程\npgrep 进程名\nps aux | grep 进程名\n\n# 结束进程\nkill 进程ID\nkill -9 进程ID      # 强制结束\nkillall 进程名       # 按名称结束所有相关进程\npkill 进程名\n\n# 前台\u002F后台任务管理\ncommand &           # 后台运行\njobs                # 查看后台任务\nfg %1               # 将后台任务调到前台\nbg %1               # 将暂停任务放到后台继续运行\nCtrl + Z            # 暂停当前前台任务\n```\n\n### 5.3 系统资源监控\n\n```bash\n# 综合系统监控\ntop\nhtop\nbtop\n\n# 查看内存使用\nfree -h\nvmstat\n\n# 查看 CPU 负载\nuptime\nmpstat              # 需安装 sysstat\n\n# 查看 I\u002FO 统计\niostat              # 需安装 sysstat\n\n# 查看网络连接和带宽\niftop\nnload\n```\n\n---\n\n## 6. 磁盘与存储管理\n\n### 6.1 查看磁盘使用情况\n\n```bash\n# 查看文件系统磁盘空间\ndf -h\n\n# 查看指定目录大小\ndu -sh 目录名\n\n# 查看目录下各文件\u002F子目录大小\ndu -h --max-depth=1 目录名\n\n# 查看当前目录总大小\ndu -sh .\n```\n\n### 6.2 挂载与卸载\n\n```bash\n# 查看已挂载设备\nmount\nlsblk\nfindmnt\n\n# 挂载设备\nsudo mount \u002Fdev\u002Fsdb1 \u002Fmnt\n\n# 卸载设备\nsudo umount \u002Fmnt\nsudo umount \u002Fdev\u002Fsdb1\n\n# 查看磁盘分区\nsudo fdisk -l\nlsblk\nblkid\n```\n\n### 6.3 格式化与分区\n\n```bash\n# 使用 fdisk 分区\nsudo fdisk \u002Fdev\u002Fsdb\n\n# 使用 gparted 图形化分区\nsudo gparted\n\n# 格式化 ext4\nsudo mkfs.ext4 \u002Fdev\u002Fsdb1\n\n# 格式化 FAT32\nsudo mkfs.vfat -F 32 \u002Fdev\u002Fsdb1\n```\n\n---\n\n## 7. 网络相关命令\n\n### 7.1 查看网络配置\n\n```bash\n# 查看 IP 地址\nip addr\nip a\n\n# 旧命令，仍可用\nifconfig            # 需安装 net-tools\n\n# 查看路由表\nip route\nroute -n\n\n# 查看网络接口状态\nip link\n\n# 查看主机名与 DNS\ncat \u002Fetc\u002Fresolv.conf\nhostname -I\n```\n\n### 7.2 网络连通性测试\n\n```bash\n# 测试网络连通\nping www.baidu.com\nping -c 4 www.baidu.com   # 发送 4 次后停止\n\n# 追踪路由\n traceroute www.baidu.com   # 需安装 traceroute\n mtr www.baidu.com          # 更强大的网络诊断工具\n\n# 查看域名解析\nnslookup www.baidu.com\ndig www.baidu.com          # 需安装 dnsutils\n\n# 查看端口连接\nss -tuln\nnetstat -tuln              # 需安装 net-tools\n\n# 查看指定端口被哪个进程占用\nsudo lsof -i :80\nsudo ss -tulnp | grep :80\n```\n\n### 7.3 下载与传输\n\n```bash\n# 下载文件\nwget http:\u002F\u002Fexample.com\u002Ffile.zip\nwget -O 新文件名 http:\u002F\u002Fexample.com\u002Ffile.zip\nwget -c http:\u002F\u002Fexample.com\u002Ffile.zip   # 断点续传\n\n# 更强大的下载工具\ncurl -O http:\u002F\u002Fexample.com\u002Ffile.zip\ncurl -o 新文件名 http:\u002F\u002Fexample.com\u002Ffile.zip\n\n# 上传\u002F下载文件到远程服务器（SCP）\nscp 本地文件 用户名@远程IP:\u002F远程路径\nscp 用户名@远程IP:\u002F远程文件 本地路径\nscp -r 本地目录 用户名@远程IP:\u002F远程路径\n\n# 使用 rsync 同步文件（更高效，支持增量）\nrsync -avz 源目录 用户名@远程IP:\u002F目标路径\nrsync -avz 用户名@远程IP:\u002F源目录 目标路径\n\n# SSH 远程登录\nssh 用户名@远程IP\nssh -p 端口号 用户名@远程IP\n```\n\n### 7.4 防火墙\n\n```bash\n# Ubuntu 默认使用 ufw（Uncomplicated Firewall）\n# 查看防火墙状态\nsudo ufw status\nsudo ufw status verbose\n\n# 启用\u002F禁用防火墙\nsudo ufw enable\nsudo ufw disable\n\n# 允许\u002F拒绝端口\nsudo ufw allow 22\nsudo ufw allow 80\u002Ftcp\nsudo ufw allow 443\u002Ftcp\nsudo ufw deny 3306\nsudo ufw delete allow 80\n\n# 允许\u002F拒绝 IP\nsudo ufw allow from 192.168.1.100\nsudo ufw deny from 192.168.1.100\n\n# 设置默认策略\nsudo ufw default deny incoming\nsudo ufw default allow outgoing\n\n# 限制连接速率（如防止暴力破解 SSH）\nsudo ufw limit 22\u002Ftcp\n```\n\n### 7.5 高级网络配置（ip 命令详解）\n\n`ip` 命令是 Linux 下最强大、推荐使用的网络配置工具。\n\n```bash\n# 查看所有网络接口的 IP 地址\nip addr\nip addr show\nip a\n\n# 查看指定接口\nip addr show eth0\nip a s eth0\n\n# 临时给接口添加 IP 地址（重启失效）\nsudo ip addr add 192.168.1.100\u002F24 dev eth0\n\n# 删除接口上的 IP 地址\nsudo ip addr del 192.168.1.100\u002F24 dev eth0\n\n# 启用\u002F禁用网络接口\nsudo ip link set eth0 up\nsudo ip link set eth0 down\n\n# 查看接口状态\nip link show\nip link show eth0\n\n# 查看路由表\nip route\nip route show\nip r\n\n# 添加默认网关\nsudo ip route add default via 192.168.1.1\n\n# 添加静态路由\nsudo ip route add 10.0.0.0\u002F24 via 192.168.1.1 dev eth0\n\n# 删除路由\nsudo ip route del 10.0.0.0\u002F24\n\n# 查看 ARP 表（邻居表）\nip neigh\nip neigh show\n\n# 刷新 ARP 缓存\nsudo ip neigh flush all\n```\n\n### 7.6 网络连接与端口查看\n\n```bash\n# ss 命令（推荐，替代 netstat）\nss -tuln              # 查看所有 TCP\u002FUDP 监听端口\nss -tulnp             # 显示监听端口及对应进程\nss -tunap             # 显示所有连接及进程\nss -s                 # 查看 socket 统计摘要\nss -ti                # 查看 TCP 连接详细信息\n\n# 参数说明\n# -t: TCP, -u: UDP, -l: 监听, -n: 数字显示端口, -p: 显示进程, -a: 所有\n\n# netstat 命令（需安装 net-tools）\nnetstat -tuln         # 查看监听端口\nnetstat -anp          # 显示所有连接和进程\nnetstat -rn           # 显示路由表\nnetstat -i            # 显示网络接口统计\nnetstat -s            # 显示网络协议统计\n\n# lsof 查看端口占用\nsudo lsof -i          # 显示所有网络文件\nsudo lsof -i :80      # 查看 80 端口被谁占用\nsudo lsof -i TCP:22   # 查看 TCP 22 端口\nsudo lsof -i @192.168.1.100 # 查看指定地址的连接\n\n# 查看指定端口的监听情况\nsudo ss -tulnp | grep :22\nsudo netstat -tulnp | grep :3306\n```\n\n### 7.7 网络抓包与分析\n\n```bash\n# tcpdump 基础用法（需 root 权限）\nsudo tcpdump\n\n# 指定网卡抓包\nsudo tcpdump -i eth0\n\n# 抓指定主机的包\nsudo tcpdump host 192.168.1.1\n\n# 抓指定端口的包\nsudo tcpdump port 80\nsudo tcpdump port 22\n\n# 抓指定协议\nsudo tcpdump icmp       # 只抓 ICMP（ping）\nsudo tcpdump tcp\nsudo tcpdump udp\n\n# 组合条件\nsudo tcpdump -i eth0 host 192.168.1.100 and port 80\n\n# 保存到文件\nsudo tcpdump -i eth0 -w capture.pcap\n\n# 读取 pcap 文件\nsudo tcpdump -r capture.pcap\n\n# 限制抓包数量\nsudo tcpdump -i eth0 -c 100\n\n# 只显示数据包头部信息\nsudo tcpdump -i eth0 -nn -v\n\n# 抓包并显示 ASCII 内容\nsudo tcpdump -i eth0 -A port 80\n\n# Wireshark 图形化分析（需安装）\nsudo apt install wireshark\nsudo wireshark capture.pcap\n```\n\n### 7.8 curl 高级用法\n\n`curl` 是一个非常强大的命令行网络请求工具。\n\n```bash\n# GET 请求\ncurl https:\u002F\u002Fapi.example.com\u002Fusers\n\n# 保存响应到文件\ncurl -o output.html https:\u002F\u002Fexample.com\ncurl -O https:\u002F\u002Fexample.com\u002Ffile.zip    # 保留远程文件名\n\n# 跟随重定向\ncurl -L https:\u002F\u002Fbit.ly\u002Fxxx\n\n# 显示响应头\ncurl -I https:\u002F\u002Fexample.com\ncurl -i https:\u002F\u002Fexample.com             # 同时显示响应头和正文\n\n# 发送 POST 请求\ncurl -X POST https:\u002F\u002Fapi.example.com\u002Flogin\n\n# POST 表单数据\ncurl -X POST -d \"username=admin&password=123456\" https:\u002F\u002Fapi.example.com\u002Flogin\n\n# POST JSON 数据\ncurl -X POST \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\":\"test\",\"value\":123}' \\\n  https:\u002F\u002Fapi.example.com\u002Fdata\n\n# 添加自定义请求头\ncurl -H \"Authorization: Bearer token123\" https:\u002F\u002Fapi.example.com\u002Fprotected\n\n# 上传文件\ncurl -F \"file=@\u002Fpath\u002Fto\u002Ffile.jpg\" https:\u002F\u002Fapi.example.com\u002Fupload\n\n# 下载并断点续传\ncurl -C - -O https:\u002F\u002Fexample.com\u002Flarge.zip\n\n# 限制下载速度\ncurl --limit-rate 100K -O https:\u002F\u002Fexample.com\u002Ffile.zip\n\n# 只显示 HTTP 状态码\ncurl -s -o \u002Fdev\u002Fnull -w \"%{http_code}\\n\" https:\u002F\u002Fexample.com\n\n# 使用代理\ncurl -x http:\u002F\u002Fproxy.example.com:8080 https:\u002F\u002Fexample.com\n\n# 忽略 SSL 证书验证（仅测试使用）\ncurl -k https:\u002F\u002Fself-signed.example.com\n\n# 保存 Cookie\ncurl -c cookies.txt https:\u002F\u002Fexample.com\u002Flogin\n\n# 使用 Cookie 发送请求\ncurl -b cookies.txt https:\u002F\u002Fexample.com\u002Fprofile\n```\n\n### 7.9 SSH 高级用法\n\n```bash\n# 基本登录\nssh username@192.168.1.100\n\n# 指定端口\nssh -p 2222 username@192.168.1.100\n\n# 使用指定私钥登录\nssh -i ~\u002F.ssh\u002Fid_rsa username@192.168.1.100\n\n# 执行远程命令\nssh username@192.168.1.100 \"ls -la \u002Fvar\u002Flog\"\n\n# 后台保持连接（用于端口转发）\nssh -N -f -L 本地端口:目标主机:目标端口 username@跳板机\n\n# 本地端口转发（访问本地端口相当于访问远程服务）\n# 示例：将本地 3306 转发到远程内网 MySQL\nssh -L 3306:192.168.2.10:3306 username@跳板机\n\n# 远程端口转发（让远程访问本地服务）\nssh -R 8080:localhost:3000 username@远程服务器\n\n# 动态端口转发（SOCKS 代理）\nssh -D 1080 username@远程服务器\n\n# 配置 SSH 别名（编辑 ~\u002F.ssh\u002Fconfig）\nnano ~\u002F.ssh\u002Fconfig\n```\n\n`~\u002F.ssh\u002Fconfig` 示例：\n\n```\nHost myserver\n    HostName 192.168.1.100\n    User ubuntu\n    Port 2222\n    IdentityFile ~\u002F.ssh\u002Fid_rsa\n    ServerAliveInterval 60\n```\n\n配置后可直接使用：\n\n```bash\nssh myserver\nscp file.txt myserver:\u002Ftmp\u002F\n```\n\n免密登录配置：\n\n```bash\n# 生成 SSH 密钥对\nssh-keygen -t rsa -b 4096 -C \"your_email@example.com\"\n\n# 将公钥复制到远程服务器\nssh-copy-id username@远程IP\n\n# 手动复制公钥\ncat ~\u002F.ssh\u002Fid_rsa.pub | ssh username@远程IP \"mkdir -p ~\u002F.ssh && cat >> ~\u002F.ssh\u002Fauthorized_keys\"\n```\n\n### 7.10 网络扫描与测试\n\n```bash\n# nc \u002F netcat 测试端口连通性\nnc -zv 192.168.1.100 22\nnc -zv 192.168.1.100 80 443 3306\nnc -zv -w 3 192.168.1.100 1-1000   # 扫描 1-1000 端口\n\n# 监听端口（简易服务器）\nnc -l 8080\nnc -l -p 8080 -k                 # 持续监听\n\n# nmap 端口扫描（需安装 nmap）\nsudo apt install nmap\n\n# 扫描单个主机\nnmap 192.168.1.100\n\n# 扫描指定端口\nnmap -p 22,80,443 192.168.1.100\nnmap -p 1-65535 192.168.1.100\n\n# 扫描整个网段\nnmap 192.168.1.0\u002F24\n\n# 进行操作系统探测\nsudo nmap -O 192.168.1.100\n\n# 进行服务版本探测\nnmap -sV 192.168.1.100\n\n# 快速扫描\nnmap -F 192.168.1.100\n\n# 隐蔽扫描（半开扫描，需 root）\nsudo nmap -sS 192.168.1.100\n\n# ping 扫描，只发现主机\nnmap -sn 192.168.1.0\u002F24\n\n# telnet 测试端口（需安装 telnet）\ntelnet 192.168.1.100 80\n\n# whois 查询域名信息\nwhois example.com\n\n# host 快速 DNS 查询\nhost example.com\nhost -t A example.com\nhost -t MX example.com\nhost -t NS example.com\n\n# dig 详细 DNS 查询\ndig example.com\ndig @8.8.8.8 example.com\ndig +trace example.com\ndig -x 8.8.8.8            # 反向解析\n```\n\n### 7.11 网络管理工具\n\n```bash\n# nmcli - 命令行网络管理器\nnmcli device status       # 查看网络设备状态\nnmcli connection show     # 查看所有连接配置\nnmcli connection show \"Wired connection 1\"\n\n# 启用\u002F禁用连接\nnmcli connection up \"Wired connection 1\"\nnmcli connection down \"Wired connection 1\"\n\n# 连接 WiFi\nnmcli device wifi list\nnmcli device wifi connect \"SSID\" password \"密码\"\n\n# 设置静态 IP\nnmcli connection modify \"Wired connection 1\" \\\n  ipv4.addresses 192.168.1.100\u002F24 \\\n  ipv4.gateway 192.168.1.1 \\\n  ipv4.dns \"8.8.8.8,114.114.114.114\" \\\n  ipv4.method manual\nnmcli connection up \"Wired connection 1\"\n\n# nmtui - 图形化网络配置（终端内）\nnmtui\n\n# 重启网络服务\nsudo systemctl restart NetworkManager\nsudo systemctl restart systemd-networkd\n\n# 查看 DNS 解析配置\ncat \u002Fetc\u002Fresolv.conf\nsystemd-resolve --status    # 旧版 Ubuntu\nresolvectl status           # 新版 Ubuntu\n\n# 刷新 DNS 缓存\nsudo systemd-resolve --flush-caches\nsudo resolvectl flush-caches\n```\n\n### 7.12 下载与传输补充\n\n```bash\n# wget 更多用法\nwget -O 新文件名 https:\u002F\u002Fexample.com\u002Ffile.zip\nwget -c https:\u002F\u002Fexample.com\u002Ffile.zip              # 断点续传\nwget -b https:\u002F\u002Fexample.com\u002Ffile.zip              # 后台下载\nwget -q https:\u002F\u002Fexample.com\u002Ffile.zip              # 安静模式\nwget --limit-rate=200k https:\u002F\u002Fexample.com\u002Ffile.zip # 限速\nwget -r -np -N https:\u002F\u002Fexample.com\u002Fdocs\u002F          # 递归下载\nwget --mirror https:\u002F\u002Fexample.com\u002F                # 镜像站点\n\n# 使用用户名密码下载\nwget --user=admin --password=123456 https:\u002F\u002Fexample.com\u002Fprotected\u002Ffile.zip\n\n# aria2 多线程下载（需安装 aria2）\naria2c -x 16 -s 16 https:\u002F\u002Fexample.com\u002Ffile.zip\n\n# rsync 更多示例\nrsync -avz --delete \u002F本地目录\u002F 用户名@远程IP:\u002F目标目录\u002F    # 同步并删除目标多余文件\nrsync -avz --progress \u002F本地文件 用户名@远程IP:\u002F目标路径\u002F    # 显示进度\nrsync -avz -e \"ssh -p 2222\" \u002F本地目录 用户名@远程IP:\u002F目标目录\u002F  # 指定 SSH 端口\n\n# scp 指定端口和密钥\nscp -P 2222 -i ~\u002F.ssh\u002Fid_rsa file.txt username@远程IP:\u002Ftmp\u002F\nscp -r -P 2222 \u002F本地目录 username@远程IP:\u002F目标目录\u002F\n```\n\n---\n\n## 8. 软件包管理\n\nUbuntu 使用 `apt`（Advanced Package Tool）管理软件包。\n\n### 8.1 apt 基本命令\n\n```bash\n# 更新软件包列表\nsudo apt update\n\n# 升级已安装软件包\nsudo apt upgrade\nsudo apt full-upgrade\n\n# 安装软件\nsudo apt install 软件包名\nsudo apt install 软件包1 软件包2\n\n# 删除软件\nsudo apt remove 软件包名       # 保留配置文件\nsudo apt purge 软件包名        # 彻底删除，包括配置文件\n\n# 自动删除不再需要的依赖\nsudo apt autoremove\n\n# 搜索软件包\napt search 关键词\n\n# 查看软件包信息\napt show 软件包名\n\n# 查看已安装软件包\napt list --installed\n\n# 清理下载的软件包缓存\nsudo apt clean\nsudo apt autoclean\n```\n\n### 8.2 dpkg 命令\n\n```bash\n# 安装本地 .deb 包\nsudo dpkg -i 包名.deb\n\n# 查看已安装包\nsudo dpkg -l | grep 关键词\n\n# 查看某个文件属于哪个包\ndpkg -S 文件路径\n\n# 卸载包\nsudo dpkg -r 包名\nsudo dpkg -P 包名\n```\n\n### 8.3 其他包管理工具\n\n```bash\n# snap\nsudo snap install 软件名\nsudo snap remove 软件名\nsudo snap list\n\n# flatpak\nflatpak install 软件名\nflatpak list\n```\n\n---\n\n## 9. 压缩与解压\n\n### 9.1 tar 命令\n\n`tar` 用于打包和解包文件，常与 gzip\u002Fbzip2\u002Fxz 配合使用。\n\n```bash\n# 打包目录（不压缩）\ntar -cvf 包名.tar 目录名\n\n# 解压 tar 包\ntar -xvf 包名.tar\n\n# 打包并用 gzip 压缩\ntar -czvf 包名.tar.gz 目录名\n\n# 解压 tar.gz 包\ntar -xzvf 包名.tar.gz\n\n# 打包并用 bzip2 压缩\ntar -cjvf 包名.tar.bz2 目录名\n\n# 解压 tar.bz2 包\ntar -xjvf 包名.tar.bz2\n\n# 打包并用 xz 压缩\ntar -cJvf 包名.tar.xz 目录名\n\n# 解压 tar.xz 包\ntar -xJvf 包名.tar.xz\n\n# 查看压缩包内容\ntar -tvf 包名.tar.gz\n\n# 解压到指定目录\ntar -xzvf 包名.tar.gz -C \u002F目标目录\n```\n\n参数说明：\n\n- `-c`：create，创建新包\n- `-x`：extract，解压\n- `-t`：list，列出内容\n- `-v`：verbose，显示过程\n- `-f`：file，指定文件名\n- `-z`：使用 gzip 压缩\u002F解压\n- `-j`：使用 bzip2 压缩\u002F解压\n- `-J`：使用 xz 压缩\u002F解压\n\n### 9.2 zip\u002Funzip\n\n```bash\n# 压缩为 zip\nzip -r 压缩包.zip 目录名\n\n# 解压 zip\nunzip 压缩包.zip\n\n# 解压到指定目录\nunzip 压缩包.zip -d \u002F目标目录\n\n# 查看 zip 内容\nunzip -l 压缩包.zip\n```\n\n### 9.3 gzip\u002Fgunzip\n\n```bash\n# gzip 压缩（会替换原文件）\ngzip 文件名\n\n# gzip 解压\ngunzip 文件名.gz\ngzip -d 文件名.gz\n```\n\n---\n\n## 10. 文本处理与搜索\n\n### 10.1 grep 搜索文本\n\n```bash\n# 在文件中搜索关键词\ngrep \"关键词\" 文件名\n\n# 忽略大小写\ngrep -i \"关键词\" 文件名\n\n# 显示行号\ngrep -n \"关键词\" 文件名\n\n# 反向匹配（不包含关键词的行）\ngrep -v \"关键词\" 文件名\n\n# 递归搜索目录\ngrep -r \"关键词\" 目录名\n\n# 显示前后几行\ngrep -C 3 \"关键词\" 文件名\n\n# 正则表达式\ngrep -E \"正则表达式\" 文件名\n\n# 结合管道使用\ncat 文件 | grep \"关键词\"\nps aux | grep nginx\n```\n\n### 10.2 find 查找文件\n\n```bash\n# 按名称查找\nfind \u002F路径 -name \"文件名\"\nfind \u002F路径 -name \"*.txt\"\n\n# 忽略大小写\nfind \u002F路径 -iname \"文件名\"\n\n# 按类型查找\nfind \u002F路径 -type f          # 文件\nfind \u002F路径 -type d          # 目录\n\n# 按大小查找\nfind \u002F路径 -size +100M      # 大于 100M\nfind \u002F路径 -size -1k        # 小于 1K\n\n# 按时间查找\nfind \u002F路径 -mtime -7        # 7 天内修改过\nfind \u002F路径 -atime +30       # 30 天前访问过\n\n# 执行操作\nfind \u002F路径 -name \"*.log\" -delete\nfind \u002F路径 -name \"*.txt\" -exec chmod 644 {} \\;\n\n# 查找空文件\u002F目录\nfind \u002F路径 -empty\n```\n\n### 10.3 awk 文本处理\n\n```bash\n# 打印指定列\nawk '{print $1}' 文件名\nawk '{print $1, $3}' 文件名\n\n# 指定分隔符\nawk -F: '{print $1}' \u002Fetc\u002Fpasswd\n\n# 带条件处理\nawk '$3 > 100 {print $1}' 文件名\n\n# 计算列总和\nawk '{sum += $1} END {print sum}' 文件名\n```\n\n### 10.4 sed 流编辑器\n\n```bash\n# 替换文本\nsed 's\u002F旧字符串\u002F新字符串\u002F' 文件名\nsed 's\u002F旧字符串\u002F新字符串\u002Fg' 文件名     # 全局替换\nsed -i 's\u002F旧字符串\u002F新字符串\u002Fg' 文件名   # 直接修改文件\n\n# 删除行\nsed '3d' 文件名          # 删除第 3 行\nsed '\u002F关键词\u002Fd' 文件名    # 删除包含关键词的行\n\n# 打印指定行\nsed -n '5,10p' 文件名\n```\n\n### 10.5 sort 和 uniq\n\n```bash\n# 排序\nsort 文件名\nsort -r 文件名           # 倒序\nsort -n 文件名           # 按数字排序\nsort -k 2 文件名         # 按第 2 列排序\n\n# 去重\nuniq 文件名\nuniq -c 文件名           # 统计重复次数\nsort 文件名 | uniq\nsort 文件名 | uniq -c | sort -nr   # 统计并排序\n```\n\n### 10.6 cut 和 tr\n\n```bash\n# 截取列\ncut -d: -f1 \u002Fetc\u002Fpasswd\ncut -c 1-5 文件名\n\n# 字符转换\u002F删除\ntr 'a-z' 'A-Z' \u003C 文件名     # 小写转大写\ntr -d ' ' \u003C 文件名          # 删除空格\n```\n\n---\n\n## 11. 系统服务管理\n\nUbuntu 使用 systemd 管理系统服务。\n\n```bash\n# 查看服务状态\nsystemctl status 服务名\n\n# 启动服务\nsudo systemctl start 服务名\n\n# 停止服务\nsudo systemctl stop 服务名\n\n# 重启服务\nsudo systemctl restart 服务名\n\n# 重新加载配置\nsudo systemctl reload 服务名\n\n# 设置开机自启\nsudo systemctl enable 服务名\n\n# 取消开机自启\nsudo systemctl disable 服务名\n\n# 查看所有运行中服务\nsystemctl list-units --type=service --state=running\n\n# 查看开机自启服务\nsystemctl list-unit-files --state=enabled\n\n# 以旧版 service 命令管理（systemd 兼容）\nsudo service 服务名 start\nsudo service 服务名 stop\nsudo service 服务名 restart\nsudo service 服务名 status\n```\n\n---\n\n## 12. 环境变量与Shell\n\n### 12.1 查看环境变量\n\n```bash\n# 查看所有环境变量\nenv\nprintenv\n\n# 查看指定变量\necho $PATH\necho $HOME\necho $USER\n\n# 查看 Shell\necho $SHELL\n```\n\n### 12.2 设置环境变量\n\n```bash\n# 临时设置（仅当前终端有效）\nexport 变量名=值\nexport PATH=$PATH:\u002F新路径\n\n# 永久设置（当前用户）\n# 编辑 ~\u002F.bashrc 或 ~\u002F.profile\nnano ~\u002F.bashrc\nexport 变量名=值\nsource ~\u002F.bashrc\n\n# 永久设置（系统全局）\nsudo nano \u002Fetc\u002Fenvironment\n# 或\nsudo nano \u002Fetc\u002Fprofile\n```\n\n### 12.3 Shell 脚本基础\n\n```bash\n# 创建脚本文件\nnano hello.sh\n```\n\n脚本内容示例：\n\n```bash\n#!\u002Fbin\u002Fbash\n# 这是一个示例脚本\n\necho \"Hello, Ubuntu!\"\necho \"当前用户：$USER\"\necho \"当前目录：$(pwd)\"\n```\n\n```bash\n# 添加执行权限\nchmod +x hello.sh\n\n# 执行脚本\n.\u002Fhello.sh\n# 或\nbash hello.sh\n```\n\n---\n\n## 13. 常用快捷键\n\n### 13.1 终端快捷键\n\n| 快捷键 | 作用 |\n|--------|------|\n| `Ctrl + C` | 终止当前进程 |\n| `Ctrl + Z` | 暂停当前进程 |\n| `Ctrl + D` | 退出终端 \u002F EOF |\n| `Ctrl + L` | 清屏 |\n| `Ctrl + A` | 光标移到行首 |\n| `Ctrl + E` | 光标移到行尾 |\n| `Ctrl + U` | 删除光标前所有内容 |\n| `Ctrl + K` | 删除光标后所有内容 |\n| `Ctrl + W` | 删除前一个单词 |\n| `Ctrl + R` | 搜索历史命令 |\n| `Ctrl + Shift + C` | 复制 |\n| `Ctrl + Shift + V` | 粘贴 |\n| `Tab` | 自动补全 |\n| `↑ \u002F ↓` | 浏览历史命令 |\n\n### 13.2 历史命令\n\n```bash\n# 查看历史命令\nhistory\n\n# 执行上一条命令\n!!\n\n# 执行历史中的第 N 条命令\n!N\n\n# 执行最近一条以某字符串开头的命令\n!字符串\n\n# 清除历史记录\nhistory -c\n```\n\n---\n\n## 14. 实用小技巧\n\n### 14.1 管道与重定向\n\n```bash\n# 管道：将前一个命令的输出作为后一个命令的输入\n命令1 | 命令2\ncat file.txt | grep \"error\"\n\n# 输出重定向\n命令 > 文件        # 覆盖写入\n命令 >> 文件       # 追加写入\n\n# 错误输出重定向\n命令 2> 错误日志\n命令 > 输出日志 2>&1\n\n# 输入重定向\n命令 \u003C 文件\n\n# 丢弃输出\n命令 > \u002Fdev\u002Fnull 2>&1\n```\n\n### 14.2 定时任务\n\n```bash\n# 编辑当前用户的 crontab\ncrontab -e\n\n# 查看当前用户的 crontab\ncrontab -l\n\n# 删除当前用户的 crontab\ncrontab -r\n```\n\ncrontab 时间格式：\n\n```\n* * * * * 命令\n│ │ │ │ │\n│ │ │ │ └── 星期（0-7，0 和 7 都表示星期日）\n│ │ │ └──── 月份（1-12）\n│ │ └────── 日期（1-31）\n│ └──────── 小时（0-23）\n└────────── 分钟（0-59）\n```\n\n示例：\n\n```bash\n# 每天凌晨 2 点执行备份\n0 2 * * * \u002Fhome\u002Fuser\u002Fbackup.sh\n\n# 每 5 分钟执行一次\n*\u002F5 * * * * \u002Fhome\u002Fuser\u002Fcheck.sh\n\n# 每周一早上 8 点执行\n0 8 * * 1 \u002Fhome\u002Fuser\u002Fweekly.sh\n```\n\n### 14.3 开机启动配置\n\n```bash\n# 使用 systemd 创建自定义服务\nsudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fmyapp.service\n```\n\n示例内容：\n\n```ini\n[Unit]\nDescription=My Application\nAfter=network.target\n\n[Service]\nExecStart=\u002Fusr\u002Flocal\u002Fbin\u002Fmyapp\nRestart=always\nUser=username\n\n[Install]\nWantedBy=multi-user.target\n```\n\n```bash\nsudo systemctl daemon-reload\nsudo systemctl enable myapp.service\nsudo systemctl start myapp.service\n```\n\n### 14.4 日志查看\n\n```bash\n# 使用 journalctl 查看系统日志\njournalctl\njournalctl -xe\njournalctl -u 服务名\njournalctl -f                 # 实时查看\njournalctl --since \"2024-01-01 10:00:00\"\n\n# 查看系统日志文件\ncat \u002Fvar\u002Flog\u002Fsyslog\ntail -f \u002Fvar\u002Flog\u002Fsyslog\n```\n\n### 14.5 其他实用命令\n\n```bash\n# 生成指定大小的测试文件\ndd if=\u002Fdev\u002Fzero of=test.img bs=1M count=100\n\n# 查看命令执行时间\ntime 命令\n\n# 生成随机密码\nopenssl rand -base64 16\n\n# 计算文件 MD5\nmd5sum 文件名\n\n# 计算文件 SHA256\nsha256sum 文件名\n\n# 查看当前目录树结构\ntree                # 需安装 tree\n\n# 以另一个用户身份执行命令\nsudo -u 用户名 命令\n\n# 批量执行命令到多个服务器（需配置 SSH）\nfor host in server1 server2; do ssh $host \"uptime\"; done\n```\n\n---\n\n## 附录：命令速查表\n\n| 类别 | 常用命令 |\n|------|----------|\n| 文件目录 | `ls`, `cd`, `pwd`, `mkdir`, `rm`, `cp`, `mv`, `touch` |\n| 查看文件 | `cat`, `less`, `head`, `tail`, `wc`, `nano`, `vim` |\n| 权限用户 | `chmod`, `chown`, `chgrp`, `sudo`, `adduser`, `passwd` |\n| 系统信息 | `uname`, `hostnamectl`, `free`, `df`, `du`, `top`, `ps` |\n| 网络 | `ip`, `ifconfig`, `ping`, `traceroute`, `mtr`, `ss`, `netstat`, `lsof`, `tcpdump`, `curl`, `wget`, `ssh`, `scp`, `rsync`, `nmap`, `nc`, `telnet`, `dig`, `nslookup`, `host`, `whois`, `nmcli`, `ufw`, `iptables` |\n| 软件包 | `apt`, `dpkg`, `snap` |\n| 压缩 | `tar`, `zip`, `gzip` |\n| 文本处理 | `grep`, `find`, `awk`, `sed`, `sort`, `uniq` |\n| 服务管理 | `systemctl`, `service` |\n| 其他 | `crontab`, `history`, `journalctl`, `dd`, `time` |\n\n---\n\n> 提示：Linux 命令选项众多，建议通过 `man 命令名` 或 `命令名 --help` 查看完整说明。实际使用中，尽量先理解命令含义，特别是在使用 `rm -rf`、`dd`、`mkfs` 等可能造成数据丢失的命令时，务必谨慎确认。",25,false,"2026-10-15T21:36:37",{"list":93,"total":20,"page":20,"size":99},[94],{"id":95,"blog_id":84,"nickname":96,"content":97,"created_at":98},10008,"admin","这种风格好看","2026-10-15T13:26:24",30]