第一二章读书笔记
知识点
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.16.3中讲到了sudo命令,其中讲到Ubuntu禁用了根或超级用户账户,但是在后面又说了有一种方法可杜绝这种情况,但不方便透露。这种方法是什么呢?
解决方法:
先给root用户配置一个密码,具体看是什么操作系统
比如ubuntu:sudo passwd root
提示输入密码2遍
配置后可立即在terminal中切换到root,指令sudo su
重启可在登录界面用户中输入root,密码正确可root权限登录
结果真的可以登录超级用户
可能是考虑到超级用户权限过大,对系统安全构成了一种挑战,如果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
下面是手把手跟娄老师学编程:
-
创建文件夹(命令mkdir + filename),在文件夹中部署好各类型文件夹。
1. src 源文件(.c) 2. docs 说明文档 3. include 头文件(.h) 4. libs 预处理文件(.o) 5. bin 可执行文件(.out)
2. 使用软件编辑代码,此处使用最简单的Hello World来进行演示。
头文件的编写:
源文件的编写:
3.编写makefile文件,make后出现错误:
解决方法:删除头文件一开始的定义,就不会出现问题。其实还不是很清楚一开始的定义是什么意思,只知道其功能是防止多个文件链接调用一个头文件时出现重复调用,在没有定义的时候就进行了调用从而引发错误。
4.运行成功截图: