news 2026/11/6 1:40:57

Linux 基础与常用命令速查:从文件系统到 gcc 编译链接与 makefile

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 基础与常用命令速查:从文件系统到 gcc 编译链接与 makefile

基础知识


Linux和Windows区别

1、Linux 主要使用命令行操作系统,Windows 图形化界面

2、Linux 主要应用于服务器,Windows 是个人操作系统

3、Linux 属于开源项目,而 Windows 不开源

4、Linux 是多用户系统,多用户同时登录;Windows 是单用户系统

5、Linux可执行程序:ELF格式;Windows可执行程序:PE格式

用户表示及大致结构

普通用户 $ stu

管理员 # root

/:根目录(文件夹)

bin(存放命令或二进制可执行程序)、home(普通用户家目录)、lib(库文件)、etc(放配置文件)···

~:家目录:/home/stu 表示stu这个用户的家目录。stu用户可在stu这个文件夹中存放、删除、创建新文件夹;根目录下创建文件需要管理员权限

文件类型

-:普通文件

d:目录文件(文件夹)

|:链接文件

p:管道文件

调试版本与发行版本

Windows中:

debug:开发调试版本,含有调试信息

release:发行版本,给用户使用

Linux中:

调试版本:gcc -o main add.o max.o main.o -g

发行版本:gcc -o main add.o max.o main.o

主函数参数

一般含有三个参数:参数个数;参数内容(数组);环境变量

printf()输出缓冲区

内容会先存到缓冲区,printf("abc");没有换行符的话只会在程序结束的时候打印abc到屏幕上。

以下情况会刷新缓冲区:缓冲区满;强制退出缓冲区:\n、fflush(stdout);程序结束后刷新缓冲区

命令


基本命令

普通用户转管理员:sudo su

管理员转普通用户:exit

切换路径:cd

在最近的两个位置之间切换:cd -

进入文件夹:cd 文件夹名

返回上一层:cd ..

家目录转根目录:cd /

根目录转家目录:cd home,cd stu

创建普通文件:touch

创建文件夹,即目录(只能在家目录下):mkdir 文件夹名

删除普通文件:rm

删除目录(文件夹):rm -r 目录名

拷贝文件:cp 文件夹1 (到) 文件夹2

拷贝文件夹:cp -r 文件夹1 (到) 文件夹2

移动文件:mv 文件名(到)目录名

重命名文件:mv 文件名1(到)文件名2

移动文件并重命名:mv 文件名1(到)目录名/文件名2

显示当前目录下所有文件:ls

显示文件所有信息:ls -l

显示当前位置:pwd

清屏:clear

修改权限

r 读 4;w 写 2;x 执行 1;- 没权限 0

文件类型+属主u+同组人g+其他人o+用户+组+创建时间+文件名

chmod u-w main.c 去掉属主的写权限

chmod 766 main. 属主,同组人,其他人权限:读写执行,读写,读写

创建文件

vim 文件名:打开/创建文件(进入后默认命令模式)

i进入插入模式

esc回到命令模式

:进入末行模式

命令模式

nyy+p复制粘贴n行;

ndd剪切、删除n行;

u撤销,ctrl+r恢复 ;

r修改;

shift+c删除光标后面的内容;

cc删除整行

末行模式

set nu显示行号;set nonu消除行号;

set hlsearch搜索结果高亮;set nohlsearch取消搜索结果高亮;

/str在当前文件中搜索str这个字符串;

:n 跳转到n行;G跳转到末尾;gg跳到第一行;

wq保存退出;q!不保存退出;q直接退出;w保存不退出

查看文件

cat 显示文件中的内容

cat 文件1 文件2>文件3:合并文件1文件2为文件3

more 分屏幕显示文件中的内容 空格翻页,回车一行一行显示

less 显示文件中的内容(可反复查看)q退出

head 显示文件的前10行(head -3 文件名:显示文件中的前3行)

tail 显示末尾10行

查找文件:find /home/stu -name “文件” (在stu中搜索“文件”)

history显示执行过的命令

grep 过滤

用法:grep “字符串” 文件名

grep -i “字符串” 文件名(-i 不管大小写,给出那一行的信息)

grep -v “字符串” 文件名(-v 不要相关的那一行)

grep -c “字符串” 文件名(-c 只显示有多少行有该“字符串”)

grep高阶使用:ls -l |grep “passwd” ps -ef |grep sleep

进程命令

进程:正在运行的程序

显示当前进程:ps

显示所有进程的更多信息:ps -ef(e表示所有进程,f表示更多信息)

结束指定进程:kill+id(ctrl+c只能结束前台进程)

停止一个正在进行的进程:ctrl+z;

继续运行已停止的进程:bg %任务号

强制结束已停止的进程:kill -9 +id

显示后台进程 jobs;

结束该名字对应的所有进程:pkill+进程名;

放到后台运行:&

将后台进程放到前台:fg %任务号

top:查看系统中各进程cpu占用情况;q退出

tar包命令

tar 将文件打包或者解包

◼ c 创建包文件

◼ f 指定目标为文件而不是设备

◼ v 显示详细过程

◼ t 显示包中的内容而不释放

◼ x 释放包中的内容

◼ z GNU版本新加的,使得tar有解压和释放的功能

使用:tar zvf 包名

gzip +包名:压缩成包

gzip -d 压缩包名:解压缩

user命令(了解)

管理员权限下,adduser+用户名:添加用户;passwd+用户名:改密码;删除用户:deluser+用户名

注:删除用户是使得不能再登录,但是该用户之前创建的文件仍然存在

调试命令(重点)

gcc -o main add.o max.o main.o -g(增加调试信息)

开始调试:gdb 文件名

l:显示代码(每次显示10行)

l+n可以跳转到第n行

l add.c:1 :跳转到add.c函数的第一行

b+行号:加断点

info break:查看断点信息

delete 序号:删除第几个断点

r:运行程序

n:单步执行(走一行)

c:一直走走到断点

s:进入函数

finish:跳出函数

bt:显示函数调用的关系(看到程序执行到哪个函数的哪一行)

p 变量:显示变量

q:退出

编译链接

头文件都存放在/usr/include里面

c语言的编译器要求c的源文件必须以.c结尾

编译链接过程结果:.c->.exe 高级语言文件->可执行文件

编译链接过程:

  • 预编译gcc -E main.c -o main.i(处理#开头的预编译指令;替换宏定义;删除注释;printf函数声明)
  • 编译gcc -S main.i -o main.s(词法分析,语法分析,语义分析;优化预处理文件)
  • 汇编gcc -c main.s -o main.o(将汇编代码转变成机器可执行的指令)
  • 链接gcc -o main main.o(链接其他文件如printf函数实现;生成可执行文件)

调用多个文件:

1)gcc -o main main.c add.c ···

2)仅执行前三个过程可查看.c文件有无语法错误

gcc -c add.c

gcc -c main.c

gcc -o main add.o main.o

makefile文件

多文件的项目工程,编译时可以使用makefile文件管理(cmake),实现自动化的编译

makefile文件的实现:

  1. 创建makefile文件(终端执行):vi makefile
  2. 编写文件内容:
all:main GDB=-g main:add.o main.o max.o//依赖关系 TAB键gcc -o main add.o max.o main.o//规则 add.o:add.c TAB键gcc -c add.c ${GDB} max.o:max.c TAB键gcc -c max.c ${GDB} main.o:main.c TAB键gcc -c main.c ${GDB} 清理:clean: TAB键rm -rf *.o main //-r表示可能要删除文件夹 f表示如果没有 *.o文件仍然要删除的话系统不要报错

makefile文件执行(终端):直接输入命令make

清理命令:make clean

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 1:38:40

python语言-连连看v4.92修改器代码QZQ-2026-9-19

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 1:38:40

Bejeweled 3 经典模式 —— 穷举暴力试错版 v4(真零延迟)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 1:38:31

如何用 iloader 免费给 iPhone 侧载 App:10 分钟新手完整教程

如何用 iloader 免费给 iPhone 侧载 App:10 分钟新手完整教程 【免费下载链接】iloader User friendly sideloader 项目地址: https://gitcode.com/GitHub_Trending/iloa/iloader iloader 是一款免费的 iOS 侧载工具:不用越狱,就能把 …

作者头像 李华