第一周作业
- 1. 一个完整计算系统的简要介绍。
- 2. 学会进制的转换,并简单举例完成转换。
- 3. 制作一个教程,说明vmware软件如何下载安装。
- 4. 说明GPL和MIT开源协议的区别。
- 5. 制作2个安装教程,安装rocky 8.5, ubuntu 22.04,并结合xshell说明如何通过虚拟IP登入系统。
- 6. 说明tab键补全命令以及补全路径的原理。
- 7. 说明内部命令和外部命令的区别,以及他们如何获取帮助的?
- 8. 说明命令行快捷键如何完成,
- 9. 总结Linux目录结构说明每个目录主要的用途。
- 10. 总结文件通配 *, ?, [a-z], [0-9], ~,{a..z}, [:alnum:] [:alpha:] [:blank:][:digit:] [:graph:] [:lower:][:punct:] [:space:] [:upper:]等常用通配符。
- 11. 说明文件系统如何根据用户输入的路径查找到磁盘上的文件的过程。
- 12. 总结硬链接和软件链接原理,并举例说明如何使用。
- 14. 说明标准输入,标准输出,标准错误输出的区别,及举例说明其功能。
- 15. 总结学过的用户,组,权限相关的命令及选项,示例"
1. 一个完整计算系统的简要介绍。
-
计算机(computer),作为一种通用的信息处理工具,具有接收和存储信息能力,并按照存储在其内部的程序对海量的数据进行自动、高速的处理,然后把处理结果输出到现代化智能电子设备上。
-
“世界的第一台电子数字计算机”(ENIAC)是1946年在美国宾夕法尼亚大学诞生。
-
通常一个完整的计算机包含两大部分,分别是;
硬件(Hardware)
- 它包含了主机和外部设备两大模块,包含;
- 主机:中央处理器CPU(运算器和控制器)和内存储器(ROM、RAM)
- 外部设备:外部存储器(硬盘、软盘、光盘、磁带等)、输入设备(键盘、鼠标、扫描仪等)、输出设备(显示器、打印机、绘图仪等)和其他设备(调制解调器等)
软件(Software)
- 它包含了系统软件和应用软件两个模块,包含;
- 系统软件:操作系统、程序语言处理系统、数据库管理系统和服务程序(检查、诊断和调试程序)
- 应用软件:通用应用软件(如office办公软件包)和专用应用软件(用户程序)
2. 学会进制的转换,并简单举例完成转换。
一、进制介绍:
对于整数,有四种表示方式:
1、二进制:0,1,满2进1。以0B或0b开头。
例:int n1 = 0b1010;
2、十进制:0-9,满十进一。
例:1010;
3、八进制:0-7,满8进一,以数字0开头表示。
例:01010;
4、十六进制:0-9及A(10)-F(15),满16进一。以0x或0X开头表示。.此处A-F不区分大小写。
例:int n4 = 0x10101;
二、进制转换
可分为四组
第一组:
1.二进制转十进制
2.八进制转十进制
3.十六进制转十进制
第二组:
1.十进制转二进制
2.十进制转八进制
3.十进制转十六进制
第三组:
1.二进制转八进制
2.二进制转十六进制
第四组
1.八进制转二进制
2.十六进制转二进制
一、第一组其它进制转十进制
规律:从最低位(右边)开始,将每个位上的数提取出来,乘以目标进制数的(位数-1)次方,然后求和
例:
0b1101(二进制)转十进制:即1乘2的0次方 + 0乘2的1次方 + 1乘2的2次方 + 1 乘 2 的3次方
0x1101(十六进制)转十进制:即1乘16的0次方 + 0乘16的1次方 + 1乘16的2次方 + 1 乘 16的3次方
是几进制就用该位上的数 乘几的(位数 - 1 )次方,然后求和。
**二、第二组,十进制转其它进制(除几反向取余法)
转几进制就除以几,然后把余数按倒序的顺序组合即可。
1、例:十进制转二进制:13
13/2 = 6,余1
6/2 = 3, 余0
3/2 = 1,余1
1/2 = 0,余1、
倒序取余,结果为:0b1101
2、例:十进制转十六进制:88
88/16 = 5,余8
5/16 = 0,余5
倒序取余,结果为:OX58
第三组(二进制转八进制、十六进制)
1、二进制转八进制:
规则:从低位到高位(从右到左),每三位为一组,然后按顺序写出对应的八进制即可
例:0b1101101转换为八进制
从低位到高位拆分成三位一组:
1 101 101
(1)(5) (5)
所以八进制为:0155
2、二进制转十六进制:
规则:从低位到高位(从右到左),每四位为一组,然后按顺序写出对应的十六进制即可
例:0b1110101111101100110 转换为十六进制
从低位到高位拆分成四位一组:
111 0101 1111 0110 1101
(7) (5) (F) (6) (D)
所以对应的十六进制为:0X75F6D
第四组(八进制、十六进制转换为二进制)
1、八进制转换为二进制(二进制转换为八进制反过来即可)
规则:将八进制的每一位都转成对应的一个 3 位的二进制
例:0267
2 6 7
(010) (110) (111)
所以结果为:0b10110111
2、十六进制转换为二进制(二进制转换为十六进制反过来即可)
规则:将十六进制的每一位都转成对应的一个 4 位的二进制
例:OX18DF61
1 8 D F 6 1
(0001) (1000) (1101) (1111) (0110) (0001)
所以结果为:OX1 1000 1101 1111 0110 0001
3. 制作一个教程,说明vmware软件如何下载安装。
- 由于时间问题此笔记作业只提供最新版本的搜索。
-
首先打开任意浏览器,搜索vmware后点进官网或直接在网址栏输入vmware.com进入官网
-
在进入到官网后根据需求进行相关搜索
-
4.之后就可以按照自己的操作系统环境来进行下载相对应的vmware station pro
5.在下载完成后就可以点击安装包进行安装部署了。除安装位置外一般来说默认安装即可,不需要选用额外组件功能。
激活方式可以采用密匙激活,网络上有很多公开的批量许可证,这里就不多追述。
4. 说明GPL和MIT开源协议的区别。
-
"GPL"的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。
-
"MIT"这个协议唯一的条件就是在修改后的代码或者发行包包含原作者的许可信息,适用商业软件。
5. 制作2个安装教程,安装rocky 8.5, ubuntu 22.04,并结合xshell说明如何通过虚拟IP登入系统。
rocky 8.5
1. 首先创建虚拟机后开机,进入安装选项。
2.在进入系统安装界面后首先选择语言,这里我选择默认英文。选择完成后点击continue
3.进入到这里后就可以进行更详细的系统安装客制化了,包括软件包选择,硬盘分区,时区选择等。
4. 首先选择Software Selection进行选择需要安装方式。由于本次需要minimal安装,所以需要进入里面进行设置。在选择完成后点击左上角Done。
5.完成上一步后选择Time & Date来设置时区。
设置时区如下图所示。设置完成后点击左上角Done
6.在完成时区设置后就可以进行硬盘分区操作,首先进入Installation Destination
下图为硬盘分区时的选项,选择完成后点击左上角的Done
7.完成上述步骤后就可以进行账户的密码设置了。选择Root Password后,设置需要的密码即可。
注意:密码需要记牢,忘记了就需要进行密码重置操作了。
8.在一切完成后就可以进行安装了。点击Begin Installation进行系统安装。
ubuntu
—
6. 说明tab键补全命令以及补全路径的原理。
-
tab键的主要作用是用来进行命令和文件路径的补全名称,提高输入效率和减少错误几率,避免出错
-
tab的原理则是bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻已给定命令命名的文件,第一次找到的命令即为要执行的命令;用户给定的字符串只有一条唯一推赢得命令,直接补全;否则,再次Tab键会给出列表;
7. 说明内部命令和外部命令的区别,以及他们如何获取帮助的?
8. 说明命令行快捷键如何完成,
1)快速跳转到行首?
-
ctrl+a
2)快速跳转到行尾?
-
ctrl+e
3)快速删除当前光标到行尾,
-
ctrl+k
4)快速删除光标到行首,
-
ctrl+u
5)如何快速取消执行命令。
-
ctrl+c
9. 总结Linux目录结构说明每个目录主要的用途。
常见的Linux文件目录结构包括;
/boot:引导文件存放目录,内核文件(vmlinuz),引导加载器(bootloader、grub),都存放在于此目录
/bin:所有用户使用的基本命令:不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令:不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于X86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户目录,家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:便携式移动设备挂载点
/dev:设备文件及特殊文件存放位置b:block device,随机访问
c:character device,线性访问/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr:universal shard,read-only databin:保证系统拥有完整的功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在于64位系统中
include:C语言的头文件(header files)
share:结构化独立的程序,如doc、man等
local:第三方应用程序安装的位置/var:variable data files
cache:应用程序缓存数据目录
lib:应用程序状态信息数据
local:专用于为"/usr/local"下的应用程序存储可变数据
lock:锁文件
log:日志目录及文件
opt:专用于为"/opt"下的应用程序存储可变程序
run:运行中的进程相关数据,通常用于存储进程PID文件
spool:应用程序数据池
tmp:存储系统两次重启之前产生的临时数据。/proc :用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
selinux :security enhanced linux ,selinux相关的安全策略等信息的存储位置
10. 总结文件通配 *, ?, [a-z], [0-9], ~,{a…z}, [:alnum:] [:alpha:] [:blank:][:digit:] [:graph:] [:lower:][:punct:] [:space:] [:upper:]等常用通配符。
* 匹配零个或多个字符,但不匹配"."开头的文件,即隐藏文件
? 匹配任何单个字符,一个汉字也算一个字符
~ 当前用户家目录
[0-9] 匹配数字范围
[a-z] 一个字母
[^a-z] 匹配列表中的所有字符以外的字符
.和~+ 当前工作目录
~- 前一个工作目录
-------------------------------------------------------------------
[:digit:]:任意数字,相当于 0-9
[:lower:]:任意小写字母,表示 a-z
[:upper:]:任意大写字母,表示 A-Z
[:alpha:]:任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符
11. 说明文件系统如何根据用户输入的路径查找到磁盘上的文件的过程。
涉及VFS层的数据结构设计,VFS根据目录树,逐层lookup,先检查每级别的子目录的dentry数据,dentry中会记录name跟inode映射。找到inode之后,具体的fs会根据inode记录的元数据,找到data所在的磁盘位置。管理meta data跟data管理的fs模块,主要是fs的block allocator。用户每当创新一个新的文件或者写入新的文件数据时候,block allocator都需要为新的数据/元数据,分配资源,修改原有的元数据。每个文件系统,都有自己的block allocator实现,不同系列的fs,相差会很大。每个块管理工具,比如磁盘分区,LVM2,也有自己的block allocator。每个物理设备的控制器,比如ssd卡的控制器,磁盘的控制器,也有自己的block allocator,会把逻辑地址映射为物理地址。
12. 总结硬链接和软件链接原理,并举例说明如何使用。
硬链接
硬链接本质上就给一个文件起一个新的名称,实质是同一个文件
硬链接特性:
- 创建硬链接会在对应的目录中增加额外的记录项以引用文件
- 对应于同一文件系统上的一个物理文件
- 每个目录引用相同的inode号
- 删除文件时:rm命令递减计数的链接,文件要存在,只要需要有一个链接数,当链接数为零时,该文件被删除
- 不能跨越驱动器或分区
- 不支持对目录创建硬链接
- 格式:
ln filename [ linkname ]
软链接
一个符号链接指向另一个文件,就像windows中的快捷方式,软链接文件和源文件本质上不是同一个文件
软链接特性:
- 一个符号链接的内容是它引用文件的名称
- 可以对目录创建软链接
- 可以跨分区的文件实现
- 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
- 在创建软链接时,如果源文件使用相对路径,是相对于软链接文件的路径,而非相对于当前工作目录,但是软链接的路径如果是相对路径,则是相对于当前工作目录
- 格式:
ln -s filename [ linkname ]
14. 说明标准输入,标准输出,标准错误输出的区别,及举例说明其功能。
打开的文件都有一个fd:file descriptor
linux给程序提供三种I/O设备
文件描述符 | 缩写 | 描述 | 作用 |
---|---|---|---|
0 | STDIN | 标准输入 | 默认接受来自终端窗口的输入 |
1 | STDOUT | 标准输出 | 默认输出到终端窗口 |
2 | STDERR | 标准结果 | 默认输出到终端窗口 |
15. 总结学过的用户,组,权限相关的命令及选项,示例"
// 其他选项
-u UID
-o 配合-u选项,不检查UID唯一性
-g GID 指明用户所属的基本组,可为组名,也可为GID
-c "COMMENT" 用户的注释信息
-d HOME_DIR 以指定的路径(不存在)为home目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
-G GROUP1,[GROUP2,...] 为用户指明附加组,组需要事先存在
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户
-m 创建home目录,用于系统用户
-M 不创建home目录,用于非系统用户
-p 指定加密的密码
// 其他选项
-f --force 强制
-r --remove 删除用户的home目录和邮箱
// 其他选项
-u 显示UID
-g 显示GID
-G 显示用户所属的组的ID
-n 显示名称,需要配合ugG使用
// 其他选项
-l --login su -l UserName 相当于su - UserName
-c --command <command>
// 其他选项
-d 删除指定用户密码
-l 锁定指定用户
-u 解锁指定用户
-e 强制用户下次登录修改密码
-f 强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stind 从标准输入接收用户密码,Ubuntu无此选项
// 其他选项
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期” 0表示马上过期,-1表示永不过期
-h, --help 显示此帮助信息并推出
-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, --list 列出用户以及密码的有效期
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays MAX_DAYS 密码保持有效的最大天数
-R, --root CHROOT_DIR chroot 到的目录
-W, --warndays 警告天数 密码过期前,提前收到警告信息的天数
// 其他选项
-g GID 指明GID号
-r 创建系统组
// 其他选项
-g 新的GID
-n Group_name:新名字
// 其他选项
-f --force 强制删除,即使是用户的主组也强制删除组,但会导致无主组的用户不可用且无法登录
// 其他选项
参数 参数说明
-a, --add USER 将用户添加到组
-d, --delete USER 从组中删除用户
-A, --administrators ADMIN,… 设置组的管理员列表
// 其他选项
参数 参数说明
-a --add username 把用户添加到组中
-d --delete username 从组中移除用户
-g --group groupname 更改为指定组
-l --list 显示组成员
-p --purge 删除组内所有用户