【Linux】系统指令与开发全栈(vim、ssh、gcc)

【Linux】系统指令与开发全栈(vim、ssh、gcc)


一、Linux 系统指令大全

1、文件与目录管理

  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 [email protected]:/path 跨服务器安全传输 需提前配置 SSH 免密登录
  2. 高级操作

    bash 复制代码
    # 文件权限深度管理  
    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、系统监控与进程管理

  1. 实时监控工具

    指令 核心参数 监控焦点
    top -p PID 监控指定进程,-d 2 刷新间隔2秒 CPU/Memory 占用
    htop -u user 过滤用户进程,F2 进入配置界面 交互式进程管理
    iotop -o 只显示有IO操作的进程 磁盘I/O分析
    nethogs eth0 指定监控网卡 进程网络流量
  2. 进程控制

    bash 复制代码
    kill -9 PID                  # 强制终止进程(无法捕获信号)  
    pkill -f "python app.py"     # 按进程名终止  
    pgrep -u root                # 查找root用户的进程ID  
    nice -n 19 tar -zcf bigfile.tar.gz /data  # 最低优先级压缩(避免系统卡顿)  

3、网络配置与调试

  1. 网络状态分析

    bash 复制代码
    ip addr show                 # 查看所有网络接口(替代ifconfig)  
    ss -tulnp                    # 查看所有监听端口(比netstat更快)  
    traceroute -w 1 baidu.com    # 路由追踪(1秒超时)  
    mtr --report google.com      # 持续路由质量分析  
  2. 防火墙与端口

    bash 复制代码
    sudo ufw allow 22/tcp        # 开放SSH端口  
    sudo iptables -L -n -v       # 查看iptables规则详情  
    nc -zv 192.168.1.1 80        # 快速检测目标端口开放状态  

4、环境变量与Shell配置

  1. 变量管理

    bash 复制代码
    echo $PATH                   # 查看当前PATH变量  
    export PATH=$PATH:/new/path  # 临时添加路径  
    source ~/.bashrc             # 重新加载配置  
    
    # 永久生效方法  
    echo 'export JAVA_HOME=/usr/lib/jvm/java-11' >> ~/.bashrc  
  2. 常用环境变量表

    变量 作用 典型值示例
    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 /

二、Vim 编辑器指令

1、模式系统

模式 进入方式 核心功能 退出方式
普通模式 启动默认 / 按 Esc 导航、删除、复制粘贴 输入 : 进入命令模式
插入模式 i(光标前),a(光标后),o(下方新行) 文本编辑 Esc 返回普通模式
可视模式 v(字符选择),V(行选择),Ctrl+v(块选择) 区域选择操作 Esc
命令模式 : 保存、退出、搜索替换 执行命令后自动退出
替换模式 R 直接覆盖文本 Esc
Ex模式 Q 进入,:visual 退出 批处理编辑 :visual

2、Vim 核心指令

  1. 文件操作

    指令 作用 场景示例
    :w 保存文件 修改后保存
    :q 退出编辑器 无修改时退出
    :q! 强制退出不保存 紧急放弃修改
    :wq 保存并退出 完成编辑
    :e! 放弃修改重载文件 恢复文件初始状态
  2. 高效编辑

    vim 复制代码
    dd          # 删除当前行(配合 3dd 删除3行)  
    yy          # 复制当前行(5yy 复制5行)  
    p/P         # 粘贴到光标后/前  
    u/Ctrl+r    # 撤销/重做操作  
    gg=G        # 全文件自动缩进(适合代码格式化)  
    >>/<<       # 增加/减少缩进  
  3. 搜索与替换

    vim 复制代码
    /error      # 向下搜索"error"(n下一处,N上一处)  
    ?warning    # 向上搜索"warning"  
    :%s/old/new/g      # 全局替换(确认加c参数:%s/old/new/gc)  
    :10,20s/^/#/       # 在第10-20行行首添加注释符(#)  

3、Vim 配置

  1. 基础配置(~/.vimrc

    vim 复制代码
    " ========== 基础设置 ==========  
    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 崩溃恢复方案

  1. 交换文件冲突

    bash 复制代码
    vim -r filename      # 恢复未保存的修改  
    rm .filename.swp     # 删除交换文件  
  2. 编码乱码

    vim 复制代码
    :set fileencoding=utf-8  " 强制设为UTF-8  
    :e ++enc=gbk            " 按GBK重新加载  

四、SSH 远程管理

1、基础连接与认证

指令 参数说明 典型用例 安全提示
ssh user@ip -p 2222 指定端口 ssh -p 2222 [email protected] 默认使用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、高级隧道与代理

bash 复制代码
# 本地端口转发(访问内网服务)  
ssh -L 8080:localhost:80 user@gateway  

# 动态SOCKS代理  
ssh -D 1080 user@proxy_server  

# 远程执行命令  
ssh user@host "ls /var/log; free -h"  

3、文件传输与同步

bash 复制代码
# 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、多文件工程编译

bash 复制代码
# 分步编译  
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、调试与优化

bash 复制代码
# 调试版本(生成符号表)  
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、静态库与动态库

bash 复制代码
# 静态库创建  
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  

相关推荐
百年孤独百年1 小时前
Conda 环境下安装 GCC 和 glibc (crypt.h) 教程
conda·glibc·gcc·图像恢复·低光照增强
孤寂大仙v2 小时前
【Linux笔记】——Linux线程封装
linux·笔记·算法
樂5022 小时前
RHCE 练习三:架设一台 NFS 服务器
linux·服务器·网络
小飞敲代码2 小时前
【Hadoop 实战】Yarn 模式上传 HDFS 卡顿时 “No Route to Host“ 错误深度解析与解决方案
大数据·linux·运维·服务器·hadoop·分布式·hdfs
zanglengyu3 小时前
RK3568解码1080P视频时遇到系统崩溃内核挂掉的解决方案
linux·音视频·rockchip
遇见火星3 小时前
在CentOS系统上部署GitLabRunner并配置CICD自动项目集成!
linux·运维·ci/cd·centos·gitlabrunner
我不是程序猿儿4 小时前
【C#】用 DevExpress 创建带“下拉子表”的参数表格视图
linux·windows·c#
charlie1145141917 小时前
Linux内核深入学习(4)——内核常见的数据结构2——红黑树
linux·数据结构·学习·红黑树
chen.@-@7 小时前
Linux 常用命令
linux