第一、二章学习笔记

第一、二章学习笔记

Unix/Linux文件系统采用数形组织结构
5、文件类型
(1)目录文件:一个目录可能包含其他的目录和(非目录)文件。
(2)非目录文件
①常规文件:包含普通文本或包含可执行的二进制代码。
②特殊文件:特殊文件时/dev目录中的条目。
(3)符号链接文件:属于常规文件,其内容为其他文件的路径名。
Linux命令 ln -s aVeryLongFileName myLink
可创建一个符号链接文件“myLink”,指向“aVeryLongFileName”。
6、Unix/Linux文件系统树的根节点(用“/”符号表示)称为根目录,或简称为根。文件系统树的每个结点都有以下表单的路径名指定:
/a/b/c/d OR a/b/c/d
以“/”开头的路径名为绝对路径名,反之则为相对于进程当前工作目录(CWD)的相对路径名。
pwd可以打印CWD的绝对路径名

Unix/Linux命令

  • ls:ls dirname:列出CWD或目录的内容
  • cd dirname:更改目录
  • pwd:打印CWD的绝对路径名
  • touch filename:更改文件名时间戳(如果文件不存在,则创建文件)
  • cat filename:显示文件内容
  • cp src dest:复制文件
  • mv src dest:移动或重命名文件。
  • mkdir dirname:创建目录
  • rmdir dirname:移除(空)目录
  • rm filename:移除或删除文件
  • ln 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手册页
第一、二章学习笔记

第一、二章学习笔记

第一、二章学习笔记

第二章:编程背景

第二章主要讲述了系统编程所需的背景信息:介绍了基于GUI的文本编辑器(这个在大二下学java时有所涉及);展示了如何在命令和GUI模式下使用EMACS编辑器来编辑、编译和执行C语言程序;并且向我们阐述了程序开发的步骤;详细阐释了函数调用惯例和运行时堆栈的使用;展示了C语言程序与汇编代码的链接;学会运用GUNmake工具编写makefile;提及了如何使用GDB调试工具调试C语言程序,并防止出现调试过程中出现的常见错误;复习了C语言中的结构和指针。以及数据结构中的二叉树模拟Unix/Linux文件系统树中的操作等。

**

Linux中的文本编辑器

**

vim

  1. h:将光标左移一个字符
    l:右移一个字符
    j:下移
    k:上移
  2. 用户必须输入i(插入)或a(追加)命令将vim切换到插入模式
  3. 输入“:”进入末行模式,将文本保存为文件或退出vim
    :w:写入(保存)文件
    :q:退出vim
    :wq:保存并退出
    :q!:不保存更改,强制退出

在 WYSIWYG编辑器中,用户可以输入文本,用箭头键移动光标,和普通的文本输入一样。通常,通过输入一个特殊的meta键,接着输入一个字母键即可创建命令。例如:
Ctrl+C:中止或退出。
Ctrl+K:删除行到缓冲区。
Ctrl+Y:从缓冲区内容中复制或粘贴。
Ctrl+S:保存已编辑文本等。

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

emacs
emacs( GNU Emacs2015)是一款强大的文本编辑器,可在多个不同的平台上运行。最受欢迎的 emacs版本是 GNU Emacs,可在大多数 Linux发行版中使用。以上所有编辑器都支持直接输入和全屏模式下的文本编辑。它们还支持关键词搜索,可用新文本替换字符串。要使用这些编辑器,用户只需要学一些基础知识即可,比如如何启动编辑器,输入文本进行编辑,将编辑后的文本保存为文件,然后退出编辑器。
第一、二章学习笔记

程序开发步骤

第一、二章学习笔记

**

问题及收获

**
c语言结构体

c语言结构体类型由struct关键字定义。

Next:指向下一个节点结构体的指针

Key:一个整数

Name:一个由64个字符组成的数组

此类结构体可定义为:

Sruct node{

Struct node *next:

Int key:

Char name[64]:

}

Struct node可作派生类型来定义该类型的变量。

注:定义c语言结构体时,该结构体的每个字段都必须具有一个编译器已知的类型,但自引用指针除外。一个结构体的大小可以由sizeof(struct type)确定。

链表

Typedef struct node{

Struct node *next;

Int value;

Char name[];

}NODE;

链表是一种由一系列节点组成的数据结构,这些节点通过节点的next指针链接在一起,即每一个节点的next指针指向列表中的下一个节点。

<![if !supportLists]>(3)<![endif]>树和二叉树

最简单的树是二叉树,其每个节点都有两个指针,分别是左指针和右指针。

Typedef sruct node{

Int key;

Struct node *left;

Struct node *right;

}NODE;

二叉树的遍历算法

先序遍历:node;node.left;node.right

中序遍历:node.left;node;node.right

后序遍历:node.left;node.right.node

深度优先(DF)

广度优先(BF)