7.7 计算机常识 、 Linux操作系统和文件系统 、 Linux常见命令 、 vi编辑器、gcc编译器、 C语言概述

时间:2021-10-15 12:19:31
计算机常识:
计算机由硬件和软件组成
CPU完成所有数字处理工作
内存存放所有要处理的数据。
关机断电后内存所有的数据全部消失
硬盘用来长期保存数据
关机断电后硬盘里的数据不会消失
内核是一个操作系统的核心,是基于硬件的第一层软件扩充,提供操作系统的最基本功能,管理系统的进程、内存、设备驱动、文件和网络系统。
Shell俗称壳,是指“提供使用者使用界面”的软件(命令解析器)。分为图形界面Shell(windows)和命令行式Shell(linux)。
软件是用来管理硬件的   软件分为系统软件和应用软件
系统软件的主要任务是管理硬件
应用软件是为了满足用户的各种需求
操作系统:windows,Linux和Unix
Linux操作系统的典型使用方式是通过终端软件
终端里只能使用键盘,不能使用鼠标
在终端里通过输入不同命令控制计算机
clear命令清除终端窗口的文字信息
操作系统(windows,linux)中用来管理文件的部分叫文件系统,所有文件系统都是采用分组的方式管理文件的,一个分组中可以包含任意数量的文件,一个分组中的文件还可以再次分组。
文件系统中采用文件夹(目录)代表文件分组
如果目录(文件)A里直接包含目录B,则它们之间存在父子关系,目录A叫做父目录,目录B叫做子目录。
Linux的文件系统中有一个大分组包含了所有文件,用一个叫根目录的目录表示这个分组
根目录用/表示
例:
1                    /
2          abc                 def
3       vpn    asd           vbn      xyz


linux文件类型
普通文件:1、纯文本文件2、二进制文件、数据格式的文件、
目录文件(directory):即目录,也叫文件夹
连接文件(Link):;类似windows下的快捷方式
设备与设备文件(device):与系统外设即存储等有关的文件,通常在/dev目录
套接字(sockets):这类文件通常用在网络数据连接
linux目录结构
/:根目录,所有的目录、文件、设备都是在/下,/就是linux文件系统的组织者,*
/bin:在一般系统中,都可以在这个目录下找到linux常用的命令。系统所需要的命令位于此目录。
/sbin:这个目录用来存放系统管理员的系统管理程序。大多是涉及系统管理的命令的存放,是超级权限用户。root的可执行命令存放地,普通用户无权限执行这个目录下的命令。
/boot:linux的内核及引导系统程序所需要的文件目录。
/dev:在这个目录中包含了所有linux系统中使用的外部设备,但并不是驱动程序。
/etc:在这个目录下存放了系统管理时要用到的各种配置文件和子目录。要用到的网络配置文件,文件系统配置文件,设备配置信息,设置用户信息等都在这个目录下。
/home:如果建立一个用户,用户名是“xx”,那么在/home目录下就有一个对应的/home/xx路径,用来存放用户的主目录。


可以使用路径表示文件夹或者文件所在的位置
路径表示从某个文件夹开始到另外一个文件或文件夹为止所经过的路线
把路线上所有文件夹的名称按顺序书写就得到可以表示这个路线的路径
根据路径起点的不同又可以分成绝对路径和相对路径
绝对路径固定把根目录作为起点  例:以根目录作为起点,asd作为终点  /abc/asd    
(开头/是根目录,相邻两步用/隔开)
绝对路径一定以/作为开头
相对路径可以把任何一个目录作为起点  例:以asd为起点,vbn作为终点  ../../def/vbn
相对路径中使用..表示从下向上走一步,使用.表示原地踏步
相对路径中不可以包含起点位置

基本命令行
终端窗口里可以把某个目录设置成当前目录,这个目录作为所有相对路径的起点
当前目录的位置可以变化
pwd命令用来查看当前目录的位置
cd命令可以用来修改当前目录的位置
使用方法: cd 目录路径    此时,修改后的路径便成为当前目录


ps:命令后跟目标路径,若在当前目录里,则是目录名或文件名 (下同)


ls命令用来查看某个目录里的内容
使用方法: ls 目录路径    显示目录路径的内容
在命令行输入ls,将当前工作目录中的文件名全部列出。
在命令行输入ls /home/tang,将指定的目录/home/tang中的文件名全部列出。
如果省略目录路径,则可以查看当前目录里的内容(有些是隐藏文件,看不到)
使用-a选项可以查看目录里的所有内容
使用-l选项可以查看每个文件的详细信息(修改时间、大小)
这两个选项可以合并成-al,可以看到所有内容的详细信息


touch命令可以用来创建新的文件
使用方法:touch 文件路径(文件名)   (touch abc.txt)   
在命令行输入touch abc.txt,如果当前工作目录没有文件abc.txt,则创建此文件,如果当前工作目录已经有此文件,则修改该文件的最后修改时间。


mkdir命令用来创建新的目录   
使用方法: mkdir 目标目录名   (mkdir biaoc)  在当前目录下创建一个名为biaoc的子目录
使用要求:此目录必须不存在,它的父目录必须已经存在(由地方放)
使用-p选项可以把路径中所有还不存在的目录都创建出来
使用方法:  mkdir -p abc/xyz  如果当前目录没有子目录abc,将创建它,并在其中创建子目录xyz;如果当前目录有子目录abc,则在子目录abc中创建子目录xyz。 
            ls abc  则可以看到abc目录里的xyz子目录


rm命令可以用来删除一个文件
使用方法:rm 文件名    (rm abc.txt)
rm命令使用-r选项可以删除目录
使用方法: rm -r 目录路径(目录名)   
           在命令行输入:rm a.txt,则从当前工作目录删除文件a.txt。
           在命令行输入:rm –r abc,从当前工作目录删除子目录abc。
           在命令行输入:rm –r abc/xyz,从当前工作目录的子目录abc中删除子目录xyz。
cat命令用来查看一个文件的内容    
使用方法:cat 文件路径(文件名)


窍门:1:目录名太长,输入路径时只输入前几个字母按Tab键让终端窗口把剩余名字补齐
      2:在终端窗口里可以使用上下方向键,找到以前执行过的任何一个命令,修改后作为新命令使用


vi是Linux系统中用来记录文字信息的工具
vi只能在终端窗口里使用(不能使用鼠标)
vi的功能分成三组,任何时候只能使用其中一组
vi由三种工作模式,每种工作模式对应一组功能,任何时候只能处于一组工作模式下
三种工作模式分别为:正常模式、命令模式、插入模式
正常模式下执行一些简单命令,命令模式下执行复杂命令,插入模式下修改文字内容
当启动vi时处于正常模式,不同的工作模式可以互相转换
正常模式下输入i转换为插入模式
正常模式下输入:转换为命令模式
任何时候输入esc转换为正常模式
使用如下命令启动vi
vi 文件路径    例: vi abc.txt   若本身存在则打开,没有则创建打开 
采用两种方法退出vi 
1.在命令模式下输入 q!   (所有没有保存的修改都会丢失)
2.在命令模式下输入wq或x (先保存所有修改然后退出)
  在命令模式下输入w命令保存所有修改,不退出vi
拷贝:在正常模式下输入nyy命令(n代表一个整数,如果是1可以省略)。这个命令把光标所在行开始的连续n行拷贝到剪贴板上
            在正常模式下输入np命令(n代表一个整数,如果是1可以省略)。这个命令把剪贴板上的内容在当前光标所在行的下面连续粘贴n次   
剪切:在正常模式下输入ndd命令(n代表一个整数,如果是1可以省略)。这个命令把光标所在行开始的连续n行剪切到剪贴板上
行号:在命令模式下输入set nu命令,可以让vi显示每行的行号。
 
在windows下载软件gVim,是windows里的vi,模拟linux系统里的vi

c语言程序的绝大部分应该记录在以.c作为扩展名的文件里,这种文件叫做c语言源文件
c语言程序中还包括以.h作为扩展名的文件,这种文件叫做头文件
vi01demo.c 进入程序编写
c语言中每个计算步骤最后都已;结尾,每个使用;结尾的计算步骤叫做一条语句
c语言程序中的大括号用来表示一个函数(一组语句),函数内部的语句按照从上到下的顺序执行每个函数都必须有名字,不同函数的名字不能相同
c语言程序中必须包含叫做main的函数,称为主函数。
程序一定从主函数的第一条语句开始执行,当主函数里最后一条语句结束时,整个程序结束
函数结束时可以留下一个数字,称为函数的返回值
主函数应该有一个返回值,如果返回值为0,表示程序员希望计算机认为程序正常结束,如果为别的数字,则表示程序员希望计算机认为程序出错。
int、return等c语言中预先保留的单词,称为关键字,每个关键字都有特定用途,不能随意使用。所有关键字一定是由小写英文字母构成
return关键字用途:主要用途是结束函数的执行,辅助用途是制定函数返回值的数值 


计算机根据数字在某个方面的区别把数字分成几组,每组叫做一个数据类型
整数类型是一种数据类型,简称整形 int,这个数据类型包含几乎所有不带小数点的数字
程序中的所有数字必须有数据类型,所有不带小数点的数字都被默认为整数类型
c语言中规定函数如果由返回值,则必须把返回值的类型名称写在函数名称前 
int main() {
2*3;
return 0;
}
编码规范!层级分明!   同一级别缩进距离一致。
c语言程序中通常包含预处理指令,以#号开头,并不以;作为结尾
标准C阶段遇到的预处理指令会把源文件里的内容换成其它内容
#include预处理指令可以把一个头文件的内容包含到当前文件中,这个指令需要使用相对路径表示被包含的头文件所在的位置。
把相对路径包含在<>里表示依次采用系统中预先准备好的一组目录作为起点;
把相对路径包含在“”里表示首先把当前文件所在的目录作为起点使用,然后再把系统中预先准备好的目录作为起点使用。
例:  vi 01demo.h    //编写头文件
 int main();


    vi 01demo.c   //编写源文件
#include "01demo.h"
int main(){
    ....;
    return 0;
}
c语言程序中可以加入文字性的说明信息,但必须加入到注释区域,计算机直接忽略注释区域里的内容
单行注释以//为开头,直到行尾
多行注释以/*作开头,以*/作结尾
c语言程序中大量使用名字区分不同内容(变量、函数等),这些名字叫做标识符。最好采用英文单词
标识符的编写规则:
1.第一个字符应该是英文字母或下划线
2.后面每个字符可以是英文字符、下划线或阿拉伯数字
3.字母大小写标识符不一样(大小写敏感)
4.关键字不能作为标识符
5.标识符长度没有限制,但计算机只截取前一部分使用


c语言程序编码规范
1.一行里最多包含一条语句
2.同级别的语句应该上下对齐
3.在合适的地方使用空格和空行
4.编写标识符时采用驼峰方式或下划线方式 例 XiAn、xi_an


编译器可以把源文件翻译成计算机能运行的格式
gcc是Linux系统里c语言程序的编译器
MinGW是Windows下的gcc
gcc 01demo.c  将编写的程序翻译,当前目录下会多出以.out后缀名的文件,计算机可以对其直接运行


Linux系统中c语言程序开发过程:
第一步:使用vi编写源文件         vi abc.c
第二步:使用gcc编译器将所有源文件翻译成计算机可执行文件(编译) (输入指令gcc abc.c,生成a.out文件)
第三步:使用命令./a.out执行上一步生成的可执行文件    (输入指令./a.out,执行出程序结果)   ps:需要写上路径,.代表本级目录


gcc编译器工作过程
1.处理所有预处理指令
2.把第1步处理结果翻译成计算机可识别的格式 (编译)
3.把第2步的处理结果合并成执行文件(链接)


gcc选项介绍
-E   只处理所有预处理指令(只完成第1步)
-c   只完成预处理和编译工作,处理结果是以.o作为扩展名的目标文件 (输入指令gcc -c 01demo.c 在当前目录下生成01demo.o)
-o   用来指定得到的执行文件名称  (若不用,则生成a.out)   (输入指令gcc 01demo.c -o 01demo 则生成01demo,内容与a.out一样)
-std=c89/-std=c99  这个选项决定采用什么样的规范进行编译


c语言中提供了一组工具,它们叫做标准函数,每个标准函数用来解决一个常见问题
printf 标准函数可以把程序中的数字打印在终端窗口里
为了使用这个标准函数 需要包含stdio.h的头文件
可以在双引号里使用占位符把数字转移到双引号后面,再打印之前,计算机用双引号后面的数字一次替换占位符,替换完后才进行打印
不同类型的数字和不同的占位符配合使用
整数类型数字和%d配合使用,数字的个数应该和占位符个数一样