20191310李烨龙第一二章读书笔记

第一二章读书笔记


知识点

1 引言

第一章主要是对全书的内容进行一个总体介绍,它深入浅出地说明了全书的整体脉络,介绍了Linux的发展史。之后,它教授了通过Virtual Box和Vmware两款软件安装和启动Linux,简单地介绍了一下文件系统组织、简单命令和系统管理。
  记录一下几个比较重要的Linux命令:

cd:更改目录
exit:退出
logout:注销
sudo apt install:安装应用程序
sudo:使用root权限执行
ls:lsdirname:列出CWD或目录的内容。
pwd:打印CWD的绝对路径名。
touch filename:更改文件名时间戳(如果文件不存在,则创建文件)。
cat filename:显示文件内容。
cp src dest:复制文件。
mv src dest:移动或重命名文件。
mkdir dirname:创建目录。
rmdir dirname:移除(空)目录。
rm filename:移除或删除文件。
find:搜素文件
grep:搜索文件中包含模式的行。
ssh:登录到远程主机
tar-zcvffile.tgz:从当前目录创建压缩tar文件。
tar-zxvffile.tgz:从tgz文件中解压文件。
man:显示在线手册页。
zip file.zip filenames:将文件压缩为.zip文件。
unzip file.zip:解压.zip文件。
history:查看历史命令。
!数字:执行第"数字"条命令。

以上命令在日常使用Linux命令行中会经常使用到,需要勤加练习记忆。
  关于我的虚拟机,我使用的软件是Vmware,在我看来,它比Virtual Box“智能”多了,相比之下,后者使用过程中体验十分不好,经常会出现一些不明所以的错误。由于曾经安装过Ubuntu和Kali,所以不再演示安装过程。Ubuntu个性化GUI看起来很酷,但是实际用起来反而感觉UI是多余的坠饰,或许是我还仅仅是浅尝辄止,没有探索出Ubuntu的UI真正的奥秘吧。

​ Kali里面有许多很酷很实用的应用都提前安装好了,看一眼它的菜单栏就会被其强大的功能所折服。虽然自己还没有很好地发挥其真正的功效,但是还是很感谢当时给我推荐这个的老哥,因为Kali看起来真的太有逼格了!

​ 补充今天上课所记录的几个使用Linux敲代码时所需的快捷键:

	1. `^ + alt + t`		             打开命令行
	2. `^ + shift + t`                  创建新标签
	3. `alt + number`               在新标签之间跳转

​ 命令行中实用技巧:

1. `history  —  !number`  查询过往代码
2. `odd`  以二进制格式读取文件
3.  `gcc  -E  xx.c  -o  xx.i`     预处理
4.  `gcc  -S  xx.i  -o  xx.s`     编译
5.  `gcc -c  xx.s  -o  xx.o`     汇编
6.  `gcc  -Iinclude  +  头文件路径`    链接库

2.7 makefile

​ makefile算是比较困难的一个内容,还没看的时候就听舍友在宿舍哭诉完全听不懂。简单浏览书本,发现书上关于makefile还是占了很大一部分内容,但是一开始还是没有简单介绍一下makefile是什么,可能是默认我们都已经有所了解了。

​ makefile其实就是包含了多条Linux命令的一个脚本文件,如果利用得当可以提高效率,特别是在管理大型项目时,可以省去很多时间编译整个项目。

​ make文件由目标项依赖项规则组成。

target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。

prerequisites就是,要生成那个target所需要的文件或是目标。

  **command**也就是make需要执行的命令。(任意的Shell命令)

	**tips**:$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。

makefile教程,可以参考云班课资源中的ppt,深入浅出地讲述了makefile的用法。

​ 链接2,这一篇看起来更加专业也更加助于理解:https://blog.csdn.net/weixin_38391755/article/details/80380786

2.9-2.12 数据结构、算法

​ 书中降到了C语言中的结构提、指针等基础内容,之后介绍了数据结构和算法相关内容。在大一下我们上了C语言编程课程,大二上我们学习了数据结构和算法课程,书中的知识就是帮助我们进行一个温习,怕是我们重新拾起C语言,又一点基础都没有了!


问题

  1. 在1.16.3中讲到了sudo命令,其中讲到Ubuntu禁用了超级用户账户,但是在后面又说了有一种方法可杜绝这种情况,但不方便透露。这种方法是什么呢?

解决方法:

​ 先给root用户配置一个密码,具体看是什么操作系统
​ 比如ubuntu:sudo passwd root 提示输入密码2遍
​ 配置后可立即在terminal中切换到root,指令sudo su
​ 重启可在登录界面用户中输入root,密码正确可root权限登录

image-20210913212512633

​ 结果真的可以登录超级用户

​ 可能是考虑到超级用户权限过大,对系统安全构成了一种挑战,如果root用户被操控就没有系统安全可言了!所以日常还是使用命令sudo -i来对用户进行一个提权更加安全一些。

链接:https://zhidao.baidu.com/question/470704080.html

2.在2.1.1中提到了所见即所得(WYSIWYG)编辑器,这是什么意思?

解答:这是我之前看书时标注的问题,今天在准备写笔记时偶然得到了答案。为了编辑markdown文件,我下载了一个编辑器Typora,这个编辑器就是典型的所见即所得编辑器,可以对


实践

​ 安装openeuler,和安装Linux虚拟机是一样的,下载并安装镜像文件即可。

​ 链接:https://blog.csdn.net/huangsxint/article/details/114758542

​ 下面是手把手跟娄老师学编程:

  1. 创建文件夹(命令mkdir + filename),在文件夹中部署好各类型文件夹。

       1.   src      源文件(.c)
       2.   docs        说明文档
       3.   include        头文件(.h)
       4.   libs        预处理文件(.o)
       5.   bin        可执行文件(.out)
    

	2. 使用软件编辑代码,此处使用最简单的Hello World来进行演示。

 头文件的编写:

 源文件的编写:

3.编写makefile文件,make后出现错误:

​ 解决方法:删除头文件一开始的定义,就不会出现问题。其实还不是很清楚一开始的定义是什么意思,只知道其功能是防止多个文件链接调用一个头文件时出现重复调用,在没有定义的时候就进行了调用从而引发错误。

4.运行成功截图:

原文地址:https://www.cnblogs.com/sisterben/p/15269729.html