Linux-C P1 Linux基础与Vi操作

文章目录

  • Linux-C P1 Linux基础与Vi操作
    • Linux基础
      • Unix与Linux
        • Unix是什么?
        • Unix是干什么的?
        • 那么Linux呢?
        • Linux的兄弟姐妹
      • Linux基本操作
        • 在好好的玩耍之前
        • 命令终端
        • 基本操作
          • 目录处理(pwd/cd/ls)
          • 查看文件内容(cat/head/tail)
          • 文件处理(touch/rm/mv/cp)
          • 创建文件夹(mkdir)
          • 帮助文档(man)
    • vi操作
      • 模式切换
        • 进入和退出Vi编辑模式
        • 命令行模式(或底行模式)与输入模式切换
        • 命令行模式与底行模式切换
      • 模式操作
        • 命令行模式
        • 底行模式
        • 输入模式
    • 更多内容

Linux-C P1 Linux基础与Vi操作

Linux基础

Unix与Linux

什么是Linux,怎么又多出了一个Unix

Unix是什么?

Linux-C P1 Linux基础与Vi操作_第1张图片
在知道它是什么之前,我们先来了解一下它是怎么来的
1969年,在kenthompson在AT&T贝尔实验室出生,说的是汇编语言
1973年,KenThompson和DennisRitchie教会了它C语言,让它走了出去正式面向大众。

Unix是干什么的?

首先它是一个操作系统,除了可以作为网络操作系统,还可以作为单机操作系统使用。Unix作为一种开发平台和台式操作系统获得了广泛使用,目前主要用于工程应用和科学计算等领域

现在UNIX系统的用户日益增多,应用范围也日益扩大。无论在各种类型的微型机、小型机,还是在中、大型计算机,以及在计算机工作站甚至个人计算机上,很多都已配有UNIX系统。不仅新推出的机型配有UNIX系统,而且一些历史较久的生产厂商,也竞相将原有机型配上UNIX系统以便打开销路、争取市场。

那么Linux呢?

Linux-C P1 Linux基础与Vi操作_第2张图片
当然,Linux也是一种操作系统,但是比Unix出生的要晚。
1991年,芬兰赫尔辛基大学的学生Linux Torvals为了能在家里的PC机上使用与学校一样的操作系统,开始编写了类UNIX.

是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统,反正很好用就对了。。。

Linux的兄弟姐妹

Linux-C P1 Linux基础与Vi操作_第3张图片

Red Hat(红帽)公司(NYSE:RHT)是一家开源解决方案供应商,也是标准普尔500指数成员,是我们比较熟知的一个Linux发行版本

Linux-C P1 Linux基础与Vi操作_第4张图片

CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成,跟Red Hat好像还挺亲的

Linux-C P1 Linux基础与Vi操作_第5张图片

接下来就是我们之后一直会用的Ubuntu,Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“我的存在是因为大家的存在",是非洲传统的一种价值观。
从前人们认为Linux难以安装、难以使用,在Ubuntu出现后这些都成为了历史。
哈哈,所以我们就开始使用它吧!

Linux基本操作

在好好的玩耍之前

在快乐的玩耍之前我们首先需要一个Ubuntu系统,这个吗?去官网下或者自行百度。
然后呢?有了它之后,我们的PC一般都是windows的吧!所以我们需要一个虚拟机来运行我们的Ubuntu
Linux-C P1 Linux基础与Vi操作_第6张图片

好的,我们就下了VMware(软件安装管家可以了解一下),然后一顿操作之后我们就可以在虚拟机上运行我们的Ubunto了,好的我们可以开始玩耍了。
Linux-C P1 Linux基础与Vi操作_第7张图片

VMware:

命令终端

然后我们就进入到Ubunto的操作界面了!!!

好兴奋啊!我们要开始编程了吗?
还没,我们要先进入命令终端,知道怎么使用它之后。。。
因为是图像界面吗,所以可以直接点击打开
Linux-C P1 Linux基础与Vi操作_第8张图片
Linux-C P1 Linux基础与Vi操作_第9张图片
你是不是觉得这样一点都不高级,一点都不快捷啊
所以我们来点有趣的
Ctrl + Alt + T
我们就能打开一个终端了(Terminal是终端的英文容易记快捷键哦TTTTT)
Linux-C P1 Linux基础与Vi操作_第10张图片
这样我们就又打开了一个终端
接着我们可以再用用
Ctrl + Shift +T
我们就在同一终端打开了一个标签
Linux-C P1 Linux基础与Vi操作_第11张图片
好的,知道如何花式打开终端之后,我们就要开始看看如何使用终端

基本操作

Linux-C P1 Linux基础与Vi操作_第12张图片

目录处理(pwd/cd/ls)
内容
命令名称 pwd
命令格式 pwd [OPTION] …
命令功能 用于显示当前的工作目录
OPTION -L 从环境中使用pwd,即使它包含符号链接
-P 避免所有符号链接
–help 显示该帮助并退出
–version 显示版本信息并退出

在使用中pwd的常见用法就是用来查看当前所在目录
Linux-C P1 Linux基础与Vi操作_第13张图片


内容
命令名称 cd
命令格式 cd [dirname]
命令功能 用于切换当前目录到目标目录
dirname 要切换的目标目录

cd的基本用法实例
回到家目录

cd

回到上一级目录

cd ..

回到上一目录

cd -

到指定目录

cd ./pyystd/level2

Linux-C P1 Linux基础与Vi操作_第14张图片


内容
命令名称 ls
命令格式 ls [OPTION] [FILE]
命令功能 显示指定工作目录下的内容
OPTION -a 显示所有文件及目录
-l 除文件名称外,将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-R 若目录下有文件,则以下之文件亦皆依序列出
FILE 指定目录(为空是当前目录)

ls的基本用法实例
显示当前目录内容

ls

显示以d开头的目录及目录下的所有文件

ls d*

显示所有文件目录

ls -a

若目录下有文件,则依次列出

ls -l

列出目录下文件及其详细信息

ls -r

以相反次序显示目录

ls -t

建立时间先后顺序显示

ls -R

列出指定地址里的目录

ls ./day2

Linux-C P1 Linux基础与Vi操作_第15张图片

Linux-C P1 Linux基础与Vi操作_第16张图片

查看文件内容(cat/head/tail)
内容
命令名称 cat
命令格式 cat [OPTION] [FILE]
命令功能
OPTION -n 由 1 开始对所有输出的行数编号
-b 和 -n 相似,只不过对于空白行不编号
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
FILE 指定目录(为空是当前目录)

cat基本用法实例
显示文件内容

cat hello.c

对文件进行行编号显示

cat -n hello.c

对文件进行行编号显示,空行不标号

cat -b hello.c

当遇到有连续两行以上的空白行,就代换为一行的空白行

cat -b hello.c

Linux-C P1 Linux基础与Vi操作_第17张图片


内容
命令名称 head
命令格式 head [OPTION] [FILE]
命令功能 连接文件并打印从头开始的指定内容到标准输出设备上
OPTION -c 打印每个文件的前c个字节
-n 打印每个文件的前n行内容
-q 不显示处理信息
-v 显示详细的处理信息
FILE 指定目录(为空是当前目录)

head基本用法实例
默认显示文件前10行

head s2.c

显示文件前100字节

head -c 100 s2.c

显示文件前20行

head -n 20 s2.c

显示详细的处理信息再默认显示前10行

head -v s2.c

Linux-C P1 Linux基础与Vi操作_第18张图片


内容
命令名称 tail
命令格式 tail [OPTION] [FILE]
命令功能 连接文件并打印从后开始的指定内容到标准输出设备上
OPTION -c 打印每个文件的后c个字节
-n 打印每个文件的后n行内容
-q 不显示处理信息
-v 显示详细的处理信息
FILE 指定目录(为空是当前目录)

tail的基本用法实例

默认显示文件后10行内容

tail s2.c

显示文件后200字符

tail -c 200 s2.c

显示文件后20行

tail -n 20 s2.c

显示文件的详细信息

tail -v s2.c

Linux-C P1 Linux基础与Vi操作_第19张图片

文件处理(touch/rm/mv/cp)
内容
命令名称 touch
命令格式 touch [OPTION] [FILE]
命令功能 创建一个文件或修改文件的属性
OPTION -a 改变档案的读取时间记录
-m 改变档案的修改时间记录
-c 假如目的档案不存在,不会建立新的档案
-f 不使用,是为了与其他 unix 系统的相容性而保留
-r 使用参考档的时间记录,与 --file 的效果一样
-d 设定时间与日期,可以使用各种不同的格式
-t 设定档案的时间记录
FILE 指定目录(为空是当前目录)

touch的基本用法实例
创建文件

touch a.c

Linux-C P1 Linux基础与Vi操作_第20张图片


内容
命令名称 rm
命令格式 rm [OPTION] [FILE]
命令功能 删除一个文件或目录
OPTION -i 删除前逐一询问确认
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认
-r 将目录及以下之档案亦逐一删除(用于删除目录)
FILE 指定目录(为空是当前目录)

rm的基本用法实例

删除文件

rm a.c

删除文件时查询

rm -i a.c

删除文件夹

rm -rf afile

Linux-C P1 Linux基础与Vi操作_第21张图片


内容
命令名称 mv
命令格式 mv [OPTION] 文件名 文件名 将源文件名改为目标文件名
mv [OPTION] 文件名 目录名 将文件移动到目标目录
mv [OPTION] 目录名 目录名 目标目录已存在,将源目录移动到目标目录
命令功能 用来为文件或目录改名或将文件或目录移入其他位置
OPTION -i 若指定目录已有同名文件,则先询问是否覆盖旧文件
-f 在mv操作要覆盖某已有的目标文件时不给任何指示

mv的基本用法实例
将文件的文件名aaa改为bbb

mv aaa bbb

将文件aaa移到unit4目录下

mv aaa ./unit4

将目录aaa移到unit4目录下

mv ./aaa ./unit4

Linux-C P1 Linux基础与Vi操作_第22张图片


内容
命令名称 cp
命令格式 cp [OPTION] sourse dest
命令功能 用于复制文件或目录
OPTION -a 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容
-d 复制时保留链接
-f 覆盖已经存在的目标文件而不给出提示
-i 与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖
-p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-r 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
-l 不复制文件,只是生成链接文件
sourse 源文件地址
dest 目标文件地址

cp的基本用法实例
复制文件aaa到unit1目录

cp aaa ./unit1

Linux-C P1 Linux基础与Vi操作_第23张图片

复制目录aaa到unit1目录

cp -r aaa ./unit1

Linux-C P1 Linux基础与Vi操作_第24张图片

创建文件夹(mkdir)
内容
命令名称 mkdir
命令格式 mkdir [OPTION] dirname
命令功能 建立名为dirname的子目录
OPTION -m 设置建立模式
-p 确保目录名称存在,不存在的就建一个
-v 为每个创建的文件夹打印一条消息
dirname 文件夹的名称

mkdir的基本用法实例
创建文件夹

mkdir aaa

Linux-C P1 Linux基础与Vi操作_第25张图片

帮助文档(man)
内容
命令名称 man
命令格式 man [章节] [内容]
命令功能 在线参考手册
章节
1 标准用户命令
2 系统调用
3 库函数
4 特殊文件(设备文件)的访问入口
5 文件格式(配置文件的语法),指定程序的运行特性
6 游戏
7 杂项
8 管理命令
9 跟kernel有关的文件
内容 需要查询帮助的内容
手册格式 NAME 命令名称及功能简要说明
SYNOPSIS 用法说明,包括可用的选项
DESRIPTION 命令功能的详细说明,可能包括每一个选项的意义
OPTIONS 说明每一项的意义
FILES 此命令相关的配置文件
BUGS
EXAMPLES 使用示例
SEE ALSO 另外参照

man 的基本用法实例
查询ls参考手册

man ls

Linux-C P1 Linux基础与Vi操作_第26张图片

对了,记得按q键退出帮助查询界面哦


vim由于要讲的东西很多,我们就单独放在后面详细讲讲
不过这里我可以先查查它的参数手册

man vi

Linux-C P1 Linux基础与Vi操作_第27张图片

vi操作

vi是什么呢?
在上一节中我们已经通过man命令查看一下它的参考手册,但是还是一头雾水是不是。
现在我们就来正式介绍它
我们的vi编辑器
vi编辑器是所有Unix及Linux系统标准的编辑器,它的强大不逊色于任何最新的文本编辑器
下面是它的键盘图欣赏一下(瑟瑟发抖)
Linux-C P1 Linux基础与Vi操作_第28张图片
当然这里不会讲解所有的命令,会讲解一些常用和好用的命令,其他的大家可以自己去扩展,有机会以后补充哦(主要是有些作者其实也不太会用-


好的,好的,我们进入正题,下面的思维导图给大家理清了整个结构和我要讲解的内容,大家可以先大致了解一下vi的一些基本操作
Linux-C P1 Linux基础与Vi操作_第29张图片
可以看出在vi编辑器下,我们大致可以分为三种模式,也就是命令行模式(Command mode)底行模式(Last line mode)输入模式(Insert mode)


命令行模式(Command mode):在命令行模式下用户可以输入命令来控制屏幕光标的移动,删除字符、单词或行,移动复制某区段,也可以进入到底行模式或者输入模式
Linux-C P1 Linux基础与Vi操作_第30张图片


底行模式(Last line mode):用户可以将文件保存或退出vi,也可以设置编辑环境,如查找字符串、显示行号等。
Linux-C P1 Linux基础与Vi操作_第31张图片


输入模式(Insert mode):用户只有在这个模式下才可以进行字符串输入
Linux-C P1 Linux基础与Vi操作_第32张图片

刚刚了解了三种模式,但是我们怎么才能进入vi编辑器呢?我们又该如何在不同的模式之间进行切换呢?不同模式又该如何使用呢?
可怕的三连问可难不倒我,现在就来一一进行解答

模式切换

Linux-C P1 Linux基础与Vi操作_第33张图片

首先让我们看看该如何进入和退出vi编辑器

进入和退出Vi编辑模式

进入vi编辑器
让我们先来到熟悉的命令终端
Linux-C P1 Linux基础与Vi操作_第34张图片
进入vi编辑器

vi test1.c

Linux-C P1 Linux基础与Vi操作_第35张图片
这样 我们就进入到vi编辑器了,同时当我们进入到vi编辑器之后,我们所处的默认模式就是命令行模式
除了这么直接的进入方法之外,还可以稍微扩展一下
在命令终端输入

vi test1.c +3

Linux-C P1 Linux基础与Vi操作_第36张图片
这样在我们进入vi编辑器的同时,光标会定位到指定的位置,这种用法一般在进行改错的时候比较常用,某行出了问题可以直接跳转过去(是不是很方便啊!!!)
Linux-C P1 Linux基础与Vi操作_第37张图片

退出vi编辑器
既然已经进来了,现在就来看看怎么出去
出去方法也有好几种,看你想怎么出去咯


普通的编辑结束,退出vi
在这里插入图片描述
这样就退出到命令终端了
在这里插入图片描述


不保存编辑过的文档,退出vi
在这里插入图片描述
在这里插入图片描述


保存文档
在这里插入图片描述
在这里插入图片描述


保存文档并退出
关于保存文档有两种方法,效果都是一样的,大家可以根据爱好自行选择使用
在这里插入图片描述
在这里插入图片描述

命令行模式(或底行模式)与输入模式切换

命令行模式(底行模式)——> 输入模式
在正式介绍之前,我们先来看个表格

指令 作用
a 从光标所在位置后面开始新增资料,光标后的资料随新增资料向后移动
A 从光标所在列最后面的地方开始新增资料
i 从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动
I 从光标所在列的第一个非空白字符前面开始输入资料
o 在光标所在列下新增一列,并进入输入模式
O 在光标所在列上方新增一列,并进入输入模式

看过之后对于进入输入模式应该有了初步了解,接下来就来详细说说
Linux-C P1 Linux基础与Vi操作_第38张图片
在命令行模式下输入a
Linux-C P1 Linux基础与Vi操作_第39张图片
在命令行模式下输入A
Linux-C P1 Linux基础与Vi操作_第40张图片


然后我们在同样的位置
在命令行模式下输入i
Linux-C P1 Linux基础与Vi操作_第41张图片
在命令行模式下输入I
Linux-C P1 Linux基础与Vi操作_第42张图片
使用这个命令是不是觉得很方便添加注释


在命令行模式下输入o
Linux-C P1 Linux基础与Vi操作_第43张图片
在命令行模式下输入O
Linux-C P1 Linux基础与Vi操作_第44张图片


好的这里我们总结一下,方便大家记忆
Linux-C P1 Linux基础与Vi操作_第45张图片

输入模式——>命令行模式(底行模式)

相对于命令行模式(底行模式)——> 输入模式,那么切换回去就相对简单了
在这里插入图片描述
只需要输入ESC(键盘左上角的那个)就能回到命令行模式
在这里插入图片描述

命令行模式与底行模式切换

在vi编辑器下,这两个模式的区别其实不大,只需要输入:,命令行模式就会切换到底行模式等待底行命令的输入
在这里插入图片描述
光标就会移动到底行
是不是很简单呢!

介绍完模式之间的切换,我们来看看各个模式都能干什么解决最后一个问题

模式操作

Linux-C P1 Linux基础与Vi操作_第46张图片
我们先通过思维导图来初步了解一下

命令行模式

Linux-C P1 Linux基础与Vi操作_第47张图片

删除
如果我们想在命令行模式对内容进行删除操作
那么就输入s,删除光标所在的字符,并进入输入模式
Linux-C P1 Linux基础与Vi操作_第48张图片
这样就完成了字符的删除以及模式的切换
在命令行模式输入S,删除光标所在的行,并进入输入模式
Linux-C P1 Linux基础与Vi操作_第49张图片

指令 作用
s 删除光标所在的字符,并进入输入模式
S 删除光标所在的行,并进入输入模式

剪切
在介绍剪切之前需要先介绍两个简单的命令
这两个命令使用,才能更好的观察剪切命令的使用效果
为了演示效果我们假设已经复制了该行
一个是p,将缓冲区的字符黏贴到光标所在的位置
Linux-C P1 Linux基础与Vi操作_第50张图片
一个是u,取消上一次的文本编辑操作
Linux-C P1 Linux基础与Vi操作_第51张图片
我们之前复制的操作就被取消了,并在底行给出了信息

命令 作用
p 将缓冲区的字符黏贴到光标所在的位置
u 取消上一次的文本编辑操作

介绍完他们开始正式介绍剪切
Linux-C P1 Linux基础与Vi操作_第52张图片
在命令行模式输入nx,剪切从光标所在的字符开始的n个字符
Linux-C P1 Linux基础与Vi操作_第53张图片
在命令行模式输入ncb,剪切光标所在的前n个单词
Linux-C P1 Linux基础与Vi操作_第54张图片
在命令行模式输入ncw,剪切光标所在的后n个单词
Linux-C P1 Linux基础与Vi操作_第55张图片
在命令行模式输入c$,剪切从光标所在的字符到行尾的所有字符
Linux-C P1 Linux基础与Vi操作_第56张图片
在命令行模式输入ndd,剪切自光标所在的行开始的n行,到结尾不足n行,则至结尾
Linux-C P1 Linux基础与Vi操作_第57张图片

命令 作用
nx 剪切从光标所在的字符开始的n个字符
ncb 剪切光标所在的前n个单词
ncw 剪切光标所在的后n个单词
c$ 剪切从光标所在的字符到行尾的所有字符
ndd 剪切自光标所在的行开始的n行,到结尾不足n行,则至结尾

修改
修改的命令一共有两个,也比较简单
Linux-C P1 Linux基础与Vi操作_第58张图片
在命令行模式输入** r** 待修改字符,修改光标所在的字符
Linux-C P1 Linux基础与Vi操作_第59张图片
在命令行模式输入R,进入取代状态,直到输入ESC退出
Linux-C P1 Linux基础与Vi操作_第60张图片
这个命令的好处是一次命令能进行多字符修改

命令 作用
r 待修改字符,修改光标所在的字符
R 进入取代状态,直到输入ESC退出

复制
复制命令与剪切命令很类似,选取内容不会消息,而是复制了一份
Linux-C P1 Linux基础与Vi操作_第61张图片
在命令行模式下输入nyb,复制光标所在的前n个单词
Linux-C P1 Linux基础与Vi操作_第62张图片
在命令行模式下输入nyw,复制光标所在的后n个单词
Linux-C P1 Linux基础与Vi操作_第63张图片

在命令行模式下输入y$,复制从光标所在的字符到行尾的所在字符
Linux-C P1 Linux基础与Vi操作_第64张图片

在命令行模式下输入nyy,复制光标自所在的行开始,向下n行
Linux-C P1 Linux基础与Vi操作_第65张图片

命令 作用
nyb 复制光标所在的前n个单词
nyw 复制光标所在的后n个单词
y$ 复制从光标所在的字符到行尾的所在字符
nyy 复制光标自所在的行开始,向下n行

光标移动
关于光标移动的内容有点多,这里就不一一讲解,下面给出功能列表

指令 作用 指令 作用
0 移动到光标所在行的最前面 h 光标向前移动一个字符
$ 移动到光标所在行的最后面 l 光标向后移动一个字符
Ctrl+d 光标向下移动半页 k 光标向上移动一行
Ctrl+f 光标向下移动一页 j 光标向下移动一行
H 光标移动到当前屏幕的第一列第一列 e 移动到下一个字的最后一个字母
gg 光标移动到当前屏幕的第一行第一列 ^ 移动到光标所在行的第一个非空白字符
M 光标移动到当前屏幕中间行的第一列 n- 向上移动n行
L 光标移动到当前屏幕最后行的第一列 n+ 向下移动n行
b 移动到上一个字的第一个字母 nG 移动到第n行
w 移动到下一个字的第一个字母 :n 光标移动到第n行

底行模式

查找
在命令行模式下输入/ <要查找的字符>或?<要查找的字符>,查找字符
在这里插入图片描述
在这里插入图片描述
就会高亮显示我们查找的内容
Linux-C P1 Linux基础与Vi操作_第66张图片

替换
在命令行模式下输入: range s/string1/string2/gc,替换字符
Linux-C P1 Linux基础与Vi操作_第67张图片
具体的参数说明,将在后面表格给出

行号显示
在命令行模式下输入set nu或set number,显示行号
Linux-C P1 Linux基础与Vi操作_第68张图片
在命令行模式下输入set nonu或set nonumber,隐藏行号
Linux-C P1 Linux基础与Vi操作_第69张图片

分类 命令 作用
查找 / <要查找的字符> 查找字符
?<要查找的字符> 查找字符
替换 range s/string1/string2/gc 替换字符:range要替换的范围(%所有行,.当前行,$最末行)s:转入替换模式 string1查找的内容 string2替换成的内容g只替换第一字符c替换前询问
行号显示 set nu或set number 显示行号
set nonu或set nonumber 隐藏行号

输入模式

输入模式就是正常程序编写的操作,这里就不多做讲解了

Linux-C P1 Linux基础与Vi操作_第70张图片

更多内容

Linux-C P2 数据类型

Linux-C P3 运算符和表达式

Linux-C P4 输入输出

Linux-C P5 控制语句

Linux-C P6 数组

Linux-C P7 指针

Linux-C P8 函数

Linux-C P9 内存管理

Linux-C P10 结构体细讲

你可能感兴趣的:(嵌入式开发,Linux-C)