首页 > 其他分享 >20201306吴龙灿学习笔记

20201306吴龙灿学习笔记

时间:2022-09-04 22:59:01浏览次数:63  
标签:文件 窗口 Ctrl 笔记 命令 吴龙灿 emacs 20201306 光标

一、知识点归纳:

第一章:引言

主要内容:

第一章是本书的引子,因为本书意在让我们学会Unix以及Linux相关只是,在高级语言的基础上进一步学习创造编程平台的基本语言,让我们学会硬件设备怎么样跟我们所熟知的软件设备取得联系。第一章讲述了我们如何利用本书学好系统编程,接着就是介绍了Unix的历史,介绍了Unix的各种版本,然后讲述Linux的开发以及各种已经发行的版本。随后便介绍了两种安装虚拟计算机的工具:VirtualBox和VMware,并教读者如何下载、安装、应用这两种软件。最后介绍了Unix/Linux文件系统组织、文件类型和常用的Unix/Linux命令,最后介绍了用户管理和维护Linux系统需执行的一些系统管理任务。

最有收获的地方:

其实之前已经有过运用虚拟机安装操作系统的经历,但是目的都是运用那个系统而不是针对此系统进行学习,从安装虚拟机开始,我就一直在思考,操作系统到底从何而来。通过安装虚拟机然后安装运用操作系统的过程,我对于系统本身而言的理解更加深刻了。系统需要通过系统编程才能成为一个系统,这里面需要在系统中定义进程,方便系统进行工作,除此之外,还需要文件系统,文件系统是我们把一些系统需要存储的东西放到固定的地方,方便我们调用,这个也是必不可少的。操作系统是个抽象的概念,但是把它生动化、形象化,它就像图书馆的操作模式一样,需要运行,需要存储。这就是我看完第一章的理解。
下面是安装虚拟机的截图:


此外我对于一些具体的内容也很有感触:
Ubuntu Linux系统管理:(1)用户账户:当用户使用登录名和密码登录后,登录进程将通过获取用户的gid和uid来转换成用户进程,并将目录更改为用户的homeDir,然后执行列出的initialProgram,该程序通常为命令解释程序sh。(2)sudo命令:在Ubuntu里,sudo(“超级用户执行”)允许用户以另一个用户(通常是超级用户)的身份执行命令,为确保用户能够发出sudo,只需在sudoers文件中添加一行:username ALL(ALL) ALL。下面列举一下课本上我印象深刻的命令语句:
ls:ls dirname列出CWD或目录的内容
cd dirname:更改目录
pwd:打印CWD的绝对路径名
touch filename:更改文件名时间戳
cat filename:显示文件内容
cp src dest:复制文件
mv src dest:移动或重命名文件
mkdir dirname:创建目录
rmdir dirname:移除(空)目录
rm filename:移除或删除文件
In oldfile newfile: 在文件之间创建链接
find: 搜索文件
grep: 搜索文件中包含模式的行
ssh: 登录到远程主机
gzip filename: 将文件压缩为.gz文件
gunzip file.gz: 解压.gz文件
tar-zcvf file.tgz.: 从当前目录创建压缩tar文件
tar-zxvf file.tgz.: 从.tgz 文件中解压文件
man: 显示在线手册页
zip file.zip filenames: 将文件压缩为.zip文件
unzip file.zip: 解压.zip文件

第二章:编程背景

主要内容:

第二章的内容主要是针对系统编程所需要的背景说起的。这一张的内容相较于第一张的引言来说,更加系统了,下面我就系统地说一下这一章的主要内容。
这一章先介绍了Linux中三种重要的文本编辑器:vim gedit emacs

(1)vim

Vim 是一个基于文本界面的编辑工具,使用简单且功能强大。更重要的是,Vim 是所有 Linux 发行版本默认的文本编辑器。
很多人习惯将 Vim 称为 Vi,其实 Vim 是 Vi 的增强版(在 Vi 的基础上增加了正则表达式的查找、多窗口的编辑等功能),使用 Vim 进行程序开发会更加方便。

(2)gedit

gedit是GNOME桌面环境默认的文本编辑器。它是Ubuntu及其他使用GNOME GUI用户界面的Linux的默认编辑器,包含用于编辑源代码和结构化文本(如标记语言) 的工具。

(3)emacs

Emacs是一种强大的文本 编辑器,在 程序员和其他以技术工作为主的计算机用户中广受欢迎。EMACS,即Editor MACroS( 编辑器宏)的缩写,最初由Richard Stallman( 理查德·马修·斯托曼)于1975年在MIT协同Guy Steele共同完成。这一创意的灵感来源于TECMAC和TMACS,它们是由Guy Steele、Dave Moon、Richard Greenblatt、Charles Frankston等人编写的宏 文本编辑器。
以及讲了如何使用这三种文本编辑器,后面在实践中将会提到。
接着我认为十分重要的是就是程序开发。本书是按照程序开发的步骤来讲述程序开发的。从创建源文件开始,再利用gcc程序来把源文件转化成二进制可执行文件,方便计算机的读取。接着就讲述了所需要的相关可执行文件的内容。最后又强调了程序执行的过程和程序终止的相关内容。
然后本书还讲了C语言中有关函数调用的知识。以及C语言程序如何和相对低级的汇编代码取得连接。后面还讲了C语言的一些工具的信息,例如结构体和指针,还有类型强转内容。
随后讲到了一个比较重要的内容:makefile。
Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。Makefile在绝大多数的IDE 开发环境中都在使用,已经成为一种工程的编译方法。
接着又是GDB调试工具。它是UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。

最有收获的地方:

我认为我最有收获的地方是三个文本编辑器的使用,其实类似于Windows系统里面的编辑器,只不过我们太熟悉了而已,面对Linux的文件编辑器就很陌生,但是实际上是一样的。尤其是对于emacs的使用,我更有感触,下面是我试用的一些功能:
移动光标
Ctrl-p:将光标向上移动
Ctrl-b:将光标向左移动,逐位移动
Ctrl-f:将光标向右移动,逐位移动
Ctrl-n:将光标向下移动
Alt-b:将光标向左移动,逐单词移动
Alt-f:将光标向右移动,逐单词移动
Ctrl-a:将光标移动到行前
Ctrl-e:将光标移动行尾
Alt-a:将光标移动到前一个句号
Alt-e:将光标移动到后一个句号
Shift-Alt-<:将光标移动到文本开始的地方
Shift-Alt->:将光标移动到文本结尾的地方

删除操作
Ctrl-d:删除光标后的字符
Alt-d:删除光标后的单词
Alt-:删除光标前的单词
删除一整块内容:
(1) 移动光标到删除的起始位置,按Ctrl-,SPC就是空格键, Emacs会在屏幕底部显示 “Mark set”
(2)然后移动光标到要删除的终点位置,按Ctrl-w,就可以成功删除起始位置到终点位置的文本。

全选 、复制、粘贴
(1)打标记:移动光标到起始位置,按下Ctrl-,SPC就是空格键
(2)移动光标到终点位置,按Ctrl-x x
(3)复制Alt-w
(4)粘贴Ctrl-y

复制粘贴
Ctrl-k:删除从光标到行尾的字符,它其实没有删除,这类似剪切
Ctrl-y:把Ctrl-k的内容拉回来,这类似粘贴,y表示yank
Alt-k:删除光标后的一句话,删到句点为止。
Alt-y :可以回到你Ctrl-k的内容,然后你就可以用Ctrl-y把内容拉回来
Alt-w:用鼠标选择文本,再这个组合键就可以完成复制
Ctrl-y:粘贴

命令的终止与重复
Ctrl-u 数字 命令 :按指定次数重复执行命令
Ctrl-g:终止命令的执行

撤销操作
Ctrl-/ :撤销操作
Ctrl-x u:撤销操作
C-:这个要按Ctrl+Shift+,撤销操作

替换字符串
(1)按Alt-x
(2)在Emacs底部的提示中输入命令:replace-string (repl再按键进行自动补全),然后回车
(3)根据提示输入要查找的源字符串,回车
(4)根据提示输入替换的目标字符串,回车
(5)注意:Emacs只会从当前光标开始向后查找替换
最后它会让你确认:

y :替换当前匹配的
n:跳过,不做替换
q:退出,不做任何替换
.:替换这个匹配,然后退出
!:替换所有剩下的匹配
打开文件
Ctrl-x Ctrl-f:然后EMACS会让你在底部输入文件路径(Ctrl-g可以取消操作),回车就会打开文件,如果路径是一个文件夹的路径,就会显示文件夹下的内容,直接在里选择要打开的文件即可。

Ctrl-x Ctrl-s 文件名 回车:如果不加文件名,默认保存当前光标所在的文件。
如果我们使用 Ctrl-x Ctrl-f打开第二个文件或更多文件,那么前面打开的文件都仍然存在Emacs中,你可以再次通过 Ctrl-x Ctrl-f命令再次找到它们打开,这些打开过的文件都会被缓存到对应的buffer的对象中。当查找文件时,就会在Emacs中创建一个新的buffer对象与之对应,buffer的名字通常就是文件名。通过以下命令,可以查看buffer列表中有哪些打开的文件,接着切换过去:
Ctrl-x Ctrl-b:显示buffer列表
Ctrl-x b:切换buffer,切换文件,它会在屏幕下方提示输入你要切换的文件名
Ctrl-x Ctrl-c:提供在关闭Emacs前,保存所有的文件,这样就不用逐个文件操作保存。
Ctrl-z:在纯命令行的linux系统,即没有图形界面的,那么要切换到其他程序时,就要暂时退出Emacs,这个命令可以做到暂时退出,再返回时,仍然是离开前的样子。

自动保存文件
当你对文件做了修改,但还没来得及保存,你的电脑就崩溃关机了,你对文件的修改就会丢失。为了防止这种情况发生,Emacs会每隔一段时间,就会为每一个文件写到各自的自动保存文件中去,这个自动保存的文件的文件名就是源文件名前后加#号,如Hello.txt对应的自动保存文件名就是#Hello.txt#,当你正常保存了文件后,这个自动保存文件就会被删除。
当真的发生了电脑崩溃关机的情况,就可以利用自动保存的文件恢复,具体操作如下:
(1)按下 Alt-x recover-this-file 回车
(2)根据提示操作即可

EMACS窗口
Ctrl-x + 数组(0–9):
Ctrl-x 1: 取消所有的窗口,只保留光标所在的窗口
Ctrl-x 2: 垂直切割光标所在窗口,分成上下两个窗口
Ctrl-x 3 :水平切割光标所在窗口,分成左右两个窗口
Ctrl-Alt -v :光标不需要离开当前窗口,下一个窗口翻页
**Ctrl-x o ** :光标移动到下一个窗口,o表示other
Ctrl-x 5 2:打开一个新的窗口,这如同打开了一个新Emacs
Ctrl-x 5 0:关闭选中的窗口
:三个ESC表示退出

这些是我在网上学习的对于emacs使用的方法。

二、问题与解决思路

看完一二章,我主要有两个问题:
(1)C语言中全局变量如何定义?
(2)如何用虚拟机运行C语言程序?
解决第一个问题我查阅了相关资料,因为我知道在每一个子函数下定义变量是很容易的,但是跨越函数的范围就没有那么的容易了。而且在之前编写C语言程序的时候,我知道,如果有一个变量能够在整个程序随意调用不被改变时,这将会非常方便程序的编写。所以我找到了解决办法:
一个大的系统会包含好多个.C文件和.H文件,每个.C文件都有可能会访问全局变量,所以全局变量在定义的时候就要稍微做下改变了。通常的做法是建立一个包含系统所有全局变量的.H文件,系统用到的所有全局变量都定义在该文件内,文件名可以用Global修饰一下。在该文件中定义某个全局变量的时候需要用extern声明该变量为外部变量。比如要定义SysEventCounter标志为unsigned char型的全局变量可以这样定义:
extern unsigned char SysEventCounter; <----这里是关键,不能对该变量赋值,只能声明,赋值就会报错。
上述声明是写在.H文件中的。其他.C文件若要用到该变量,直接包含该.H文件就可以了
如果想要赋初值,可以在用到它的.C文件中这样写:
unsigned char SysEventCounter = 0;
不用赋初值时,直接
unsigned char SysEventCounter;
就可以了。注意:只需要在一个.C文件中写即可,其他.C文件直接可以用。如果在其他.C文件中也这样写会产生重复定义的错误。
全局变量对变量的类型不限制,任何类型都可以,只要按照上述方法定义就不会有错误。

对于第二个也是在csdn上查了教程,因为即使我打开命令框下载好了gcc包,但是我还是不知如何打开编辑框。经过查阅资料,我只要输入两行命令,就能打开C语言编辑器。

三、实践内容

我的实践是使用emacs编译器:
下面是使用emacs文本编辑器的一些规则:

一、安装emacs

bash:apt-get install emacs

二、emacs启动退出

bash:emacs
bash:emacs filename
emacs默认工作目录是当前用户的home目录

三、emacs快捷键

C是ctrl,M是alt

C-x是同时按,C x是先按ctrl放开后再按x

1、文件操作快捷键

对应菜单栏的File命令
C-x C-f 打开emacs默认目录下home的某个文件
C-x d 打开文件路径,查看某个文件的属性信息,并在这个文件上进行编辑操作
C-x i 将某个文件的内容插入到当前的缓冲区
C-x C-v 打开一个文件,取代当前缓冲区
C-x C-s 保存文件
C-x C-w 将当前缓冲区文件另存为新文件
C-x C-q 切换为只读或者读写模式
C-x C-c 退出Emacs

2、编辑操作快捷键

对应菜单栏的Edit命令
C-f 光标前进一个字符 M-> 光标移动到文件尾部
C-b 光标后退一个字符 C-M-f 向前匹配括号
M-f 光标前进一个字 C-M-b 向后匹配括号
M-b 光标后退一个字 C-i 将光标所在位置居中
C-a 光标移动到行首 M-n or C-u n 重复操作随后的命令n次
C-e 光标移动到行尾 C-u 重复操作随后的命令4次
M-a 光标移动到句首(第一个非空字符) C-u C-u 重复操作随后的命令8ci
M-e 光标移动到句尾(最后一个非空字符) C-x ESC ESC 执行理事命令记录,M-p选择上一条命令,M-n选择吓一跳命令
C-p 光标移动到上一行 C-d 删除一个字符
C-n 光标移动到下一行 M-d 删除一个字
C-v 向下翻页 C-k 删除一行
M-v 向上翻页 M-k 删除一句
M-< 光标移动到文件头部 C-_ 撤消操作

3、窗口操作

操作窗口
C-x 0 关闭当前窗口 C-x s 保存所有窗口缓冲
C-x 1 只留下一个窗口 C-x b 选择当前窗口的缓冲区
C-x 2 垂直均分窗口 C-x ^ 纵向扩大窗口
C-x 3 水平均分窗口 C-x } 横向扩大窗口
C-x o 切换到其他窗口

4、缓冲区列表操作

C-s 字符 打开缓冲区列表 u 取消标记
d or k 标记为删除 x 执行标记的操作
~ 标记为未修改状态 f 为当前窗口打开该缓冲区
% 标记为只读 o 在其他窗口打开该缓冲区
s 保存缓冲

5、程序编译

选择编译语言M-x [language]-mode

选择缩进风格M-x c-set-style

make -k命令调用makefile文件
M-x compile 执行编译操作 M-x xdb 调用xdb调试器
M-x gdb 调用gdb调试器 M-x sdb 调用sdb调试器
M-x dbx 调用dbx调试器

6、搜索模式

C-s 字符 向前搜索字符,查找到的字符以蓝色字体显示
ENTER 停止搜索
C-r 字符 向后搜索字符,查找到的字符以蓝色字体显示
C-s C-w 以光标所在位置的字为关键字进行搜索
C-s C-s 重复上一次搜索
C-r C-r 重复上一次反向搜索
C-s ENTER C-w 进入单词搜索模式,搜索完毕后,光标停留在查找到的第一个单词的后面
C-r ENTER C-w 进入反响单词搜索模式
C-r 进入查找/替换模式后,该命令进入迭代编辑模式
C-M-x 退出迭代编辑模式,返回到查找/替换模式

7、Shell模式

emacs支持shell

M-x shell 打开Shell
M-! 执行Shell命令
M-l M-! 执行Shell命令,命令的输出插入在光标当前位置,而不打开新的输出窗口
M-| 针对某一特定区域执行shell命令
M-! M-p 执行前一条shell命令,同M-!+向上方向键
M-! M-n 执行下一条shell命令,同M-!+向下方向键

下面是具体操作流程:

首先创建源文本:
使用一个可选文件名(如t. c)调用emacs编辑器。emacs将会在一个单独窗口中启动,如 图2.1所示,emacs窗口的顶部是一个菜单栏,每个菜单都可以打开,査看其他命令,用户 可点击菜单图标调用命令。开始时,不要使用菜单栏,重点是创建C语言程序源文件的简 单任务。emacs启动时,如果已经有t.c文件,它会打开文件并将文件内容加载到一个缓冲 区中进行编辑,否则,它会显示一个空的缓冲区,用户可在这里输入内容。图2.1所示为用 户输入行。emacs将任意.c文件识別为C语言程序的源文件 它将按照C代码行的惯例缩 进,例如,它将自动匹配每个适当的左“ {”右“}”缩进。实际上,它甚至可以检测出不 完整的C语句,并显示不适当的缩进,以警告用户C源代码行中可能出现的语法错误。

创建源文件后,按下meta键序列" Ctrl+X+C”,以保存文件并退岀。如果缓冲区中有 修改后未保存的文本,它会提示用户保存文件,如图2.2最后一行所示。输入y以保存文件 并退出emacs0或者,用户也可以点击菜单栏上的Save图标来保存并退出。

然后就是运行文件里的c语言程序,我们已经将文件里的内容保存了,然后通过特定命令:gcc 文件名 -o 文件名(不带后缀),然后回车./就可以得出结果:

标签:文件,窗口,Ctrl,笔记,命令,吴龙灿,emacs,20201306,光标
From: https://www.cnblogs.com/wulongcan20201306/p/16656401.html

相关文章

  • 数据结构与算法学习笔记 —— 队列(Queue)
     队列Queue1.简介队列是一种有次序的数据集合,其特征是数据项的添加和移除分别发生在该集合的两端:-数据项的添加发生在尾端(rear)-现存数据的移除发生在首......
  • 信息安全系统设计与实现学习笔记1
    一、知识点归纳以及自己最有收获的内容1、知识点归纳第1章引言1、系统编程的作用——有效利用系统资源来开发应用软件;为学生打下扎实的专业基础2、本书目标强化学......
  • 第一周学习笔记1
    一、知识点总结:第一章:引言第一章是本书的引言部分,本章简单介绍了Unix的历史、Linux的开发及其各种发行版。本章还解释了Linux的启动过程,描述了Unix/Linux文件系统组织......
  • 20201329魏赫学习笔记一
    20201329信息安全系统设计与实现学习笔记①作业信息作业要求https://www.mosoteach.cn/web/index.php?c=interaction_homework&m=s_write&clazz_course_id=7C854F......
  • 第一周学习笔记
    任务知识点归纳以及自己最有收获的内容(3分)问题与解决思路(2分)实践内容与截图,代码链接(3分)...(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)(2分)知识......
  • 20201322陈俊池 学习笔记1
    一、知识点归纳第一章:引言1.3本书目标(1)强化学生的编程背景知识(2)动态数据结构的作用(3)进程概念和进程管理(4)并发编程(5)定时器和定时功能(6)信号、信号处理和进程间通信(7......
  • 笔记day06
    上周内容回顾后续项目中需要用到前端、后端、数据库三方面知识所以课程中涵盖了三方面内容MySQL基本操作基本SQL语句字段类型字段约束外键约束表查询......
  • 《Unix/Linux系统编程》第一、二章学习笔记
    第一章引言让我最有收获的内容:1.8关于UnixUnix是一种通用操作系统。开发者:肯·汤普森(KenThompson)和丹尼斯·里奇(DennisRichie)诞生日期:20世纪70年代早期经典书目......
  • 20201305学习笔记1
    第一章引言总述:在第一章刚开始这本书引入了Linux系统,告诉了我们Linux系统的发展历程和它的一些运行模式,他的版本,其中最主要讲的就是unbuntuLinux版本,讲了他的一些常用......
  • 《Unix/Linux系统编程》学习笔记1
    《Unix/Linux系统编程》学习笔记1第一章引言1、本书目标强化学生的编程背景知识:编程语言->编程开发动态数据结构应用:C结构、指针、链表、链树进程概念和进程管理并......