基础指令
目录相关
-
pwd
打印当前所在路径 -
ls
列出目录内容ls # 简单列表
ls -l # 详细信息(权限、大小、时间)
ls -a # 显示隐藏文件
ls -la # 详细 + 隐藏
ls -lt # 按时间排序 -
cd
切换目录cd /home # 绝对路径
cd .. # 返回上一级
cd ../.. # 返回上两级
cd ~ # 回家目录
cd - # 返回上一次所在目录
文件相关
-
touch
创建空文件 / 更新文件时间touch test.txt
-
mkdir
创建文件夹mkdir test
mkdir -p a/b/c # 递归创建多级目录 -
rm
删除文件 / 文件夹(危险!)rm file.txt # 删除文件
rm -r dir # 删除文件夹
rm -rf dir # 强制删除(不询问) -
cp
复制文件 / 目录cp a.txt b.txt
cp -r dir1 dir2 # 复制目录必须加 -r -
mv
移动 / 重命名mv a.txt b.txt # 改名
mv a.txt ../ # 移动到上一级
文件查看相关
-
less
分页查看大文件(最强)less test.cpp
快捷键:
上下键 滚动
/字符串 向下搜索
?字符串 向上搜索
n 下一个匹配
N 上一个匹配
q 退出
常用选项:
less -N test.cpp # 显示行号
less -i test.cpp # 忽略大小写
-
head
看文件前 N 行head test.cpp
head -n 20 test.cpp -
tail
看文件末尾,实时监控日志tail test.cpp
tail -n 20 test.cpp
tail -f test.log # 实时刷新(监控日志必备!) -
find
在系统里找文件
find 从哪搜 -按什么搜 搜什么
例子:find ~ -name "*.hpp"
find / -name test.cpp
find . -type f # 只找文件
find . -type d # 只找目录 -
grep
在文件里搜索字符串(最强文本工具)
grep "main" test.cpp
常用:grep -n "main" test.cpp # 显示行号
grep -i "Main" test.cpp # 忽略大小写
grep -v "main" test.cpp # 反向匹配(不要main)
压缩相关
-
zip / unzip
zip test.zip file1 file2
zip -r test.zip dir/
unzip test.zip
unzip test.zip -d /tmp # 解压到指定目录 -
tar(最常用)
打包压缩
tar -czvf test.tar.gz dir/
c 创建
z gzip 压缩
v 显示过程
f 指定文件
解压tar -xzvf test.tar.gz
tar -xzvf test.tar.gz -C /tmp # 解压到指定目录 -
ps
查看进程ps aux
ps aux | grep "nginx" -
kill
杀死进程kill pid
kill -9 pid # 强制杀
网络相关
netstat
查看端口占用
netstat -natp
netstat -natp | grep 8080
IPC相关
-
ipcs
查看共享内存 / 消息队列 / 信号量ipcs
ipcs -m # 只看共享内存
ipcs -q # 只看消息队列 -
ipcrm
删除 IPC 资源ipcrm -m shmid
ipcrm -q qid
系统资源相关
top
实时监控系统(任务管理器)
top
-
free
看内存free -h
-
df
看磁盘挂载df -h
-
du
看文件 / 目录大小du -sh .
du -sh *
权限相关
-
su
切换用户su root
su user -
chmod
修改文件权限chmod 777 file
chmod 644 file
chmod +x file # 加执行权限 -
chgrp
修改所属组chgrp user file
常用工具
一、Vim 编辑器(Linux 必备文本编辑器)
核心:三大模式(所有操作必须牢记模式切换)
默认打开是普通模式;按 i 进插入模式;按 : 进底行模式;按 Esc 退回普通模式。
- 普通模式(默认模式)
功能:控制光标移动、删除、复制、粘贴、撤销、剪切
核心快捷键:
分类 ---------------- 命令--------------- 作用
光标移动--------- h j k l ------- 左、下、上、右(方向键替代)
光标移动--------- gg----------- 跳转到文件第一行
光标移动--------- G------- 跳转到文件最后一行
删除 ----------------dd --------------删除整行
删除 ---------------5dd- -----------删除5 行(数字 + dd)
复制 -----------------yy -----------复制整行
复制 ------------------3yy -----------复制3 行
粘贴--------------- p --------------粘贴到光标下一行
撤销--------------- u --------------撤销上一步操作
反撤销 ------------------Ctrl + r------------ 恢复撤消
剪切 --------------------dd + p------- 删除行 + 粘贴 = 剪切 - 插入模式
功能:输入 / 编辑文字(像记事本一样打字)
进入方式:
i:在光标前插入
a:在光标后插入
o:在光标下一行新建行插入 - 底行模式
功能:保存、退出、搜索、显示行号、文本替换
核心命令:
命令 作用
: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
-
两种链接方式
① 静态链接(-static)
原理:把库文件代码直接拷贝到可执行程序中
优点:运行不需要依赖库文件,移植方便
缺点:程序体积大,浪费空间
② 动态链接(默认)
原理:程序运行时动态加载库文件
优点:程序体积小,多个程序共享库
缺点:运行必须依赖库文件 -
静态库 / 动态库 生成与使用
① 静态库(.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)
- gcc 核心选项速查
选项 ----作用
-E 仅预处理
-S 仅编译到汇编
-c 仅汇编到二进制
-o 指定输出文件名
-g 生成调试信息(gdb 调试必备)
-static 强制静态链接
-fPIC 生成动态库专用的位置无关码
-shared 生成动态库
三、gdb(Linux 程序调试工具)
-
调试前提
必须用 gcc -g 编译,嵌入调试信息,否则无法调试!gcc test.c -o test -g
-
启动 gdb
gdb ./test
-
核心调试命令
命令 简写 作用
run r 直接运行程序
start - 逐行调试(停在第一行)
next n 逐过程调试(不进入函数)
step s 逐语句调试(进入函数内部)
break 行号 b 设置断点
info break i b 查看所有断点
delete 断点号 d 删除断点
print 变量 p 查看变量值
bt - 查看函数调用栈
quit q 退出 gdb
四、make(自动化编译工具)
-
作用
解决多文件编译繁琐的问题,通过 Makefile 脚本,一键编译整个项目。 -
Makefile 核心规则
makefile
目标: 依赖文件
命令(必须以Tab开头!) -
极简示例
makefile
test: main.c add.c sub.c
gcc main.c add.c sub.c -o testclean:
rm -f test -
使用
make # 一键编译
make clean # 清理可执行文件 -
原理
只编译修改过的文件,大幅提升编译速度
大型项目(nginx、mysql)必备工具
五、git(分布式版本控制工具) -
核心作用
管理代码版本(回滚、备份、对比)
多人协作开发(GitHub/Gitee) -
三大区域
工作区:写代码的地方
暂存区:临时保存代码
本地仓库:永久保存版本
远程仓库:GitHub/Gitee 云端仓库 -
最常用命令
表格
命令 作用git init 初始化本地仓库
git clone 仓库地址 克隆远程仓库到本地
git add 文件名 将文件添加到暂存区
git add . 添加所有文件到暂存区
git commit -m "备注" 提交到本地仓库
git push 推送到远程仓库
git pull 拉取远程代码到本地
git status 查看文件状态
git log 查看提交历史
git branch 查看 / 创建分支
git checkout 分支名 切换分支 -
标准工作流程
git clone https://xxx.git # 克隆代码
git add . # 添加文件
git commit -m "完成功能" # 提交本地
git push # 推送到远程