【Linux】系统指令与开发全栈(vim、ssh、gcc)
一、Linux 系统指令大全
1、文件与目录管理
基础操作
指令 参数说明 典型用例 注意事项 cd
~
家目录,-
返回上级,..
上级目录cd ~/Documents
进入文档目录无目录权限时会报错 ls
-l
详情,-a
隐藏文件,-h
易读大小ls -lah /var/log
查看日志目录详情避免直接 ls -R /
递归根目录cp
-r
递归复制,-i
交互确认cp -ri old_dir/ new_dir/
带确认的目录复制高危: cp /* /target
可能覆盖系统文件mv
-n
禁止覆盖,-v
显示过程mv -v *.txt ~/backup
移动文本文件并显示进度跨文件系统移动等同于“复制+删除” rm
-r
递归删除,-f
强制rm -rf ./tmp/
删除临时目录红色警报: rm -rf /
会毁灭系统!scp
-P
指定端口,-C
压缩传输scp -P 2222 file.txt user@192.168.1.100:/path
跨服务器安全传输需提前配置 SSH 免密登录 高级操作
# 文件权限深度管理 chmod 755 script.sh # 所有者RWX,其他用户RX chown user:group file.txt # 修改文件所有者 chattr +i important.conf # 禁止文件被修改(需root权限) # 查找与处理 find /home -name "*.log" -size +10M -exec rm {} \; # 删除大于10MB的日志文件 grep -rn "ERROR" /var/log/ # 全日志检索错误关键词
2、系统监控与进程管理
实时监控工具
指令 核心参数 监控焦点 top
-p PID
监控指定进程,-d 2
刷新间隔2秒CPU/Memory 占用 htop
-u user
过滤用户进程,F2
进入配置界面交互式进程管理 iotop
-o
只显示有IO操作的进程磁盘I/O分析 nethogs
eth0
指定监控网卡进程网络流量 进程控制
kill -9 PID # 强制终止进程(无法捕获信号) pkill -f "python app.py" # 按进程名终止 pgrep -u root # 查找root用户的进程ID nice -n 19 tar -zcf bigfile.tar.gz /data # 最低优先级压缩(避免系统卡顿)
3、网络配置与调试
网络状态分析
ip addr show # 查看所有网络接口(替代ifconfig) ss -tulnp # 查看所有监听端口(比netstat更快) traceroute -w 1 baidu.com # 路由追踪(1秒超时) mtr --report google.com # 持续路由质量分析
防火墙与端口
sudo ufw allow 22/tcp # 开放SSH端口 sudo iptables -L -n -v # 查看iptables规则详情 nc -zv 192.168.1.1 80 # 快速检测目标端口开放状态
4、环境变量与Shell配置
变量管理
echo $PATH # 查看当前PATH变量 export PATH=$PATH:/new/path # 临时添加路径 source ~/.bashrc # 重新加载配置 # 永久生效方法 echo 'export JAVA_HOME=/usr/lib/jvm/java-11' >> ~/.bashrc
常用环境变量表
变量 作用 典型值示例 PATH
可执行文件路径 /usr/local/bin:/usr/bin
LD_LIBRARY_PATH
动态库路径 /usr/local/cuda/lib64
PS1
终端提示符格式 \e[32m\u@\h:\w\$ \e[0m
(绿色提示符)
5、Linux 紧急救援场景
问题 | 指令组合 |
---|---|
恢复误删文件 | sudo extundelete /dev/sda1 --restore-file /home/user/file.txt |
系统无法启动 | 使用Live USB挂载硬盘 → fsck /dev/sda1 |
磁盘空间爆炸 | du -h --max-depth=1 / | sort -hr 查找大文件 |
二、Vim 编辑器指令
1、模式系统
模式 | 进入方式 | 核心功能 | 退出方式 |
---|---|---|---|
普通模式 | 启动默认 / 按 Esc |
导航、删除、复制粘贴 | 输入 : 进入命令模式 |
插入模式 | i (光标前),a (光标后),o (下方新行) |
文本编辑 | Esc 返回普通模式 |
可视模式 | v (字符选择),V (行选择),Ctrl+v (块选择) |
区域选择操作 | Esc |
命令模式 | : |
保存、退出、搜索替换 | 执行命令后自动退出 |
替换模式 | R |
直接覆盖文本 | Esc |
Ex模式 | Q 进入,:visual 退出 |
批处理编辑 | :visual |
2、Vim 核心指令
文件操作
指令 作用 场景示例 :w
保存文件 修改后保存 :q
退出编辑器 无修改时退出 :q!
强制退出不保存 紧急放弃修改 :wq
保存并退出 完成编辑 :e!
放弃修改重载文件 恢复文件初始状态 高效编辑
dd # 删除当前行(配合 3dd 删除3行) yy # 复制当前行(5yy 复制5行) p/P # 粘贴到光标后/前 u/Ctrl+r # 撤销/重做操作 gg=G # 全文件自动缩进(适合代码格式化) >>/<< # 增加/减少缩进
搜索与替换
/error # 向下搜索"error"(n下一处,N上一处) ?warning # 向上搜索"warning" :%s/old/new/g # 全局替换(确认加c参数:%s/old/new/gc) :10,20s/^/#/ # 在第10-20行行首添加注释符(#)
3、Vim 配置
基础配置(
~/.vimrc
)" ========== 基础设置 ========== set nocompatible " 禁用兼容模式(完全启用Vim特性) set number " 显示行号 set cursorline " 高亮当前行 set ruler " 显示状态栏(行号/列号/百分比) set showcmd " 在状态栏显示部分命令(如选中行数/输入指令) set laststatus=2 " 始终显示状态栏 " ========== 搜索优化 ========== set incsearch " 实时搜索高亮 set hlsearch " 保持搜索高亮 set ignorecase " 忽略大小写 set smartcase " 输入大写时启用精确匹配 " ========== 缩进与排版 ========== set autoindent " 自动继承缩进 set smartindent " 智能缩进(代码块对齐) set tabstop=4 " Tab显示为4空格 set shiftwidth=4 " 自动缩进宽度 set softtabstop=4 " 退格键删除缩进 set expandtab " 将Tab转换为空格(Python友好) " ========== 编程增强 ========== syntax on " 启用语法高亮 set showmatch " 括号自动匹配高亮 set cindent " C语言风格缩进 " ========== 跨平台集成 ========== set clipboard=unnamed " 共享系统剪贴板(Windows/macOS兼容) set mouse=a " 启用鼠标支持(滚动/选择/调整窗口) " ========== 高级功能 ========== set autowrite " 执行 :next/:make 等命令前自动保存(防修改丢失) set nobackup " 禁止生成备份文件 set autoread " 文件被外部修改时自动重载 map <F5> :w<CR>:!gcc % -o %< && ./%< " F5编译运行C程序 " ========== 本地扩展配置 ========== if filereadable(expand("~/.vimrc.local")) source ~/.vimrc.local endif
4、Vim 崩溃恢复方案
- 交换文件冲突:
vim -r filename # 恢复未保存的修改 rm .filename.swp # 删除交换文件
- 编码乱码:
:set fileencoding=utf-8 " 强制设为UTF-8 :e ++enc=gbk " 按GBK重新加载
四、SSH 远程管理
1、基础连接与认证
指令 | 参数说明 | 典型用例 | 安全提示 |
---|---|---|---|
ssh user@ip |
-p 2222 指定端口 |
ssh -p 2222 admin@192.168.1.100 |
默认使用22端口需修改 |
ssh-keygen |
-t ed25519 加密算法,-C "注释" |
ssh-keygen -t ed25519 -C "dev@2023" |
密钥文件建议设置密码 |
ssh-copy-id |
-i 指定公钥文件 |
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host |
避免直接传输私钥 |
2、高级隧道与代理
# 本地端口转发(访问内网服务)
ssh -L 8080:localhost:80 user@gateway
# 动态SOCKS代理
ssh -D 1080 user@proxy_server
# 远程执行命令
ssh user@host "ls /var/log; free -h"
3、文件传输与同步
# SCP基础传输
scp -P 2222 file.txt user@host:/path
# Rsync增量同步(排除临时文件)
rsync -avz --exclude '*.tmp' ./project/ user@host:/backup/
# SFTP交互式操作
sftp user@host
> put local_file
> get remote_file
五、GCC 编译开发
1、基础编译指令
指令 | 参数说明 | 编译场景 |
---|---|---|
gcc main.c |
默认输出 a.out |
单文件快速编译 |
gcc -o hello main.c |
-o 指定输出文件名 |
自定义可执行文件名 |
gcc -Wall -Wextra main.c |
启用所有警告检查 | 代码规范审查 |
2、多文件工程编译
# 分步编译
gcc -c module1.c # 生成 module1.o
gcc -c module2.c # 生成 module2.o
gcc -o app main.c module1.o module2.o
# 单命令编译
gcc -o app main.c module1.c module2.c
3、调试与优化
# 调试版本(生成符号表)
gcc -g -o debug_app main.c
# 性能优化(O3级优化)
gcc -O3 -o fast_app main.c
# 指定C标准版本
gcc -std=c11 -o modern_app main.c
4、静态库与动态库
# 静态库创建
gcc -c libmath.c
ar rcs libmath.a libmath.o
# 动态库编译
gcc -shared -fPIC -o libmath.so libmath.c
# 链接库文件
gcc -o calc main.c -L. -lmath