一、linux基本知识
一切皆文件 文件系统结构是树形结构(分支)
根目录:/
家目录:~
路径:文件位置所在
1、终端打开的方式
- 直接点击终端
- 文件系统空白处右击—》弹窗—》打开终端
- 快捷键ctrl+alt+t打开家目录下的终端
- 快捷键ctrl+shift+n打开当前目录下的终端(前提是已经打开了一个终端,即复制当前的终端)
两个一样的
2、终端的关闭
点叉号❌
ctrl+d
exit命令
3、命令行
用户名@主机名:当前路径$ 命令行
查看用户名:howami
查看主机名:hostname
查看当前路径:pwd(绝对路径)
绝对路径: 从根目录开始的路径
相对路径:从当前目录开始的路径
进行用户切换命名: su 用户名
切换到管理员: su root
退出: 快捷键 Ctrl+d 或 命令行输入 exit
临时使用管理员权限执行某个命令:su do (无需切换至管理员模式)
4、常用快捷键
放大终端:ctrl shift +
缩小终端:ctrl -
历史命令:上下键或者history命令
清屏:ctrl l 或者clear命令
自动补齐:tab键
5、查看当前目录的内容 ls
. 表示当前目录
查看当前目录下文件:ls
查看指定目录下文件:ls 路径/目录名
-a: 查看包含隐藏文件的所有文件的选项
-l: 查看目录下文件的详细信息
看下面这个例图:
linux文件类型有7种:b c d - l s p
权限每三个一组:第一组代表个人权限,第二组代表组员权限,第三组代表除了小组成员以外其他人权限。权限用字符代表:
r: 可读
w: 可写
x: 可执行
6、修改文件权限:chmod
方法:chomd -R(可有可无) 权限(数字) 文件路径
—R: 将大目录底下所有的文件以及目录的权限进行修改
r |
读(4) |
w |
写(2) |
x |
执行(1) |
- |
0 |
7、切换工作目录命令 : cd
切换到指定目录: |
cd 路径 |
切换到家目录: |
cd |
cd~ | |
cd /home/hq | |
切换到根目录: |
cd / |
切换到当前目录 |
cd . |
切换到上一级目录 |
cd .. |
切换到上上级目录 |
cd ../.. |
切换到上次的目录 |
cd - |
8、新建普通文件命令 touch
在当前文件新建:touch 文件名.后缀
在指定路径下新建文件:touch 路径/文件名.后缀
若新建的文件与原文件重名,那么文件的时间戳(修改时间)会被更新
9、新建目录 mkdir
在当前目录新建一个目录:mkdir 目录名
在指定位置新建一个目录:mkdir 路径/目录名、
-p 一次性创建多级目录
10、删除命令:rm
(慎重使用)
当前位置删除:rm 文件名.后缀名
指定位置删除:rm 路径 / 文件名.后缀名
删除目录: rm -r 目录名
删除当前位置下的所有文件: rm *
11、复制命令:cp
复制当前目录下文件 :cp 文件名 目标路径(即文件去向)
复制指定目录下文件 :cp 路径/文件名 目标路径
复制目录:cp -r 目录名 目标去向
另存为: cp 文件名 路径/新文件名
12、移动命令:mv
mv 文件名 目标地址 (移动文件/目录 都是一样的 无需额外加 -r)
可以移动多个文件
在当前位置移动:
在指定位置移动:
移动至其他地方并进行重命名:
13、打印文件内容到终端:cat
二、常用编辑工具——vi编译器
1、进入vi编译器
命令行:vi 文件名
一开始进去时默认是命令模式(无法编辑)
2、vi编译器三种模式
1、命令模式(无法编辑):最初进入的模式,可以进行复制粘贴等操作
2、输入模式(insert:可输入文本):进行文件编辑,按Esc可以回到命令行模式。
3、底行模式:光标位于屏幕的底行,可以进行文件的保存、退出、查找、替换、列出行号等
3、命令模式的操作
复制:yy nyy(n:行数)
删除(剪切): dd ndd
粘贴:p
撤销:u
反撤:ctrl r
光标移动首行: gg
光标移动末行: G
光标移动行首:home键或者数字0或者shift 6
光标移动行尾:end键或者$ 或者shift 4
搜索:/或者?(搜索下一个用n)
调整代码格式:gg=G
4、输入模式的操作
先按Esc键(进入命令模式)然后按以下任意键:A(a),I(i), O(o)
按A(a):新增 (append)
-- a从光标所在位置后面开始新增资料,光标后的资料随新增资料向后移动。
-- A从光标所在列最后面的地方开始新增资料
按I(i): 插入 (insert)
-- i从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。
-- I从光标列的第一个非空白字符前面开始插入资料 。
按O(o): 打开 (open)
-- o在光标所在列下新增一列并进入输入模式。
-- O在光标所在列上方新增一列并进入输入模式。
5、底行模式的操作
进入底行模式:先按esc,然后按 空格 或者 :(冒号)
可在底行输入相关命令进行操作
相关指令:
保存:w
退出:q
保存并退出:wq
强制:!
指定第几行到第几行复制:5,10y
指定第几行到第几行删除: 5,10d
竖着分屏:vsp
横着分屏:split
取消分屏:on
查找:/str
取消高亮:noh
替换:s/str1/str2 光标所在行第一个str1替换成str2
s/str1/str2/g 光标所在行所有str1替换成str2
%s/str1/str2/g每一行中所有str1来替换成str2
n,$s/str1/str2/g替换第n行到最后一行中所有str1为str2
n,ms/str1/str2/g替换第n行到第m行中所有str1为str2
设置行号:set nu
取消:set nonu
三、C语言编译流程
1、创建一个.c文件
2、使用vi编辑器打开.c文件
3、进入vi编辑器的输入模式,进行代码编写
4、保存,退出
5、用gcc编译.c 文件,生产a.out可执行文件
6、执行程序:./a.out
7、生成一个自命名的可执行文件(可有可无)
gcc hello.c -o hello(自命名)
-o选项是生成指定名字的可执行文件。
四、GCC 编译器
gcc(GNU CCompiler)是GNU推出的功能强大,性能优越的多平台编译器,gcc编译器能将C,C++语言源程序编译连接成可执行文件
过程:预处理—》编译—》汇编—》链接
1、预处理
语句: gcc -E hello.c -o hello.i
得到预处理之后的文件,其中-E表示只进行预处理。
源文件在预处理阶段会被编译器生成.i文件,不会进行语法检查。
进行的操作为:删除注释,展开头文件,替换宏定义等。
2、编译
语句: gcc -S hello.i -o hello.s
得到.s结尾的汇编文件,其中-S表示生成汇编文件。
编译就是把预处理后的文件进行语法和词法检查,生成汇编文件。
3、汇编
语句: gcc -c hello.s -o hello.o
得到.o结尾的机器指令的二进制文件(不可执行),即目标文件。其中-c表示只编译不链接。
4、链接
语句: gcc hello.o -o hello (生成一个名为hello的可执行文件)
将各种代码和数据片段收集合并组成一个可执行文件的过程,这个文件可以被加载(复制)到内存并执行。
补充: -o 文件名,可以生成自己定义名字的可执行文件选项,如果不加这个选项默认生成a.out可执行文件。