Day01 必备Linux命令和C语言基础
一、环境安装
(一)环境搭建
- 软件准备:
- Vmware-workstation 10
- Ubuntu-14.04.5-desktop-i386-iso
- 安装步骤:
- 先安装Vmware-workstation;
- 再创建一台虚拟机,并根据需求进行虚拟设备的配置;
- 安装Ubuntu的Linux操作系统。
(详细操作步骤可参考CSDN的相关文章。)
- 常规配置:略。
二、文件和目录相关命令
(一)Linux的文件系统结构
- Linux文件系统就是一个树形的分层组织结构。
- 文件系统层次结构标准:
对这些目录的解释可参考菜鸟教程:点击跳转到菜鸟教程查看”文件结构标准“相关知识。
- 处理文件的常用命令:可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
- 显示目前的目录:pwd
- 列出目录及文件名:ls
- 切换目录:cd
- 创建一份新的目录:mkdir
- 创建文件:touch
- 删除一个空的目录:rmdir
- 删除文件或目录:rm
- 复制文件或目录:cp
- 移动文件与目录,或修改文件与目录的名称:mv
- 其他常用命令:
- 打印文件内容:cat(-s:合并空行;-b:显示行号)
- 打印文件内容并显示行号:nl
- 打印文件前/后十行(默认)内容:head/tail
- 写入内容到文件:echo
- 文件的权限:
文件权限的支持可参考菜鸟教程学习:点击跳转到菜鸟教程查看”文件权限“相关知识
三、vi命令的使用
(一)vi的三种模式及切换命令
- 三种模式:
- 命令行模式:进入 vi 编辑器后的默认模式,可进行复制粘贴等操作。
- 输入模式:在该模式下,用户输入的任何字符都被输入到文件内。
- 底行模式:光标位于屏幕底行,可进行对文件内容的查找、替换、列出行号等。
- 三种模式的切换:进入vi编辑器后的默认模式是命令行模式。
(二)vi的拷贝与粘贴命令
- vi拷贝与粘贴命令:命令行模式中使用。
命令 | 功能 |
---|---|
[N]x | 删除从光标位置开始的连续第N个字符,并复制到编辑缓冲区 |
[N]dd | 删除从光标位置开始的连续第N行,并复制到编辑缓冲区 |
d0 | 剪切从光标位置开始的连续第N行到缓冲区 |
d$ | 剪切光标位置到行首尾置的字符到缓冲区 |
[N]yy | 复制从光标位置开始的连续第N行到缓冲区 |
y0 | 复制光标位置到行首位置的字符到缓冲区 |
y$ | 复制光标位置到行首尾置的字符到缓冲区 |
p或P | 粘贴缓冲区内的内容 |
u | 撤回 |
(三)vi的保存和退出命令
- vi保存和退出命令:
命令 | 功能 |
---|---|
:q | 退出没有修改的文件 |
:q! | 强制退出,且不保存修改过的文件 |
:w | 保存文件,但不退出 |
:x | 保存文件并退出(等效于:wq) |
(四)vi光标命令
- 方向键:
命令 | 功能 |
---|---|
h | 方向键:左 |
j | 方向键:下 |
k | 方向键:上 |
l | 方向键:右 |
- 移动光标:
命令 | 功能 |
---|---|
:N | 移动光标到第N行 |
1G | 移动光标到文件第1行 |
G | 移动光标到文件最后一行 |
- 设置行号:
命令 | 功能 |
---|---|
:set nu | 设置显示行号 |
:set nonu | 设置取消显示行号 |
(五)vi的查找与替换命令
- 查找命令:/string
命令 | 功能 |
---|---|
n | 继续查找 |
N | 反向继续查找 |
- 替换命令:😒/str1/str2
命令 | 功能 |
---|---|
😒/str1/str2/g | 当前行替换(/g:代表全部替换) |
:.,$ s/str1/str2/g | 当前行到底行替换 |
:1,$ s/str1/str2/g | 第一行到底行替换,即全文替换 |
:%s/str1/str2/g | 全文替换 |
四、基础知识
(一)计算机基本结构
- 冯·诺依曼模型
- 计算机硬件由运算器、控制器、存储器、输入设备和输出设备组成。
- 存储程序的思想:系统的运行过程是按照一定的顺序不断执行存储器中的程序指令的过程。
- 存储器分类:
- 主存储器即内存。程序中待处理的数据和处理的结果都存储在内存中。
- 外存储器是用来长期保存数据的大容量存储器。
- 寄存器是CPU(运算器和控制器)内部的高速存储器,速度快,数目少。
(二)什么是程序
- 程序:广义来说程序就是工作步骤;对于计算机来说就是系统可以识别的一组有序的指令,存储在磁盘上,被加载到内存中执行。
(三)程序设计语言的发展
- 机器语言:使用机器指令0、1来设计程序。
- 汇编语言:把机器指令符号化。
- 高级语言:和特定计算机系统无关,更接近于自然语言。如:C、C++、Java、Python等。
(四)程序设计步骤
- 编辑(vi)
- 编译、链接(gcc、ld)
- 执行、调试
五、数据的表示
(一)数值数据的表示
- 进制:基数与权,其中十进制的数码为09,二进制的数码为01,十六及进制的数码为0~f。
- 进制的转换。
- 原码、反码与补码:正数的原码、反码与补码相同;负数的原码最高位为符号位,1代表负数,负数的补码为反码加1。
(二)非数值数据的表示
- 非数值数据:包括文字、符号、图像、语言和逻辑信息等,都是以0、1形式存在。
- ASII码:美国国家信息交换标准代码。
六、程序的编译和调试
(一)gcc编译器
- gcc编译器:是GNU推出的多平台编译器,可将C、C++源程序编译连接成可执行文件。
- 语法:gcc -o hello hello.c
- -o:输出可执行文件
- -c:只要求编译器输出目标代码(.o文件),而不必输出可执行文件
- -g:可用于调试
- ./hello 查看输出结果
(二)程序调试
- 利用“FILE,FUNCTION,LINE”实现代码跟踪调试。