【Linux复习】:基础指令/常用工具

基础指令

目录相关

  1. pwd
    打印当前所在路径

  2. ls
    列出目录内容

    ls # 简单列表
    ls -l # 详细信息(权限、大小、时间)
    ls -a # 显示隐藏文件
    ls -la # 详细 + 隐藏
    ls -lt # 按时间排序

  3. cd
    切换目录

    cd /home # 绝对路径
    cd .. # 返回上一级
    cd ../.. # 返回上两级
    cd ~ # 回家目录
    cd - # 返回上一次所在目录

文件相关

  1. touch
    创建空文件 / 更新文件时间

    touch test.txt

  2. mkdir
    创建文件夹

    mkdir test
    mkdir -p a/b/c # 递归创建多级目录

  3. rm
    删除文件 / 文件夹(危险!)

    rm file.txt # 删除文件
    rm -r dir # 删除文件夹
    rm -rf dir # 强制删除(不询问)

  4. cp
    复制文件 / 目录

    cp a.txt b.txt
    cp -r dir1 dir2 # 复制目录必须加 -r

  5. mv
    移动 / 重命名

    mv a.txt b.txt # 改名
    mv a.txt ../ # 移动到上一级

文件查看相关

  1. less
    分页查看大文件(最强)

    less test.cpp

快捷键:

上下键 滚动

/字符串 向下搜索

?字符串 向上搜索

n 下一个匹配

N 上一个匹配

q 退出

常用选项:

复制代码
less -N test.cpp   # 显示行号
less -i test.cpp   # 忽略大小写
  1. head
    看文件前 N 行

    head test.cpp
    head -n 20 test.cpp

  2. tail
    看文件末尾,实时监控日志

    tail test.cpp
    tail -n 20 test.cpp
    tail -f test.log # 实时刷新(监控日志必备!)

  3. find
    在系统里找文件
    find 从哪搜 -按什么搜 搜什么
    例子:

    find ~ -name "*.hpp"
    find / -name test.cpp
    find . -type f # 只找文件
    find . -type d # 只找目录

  4. grep
    在文件里搜索字符串(最强文本工具)
    grep "main" test.cpp
    常用:

    grep -n "main" test.cpp # 显示行号
    grep -i "Main" test.cpp # 忽略大小写
    grep -v "main" test.cpp # 反向匹配(不要main)

压缩相关

  1. zip / unzip

    zip test.zip file1 file2
    zip -r test.zip dir/
    unzip test.zip
    unzip test.zip -d /tmp # 解压到指定目录

  2. tar(最常用)
    打包压缩
    tar -czvf test.tar.gz dir/
    c 创建
    z gzip 压缩
    v 显示过程
    f 指定文件
    解压

    tar -xzvf test.tar.gz
    tar -xzvf test.tar.gz -C /tmp # 解压到指定目录

  3. ps
    查看进程

    ps aux
    ps aux | grep "nginx"

  4. kill
    杀死进程

    kill pid
    kill -9 pid # 强制杀

网络相关

netstat

查看端口占用

复制代码
netstat -natp
netstat -natp | grep 8080

IPC相关

  1. ipcs
    查看共享内存 / 消息队列 / 信号量

    ipcs
    ipcs -m # 只看共享内存
    ipcs -q # 只看消息队列

  2. ipcrm
    删除 IPC 资源

    ipcrm -m shmid
    ipcrm -q qid

系统资源相关

top

实时监控系统(任务管理器)

复制代码
top
  1. free
    看内存

    free -h

  2. df
    看磁盘挂载

    df -h

  3. du
    看文件 / 目录大小

    du -sh .
    du -sh *

权限相关

  1. su
    切换用户

    su root
    su user

  2. chmod
    修改文件权限

    chmod 777 file
    chmod 644 file
    chmod +x file # 加执行权限

  3. chgrp
    修改所属组

    chgrp user file

常用工具

一、Vim 编辑器(Linux 必备文本编辑器)

核心:三大模式(所有操作必须牢记模式切换)

默认打开是普通模式;按 i 进插入模式;按 : 进底行模式;按 Esc 退回普通模式。

  1. 普通模式(默认模式)
    功能:控制光标移动、删除、复制、粘贴、撤销、剪切
    核心快捷键:
    分类 ---------------- 命令--------------- 作用
    光标移动--------- h j k l ------- 左、下、上、右(方向键替代)
    光标移动--------- gg----------- 跳转到文件第一行
    光标移动--------- G------- 跳转到文件最后一行
    删除 ----------------dd --------------删除整行
    删除 ---------------5dd- -----------删除5 行(数字 + dd)
    复制 -----------------yy -----------复制整行
    复制 ------------------3yy -----------复制3 行
    粘贴--------------- p --------------粘贴到光标下一行
    撤销--------------- u --------------撤销上一步操作
    反撤销 ------------------Ctrl + r------------ 恢复撤消
    剪切 --------------------dd + p------- 删除行 + 粘贴 = 剪切
  2. 插入模式
    功能:输入 / 编辑文字(像记事本一样打字)
    进入方式:
    i:在光标前插入
    a:在光标后插入
    o:在光标下一行新建行插入
  3. 底行模式
    功能:保存、退出、搜索、显示行号、文本替换
    核心命令:
    命令 作用
    :w 保存文件
    :q 退出文件
    :wq 保存并退出
    :q! 强制退出(不保存)
    :set nu 显示行号
    :set nonu 取消行号
    /字符串 向下搜索字符串
    ?字符串 向上搜索字符串
    n/N 下一个 / 上一个搜索结果
    二、gcc/g++(C/C++ 编译器)
    核心:程序编译的 4 个阶段
    源文件 .c → 预处理 → 编译 → 汇编 → 链接 → 可执行文件

阶段--------- 命令----- 作用-------- 输出文件

预处理 ------gcc -E ----宏替换、头文件展开、去注释、条件编译 .i文本

编译 --------gcc -S ----检查语法,翻译成汇编语言 .s汇编

汇编 --------gcc -c ----汇编转二进制机器码(不可独立运行) .o目标文件

链接 ----------gcc------ 合并库文件,生成可执行文件 可执行程序

完整示例:

复制代码
# 1. 预处理
gcc -E hello.c -o hello.i
# 2. 编译
gcc -S hello.i -o hello.s
# 3. 汇编
gcc -c hello.s -o hello.o
# 4. 链接(生成最终程序)
gcc hello.o -o hello
  1. 两种链接方式
    ① 静态链接(-static)
    原理:把库文件代码直接拷贝到可执行程序中
    优点:运行不需要依赖库文件,移植方便
    缺点:程序体积大,浪费空间
    ② 动态链接(默认)
    原理:程序运行时动态加载库文件
    优点:程序体积小,多个程序共享库
    缺点:运行必须依赖库文件

  2. 静态库 / 动态库 生成与使用
    ① 静态库(.a)生成

    1. 生成.o二进制文件

    gcc -c add.c sub.c

    2. 打包成静态库 libxxx.a

    ar -rc libmymath.a add.o sub.o

② 动态库(.so)生成

复制代码
# 1. 生成与位置无关的.o文件
gcc -fPIC -c add.c sub.c
# 2. 生成动态库 libxxx.so
gcc -shared -o libmymath.so add.o sub.o

③ 库的使用(核心参数)

复制代码
gcc test.c -I ./include -L ./lib -l mymath -o test

-I:指定头文件路径

-L:指定库文件路径

-l:指定库名称(去掉lib和.a/.so)

  1. gcc 核心选项速查

选项 ----作用

-E 仅预处理

-S 仅编译到汇编

-c 仅汇编到二进制

-o 指定输出文件名

-g 生成调试信息(gdb 调试必备)

-static 强制静态链接

-fPIC 生成动态库专用的位置无关码

-shared 生成动态库

三、gdb(Linux 程序调试工具)

  1. 调试前提
    必须用 gcc -g 编译,嵌入调试信息,否则无法调试!

    gcc test.c -o test -g

  2. 启动 gdb

    gdb ./test

  3. 核心调试命令

命令 简写 作用

run r 直接运行程序

start - 逐行调试(停在第一行)

next n 逐过程调试(不进入函数)

step s 逐语句调试(进入函数内部)

break 行号 b 设置断点

info break i b 查看所有断点

delete 断点号 d 删除断点

print 变量 p 查看变量值

bt - 查看函数调用栈

quit q 退出 gdb

四、make(自动化编译工具)

  1. 作用
    解决多文件编译繁琐的问题,通过 Makefile 脚本,一键编译整个项目。

  2. Makefile 核心规则
    makefile
    目标: 依赖文件
    命令(必须以Tab开头!)

  3. 极简示例

    makefile
    test: main.c add.c sub.c
    gcc main.c add.c sub.c -o test

    clean:
    rm -f test

  4. 使用

    make # 一键编译
    make clean # 清理可执行文件

  5. 原理
    只编译修改过的文件,大幅提升编译速度
    大型项目(nginx、mysql)必备工具
    五、git(分布式版本控制工具)

  6. 核心作用
    管理代码版本(回滚、备份、对比)
    多人协作开发(GitHub/Gitee)

  7. 三大区域
    工作区:写代码的地方
    暂存区:临时保存代码
    本地仓库:永久保存版本
    远程仓库:GitHub/Gitee 云端仓库

  8. 最常用命令
    表格
    命令 作用

    git init 初始化本地仓库
    git clone 仓库地址 克隆远程仓库到本地
    git add 文件名 将文件添加到暂存区
    git add . 添加所有文件到暂存区
    git commit -m "备注" 提交到本地仓库
    git push 推送到远程仓库
    git pull 拉取远程代码到本地
    git status 查看文件状态
    git log 查看提交历史
    git branch 查看 / 创建分支
    git checkout 分支名 切换分支

  9. 标准工作流程

    git clone https://xxx.git # 克隆代码
    git add . # 添加文件
    git commit -m "完成功能" # 提交本地
    git push # 推送到远程

相关推荐
欲盖弥彰13142 小时前
Linux设备驱动 -- TMP75AIDR驱动移植
linux·驱动开发·驱动·驱动移植·嵌入式linux驱动·tmp75aidr
辰痕~2 小时前
数据结构-算法
linux
HalvmånEver2 小时前
Linux:基于TCP Socket的在线翻译
linux·运维·服务器·网络·学习·tcp/ip
BIBI20492 小时前
VirtualBox 7.x 安装 Ubuntu 24 及增强功能配置、克隆虚拟机教程
linux·windows·ubuntu·环境搭建·安装教程·最佳实践·virtualbox
weixin_462901972 小时前
HICKPI主板h618 Ubuntu / Armbian 镜像 SD安装
linux·运维·ubuntu
A.A呐2 小时前
【Linux第二十四章】IP协议
linux·网络
llkk星期五2 小时前
ubuntu(24.04)下wayland显示界面带来的影响
linux·ubuntu
hsjcjh11 小时前
Nodemailer使用教程:在Node.js中发送电子邮件
linux·运维·node.js
不怕犯错,就怕不做12 小时前
linux 如何查看自己的帐号密码及samba的帐号和密码
linux·运维·服务器