D1.必备Linux命令和C语言基础
如果出现图片无法查看可能是网络问题,我用的GitHub+图床保存的图片,用uu加速器说不定能解决,可以参考我另外一篇文章
GitHub使用教程含网络问题_github加速器_肉丸子QAQ的博客-CSDN博客
文件和目录相关命令
1. 文件系统层次结构标准FHS
/bin
: bin是二进制英文缩写
经常是放置一些命令
/boot
: 存放的都是系统启动时要用到的程序/dev
: 包含了所有Linux系统中使用的外部设备/etc
: 存放了系统管理时要用到的各种配置文件和子目录/lib
: 存放系统动态连接共享库的。/home
: 普通用户的主目录
你建立几个用户就是保存在home文件夹下,比如用户名为Linux,那么就有/home/Linux,用户名为abc,那么就有/home/abc,与Windows系统不同,Linux系统没有盘符概念取而代之的是文件夹
-
/root
: 根用户(超级用户)的主目录 -
…
2. 基础Linux命令
man
:用于查询命令的使用方法

-
pwd
:显示目前所在路径ls
:显示目录下的内容-a
:显示.
开头的文件(隐藏文件)
-l
:详细显示目录下的内容(权限,时间,用户等类似win系统的文件夹详细信息)

- R
:递归显示文件夹内容

cat
:查看文件内容-s
:多个空行合并成一个空行显示-b
:加行号显示
nl
:加行号
-
head
:默认显示前10行-n
:n为数字,n为几就显示多少行
-
tail
:默认显示后10行-n
:n为数字,n为几就显示多少行
-
cp
:复制-i
覆盖时交互提示-r
对文件夹递归
复制文件夹的时候需要加-r:
cp -r 文件夹1\ 文件夹2
此处\后面要加空格- 复制多个文件到文件夹
- cp [options] file1 file2 dest
-
mv
:移动文件-
``mv test.c …/`
移动文件夹到上一级
-
移动多个文件:
-
更改文件名``mv test.c test2.c`
将test.c重命名为test.2
-
touch
:创建或更新时间戳
-
rm
:删除文件rm
rm -i
增加交互提醒
rm -r
加
-r
删除文件夹
mkdir -p
:创建目录
3.文件的权限
思考
思考Linux文件系统与Windows文件系统有什么区别?
CSDN<(11条消息) 关于文件系统,Linux 与 Windows 的6大不同之处_开源Linux的博客-CSDN博客>
vi编译器的使用
1.熟悉vi的三种模式及模式切换命令
-
vi有以下三种模式
-
命令行模式
用户在用vi编辑文件时,最初进入的为该模式。可以进行复制、粘贴等操作。
-
插入模式
进行文件编辑,按ESC键可以回到命令行模式。
-
底行模式
光标位于屏幕的底行。可以进行文件的保存、退出、查找、替换、列出行号等
-
-
vi模式切换命令
命令 功能 A a
(Append)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符 I i
(Insert)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符 O o
(Open)进入编辑状态,并下面插入一新行,光标移到该新行的行首,以后键盘输入的字符将插入到光标位置 ESC
进入命令状态 :! Command(指令)
在vi中执行外部命令Command,按回车键可以返回vi继续工作 - A:光标移动到最后面
- I:光标移动到最前面
- O:在上一行插入新行
2.熟练使用vi的拷贝和粘贴命令
- vi拷贝与粘贴命令
命 令 | 功 能 |
---|---|
[N]x | (Expurgate)删除从光标位置开始的连续N个字符(并复制到编辑缓冲区) |
[N]dd | (Delete)删除从光标位置开始的连续N行(并复制到编辑缓冲区) |
[N]yy | (Yank)复制从光标位置开始的连续N行到编辑缓冲区 |
p或P | (Put)从编辑缓冲区复制文本到当前光标位置(即粘贴) 粘贴别人代码用set past 解决粘贴乱码不规则的问题 |
u | (Undo)取消上一次操作(即恢复功能) |
2d
2y
数字加命令可以选择剪切和复制的行数
3.熟练使用vi的保存和退出命令
- vi保存和退出命令
命令 | 功能 |
---|---|
:q | (Quit)退出没有修改的文件(若文件被修改了而没有保存,则此命令无效) |
:q! | 强制退出,且不保存修改过的部分 |
:w | (Write)保存文件,但不退出 |
:x | (Exit)保存文件并退出 |
:w File | 另存为File给出的文件名,不退出 |
:r File | (Read)读入File指定的文件内容插入到光标位置 |
4.熟练使用vi的光标命令
- vi光标命令
命 令 | 功 能 |
---|---|
h | 方向键,向左移动光标一个字符的位置,相当于键“←” |
j | 方向键,向下移动光标到下一行的位置,相当于键“↓” |
k | 方向键,向上移动光标到上一行的位置,相当于键“↑” |
l | 方向键,向右移动光标一个字符的位置,相当于键“→” |
:N | 移动光标到第N行(N待定) |
1G | 移动光标到文件的第1行 |
G | 移动光标到文件的最后1行 |
:set number | 设置显示行号 |
:set unnumber | 取消显示行号 |
5.熟练使用vi的查找命令
-
vi的查找命令
/string
:查找字符串-
n
:继续查找 -
N
:反向继续查找 -
支持正则表达式比如:
/^the
/end$
^
要查找仅出现在行首的the$
要查找仅出现在行尾的end
-
6.熟练使用vi的替换命令
-
vi替换命令
利用
:s
命令可以实现字符串的替换-
:s/str1/str2/
:当前行str1
变成str2
-
:s/str1/str2/g
: -
.,$ s/str1/str2/g
:当前行替换($
表示最后一行,.
表示当前行) -
:1,$ s/str1/str2/g
:从第一行到最末尾全部替换 -
:%s/str1/str2/g
:全文替换 -
:2,20 s/str1/str2/g
:2到20行全部替换g全部替换(默认换第1个)
-
7.熟练使用vi的复制和剪切命令
-
vi复制和剪切命令
-
y0
:将光标至行首的字符拷入剪贴板 -
y$
:将光标至行尾的字符拷入剪贴板 -
d0
:将光标至行首的字符剪切入剪贴板 -
d$
:将光标至行尾的字符剪切入剪贴板以上都是行部分复制
-
10,20 y
:10到20行区块复制 -
10,20 d
:10到20行区块剪切上述两个为区块复制
-
基础知识
1.计算机基本结构-了解
-
冯·诺依曼模型
-
计算机硬件由下图中的5部分构成
-
存储程序的思想:系统的运行过程就是按照一定的顺序不断执行存储器中的程序指令的过程
-
-
存储器的分类
- 主存储器即内存。程序中待处理的数据和处理的结果都存储在内存中。
- 外存储器是用来长期保存数据的大容量存储器。
- 寄存器是CPU内部的高速存储器,速度快,数目少。
2.什么是程序-掌握
-
广义上讲,为了实现一个特定的目标而预先设计的一组可操作的工作步骤,称之为一个程序。
-
程序就是系统可以识别的一组有序的指令。存储在磁盘上,被加载到内存中执行。
3.程序设计语言的发展-掌握
-
机器语言
直接使用机器指令(0,1序列)来设计程序,可以被计算机系统直接识别。和自然语言完全不同,难于记忆和理解,工作量大,效率低,无法移植。
00011000
00110001
00011001
-
汇编语言
把机器指令符号化,即通过一组简单的的符号来表示机器指令,更接近于自然语言,更容易理解和使用。 和机器语言一样,开发工作量大,无法移植。
MOV A, 1000
MOV 1010, A
-
高级语言
和特定的计算机系统无关,更接近于人类自然语言。一条语句对应多条机器指令,工作量小,开发效率高。 BASIC , FORTRAN, PASCAL, C, C++ ,Java,C#等。
4.程序设计步骤-熟悉

数据的表示
1.数值数据的表示-掌握
送入计算机的数字,字母,符号等信息必须转换成0、 1组合的数据形式才能被计算机识别。 能够进行算术运算得到明确数值概念的信息成为计算机数值数据,其余的信息成为非数值数据。
-
基数与各数位的权
-
基数是指该进位制中允许选用的基本数码的个数。如十进制数,基数为10, 可选用0、1、2……9共10个不同数码中的任何一个。
-
而位权的大小是以基数为底,数字所在位置的序号为指数的整数次幂。
123 = 1X100 + 2X10 + 3X1
= 1X10 2 + 2X101 + 3X100
-
-
二进制
基数为2的进位制叫二进制
二进制只有0、1两种数码,计数逢2进位
1010 = 1X23 + 0X22 + 1X21 + 0X20
= 1X8 + 0X4 + 1X2 + 0X1
= 10
-
十六进制
基数为16的进位制叫十六进制
十六进制有0、1、2…9、a、b、c、d、e、f 共16种数码,计数逢16进位
0x1010 = 1X163 + 0X162 + 1X161 + 0X160
= 1X4096 + 0X256 + 1X16 + 0X1
= 5012
2.非数值数据的表示-掌握
-
非数值数据包括文字、符号、图像、语言和逻辑信息等,也都是以0、1形式存在。
-
字符数据在机器内也被变换成二进制编码的形式。国际上普遍采用的一种编码是美国国家信息交换标准代码,简称为ASCII码
程序的编译和调试
1.gcc编译器-熟练使用
- gcc(GNU Compiler Collection)是GNU推出的多平台编译器,可将C、C++源程序编译连接成可执行文件,支持以下后缀:
.c
:c语言源代码.h
:程序所包含的头文件.i
:已经预处理过的C源代码文件.s
:汇编语言源代码文件.o
:编译后的目标文件
-
gcc –o hello hello.c
-
-o
:输出可执行文件 -
-c
:只要求编译器输出目标代码(.o文件),而不必输出可执行文件 -
-g
:用于调试 -
./hello
:查看输出结果 -
-Wall
:如果语法上有不规范的会提示gcc hell0.c
:默认生成文件名为a.out
的执行文件
-
2.程序调试-掌握
利用__FILE__,__LINE__,__FUNCTION__
实现代码跟踪调试
__文件名__,__行号__,__函数名__
:可以调换顺序__文件名__,__函数名__,__行号__
3.C语言基础-了解
- 一个程序应当包含两部分内容
- 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构
- 对操作的描述。即操作步骤,也就是算法

- 算法的基本概念
- l做任何事情都有一定的步骤。步骤要按照一定的顺序进行,缺一不可,次序也不能错。广义的说,为解决一个问题而采取的方法和步骤就称为算法。

作业
1.在VI编辑器中如果我们想将一个文件中的第5到第30行中的字符“abc”替换成“ABC”我们使用什么命令?
5,30 s/abc/ABC/g
2.1将0x55转化成二进制得到的结果为?
0101 0101
2.2在ASCII码表中字符‘3’对应的是数值?
51
3.假如我们使用VI编辑器在Hello.c文件中编写了一段C程序且已经保存,如果我们想编译该C程序生成可执行文件hello应该输入什么命令?
gcc Hello.c -o hello -Wall
4.写出至少5个自己用过的命令及功能(比如: mkdir 创建目录 )
pwd 用于显示用户在文件系统中的当前位置
ls 显示当前目录的内容 -a显示.开头文件 -l详细显示目录下的内容 -R目录内容递归显示
cd 切换目录
cat 显示文件内容 -s合并多个空行显示 -b显示行号
nl 加行号
head 默认显示前十行内容
tail 默认显示后十行内容
cp 复制文件
mv 运动文件
touch 创建文件或更新文件时间戳
rm 删除文件
mkdir 创建目录
rm -r 删除目录