2020-2021-1 20209315《Linux内核原理与分析》第一周作业
《Linux内核原理与分析》第一周作业
实验二
1.1 实验内容
- 实验楼环境介绍
- 常用 Shell 命令及快捷键
- Linux 使用小技巧
1.2 实验知识点
- Linux 基本命令
- 通配符的使用
- 查看帮助文档
1) 重要快捷键
- 真正学习命令行之前,先要掌握几个十分有用、必需掌握的小技巧:
[Tab]
使用Tab
键来进行命令补全,Tab
键一般是在字母Q
旁边,好处就是忘记某个命令的全称时可以只输入它的开头的一部分,然后按下Tab
键就可以得到提示或者帮助完成。
[Ctrl+c]
当在 Linux 命令行中无意输入了一个不知道的命令,或者错误地使用了一个命令,导致在终端里出现无法预料的情况时,这时候可以使用Ctrl+c
键来强行终止当前程序(且不会使终端退出)。
使用 touch 命令创建 2 个文件
实验四
一.实验要求:
- Linux 的文件组织目录结构。
- 相对路径和绝对路径。
- 对文件的移动、复制、重命名、编辑等操作。
1.1 实验知识点
- 每个目录的大体内容
- 文件的属性
touch
,file
,rm
,mv
等基本命令
1.FHS标准:
FHS 定义了两层规范,第一层是, /
下面的各个目录应该要放什么文件数据,例如 /etc
应该放置设置文件,/bin
与 /sbin
则应该放置可执行文件等等。
第二层则是针对 /usr
及 /var
这两个目录的子目录来定义。例如 /var/log
放置系统日志文件,/usr/share
放置共享数据等等。
最真实最直观的FHS层次结构:
输入:
输出:
2.目录路径:
使用 cd
命令可以切换目录,在 Linux 里面使用 .
表示当前目录,..
表示上一级目录(注意,我们上一节介绍过的,以 .
开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a
命令查看隐藏文件),-
表示上一次所在目录,~
通常表示当前用户的 home
目录。使用 pwd
命令可以获取当前所在路径(绝对路径)。
进入上一级目录:
进入的home
目录:
使用 pwd
获取当前路径:
三、Linux 文件的基本操作
新建、复制、删除、移动文件与文件重命名、查看文件、查看文件类型、以及编辑文件。
新建空白文件
使用 touch
命令创建空白文件,关于 touch
命令,其主要作用是来更改已有文件的时间戳的(比如,最近访问时间,最近修改时间),但其在不加任何参数的情况下,只指定一个文件名,则可以创建一个指定文件名的空白文件(不会覆盖已有同名文件)
创建test文档:
新建目录
使用 mkdir
(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性。
使用 -p
参数,同时创建父目录(如果不存在该父目录)
复制文件
使用 cp
命令(copy)复制一个文件到指定目录。
将之前创建的 test
文件复制到 /home/shiyanlou/father/son/grandson
目录中:
实验五 环境变量与文件查找
1.1 实验内容
本节实验介绍环境变量的作用与用法,及几种搜索文件的方法。学会这些技巧可以高效地使用 Linux 。
1.2 实验知识点
- 环境变量的设置
- 环境变量的修改
1.变量
变量的作用域即变量的有效范围(比如一个函数中、一个源文件中或者全局范围),在该范围内只能有一个同名变量。一旦离开则该变量无效,如同不存在这个变量一般。
使用 declare
命令创建一个变量名为 tmp 的变量:
使用 =
号赋值运算符,将变量 tmp 赋值为 shiyanlou。注意,与其他语言不同的是, Shell 中的赋值操作,=
两边不可以输入空格,否则会报错。
读取变量的值,使用 echo
命令和 $
符号
2. 命令的查找路径与顺序
查看 PATH
环境变量的内容:
创建一个 Shell 脚本文件
在脚本中添加如下内容,保存并退出。
为文件添加可执行权限并执行脚本
创建一个 C 语言 hello world
程序:
输入如下:
分别运行建立的两文件
实验六 文件打包与解压缩
一、实验介绍
1.1 实验内容
介绍 Linux 上常用的压缩/解压工具,主要讲解 zip,tar 的使用。
1.2 知识点
- zip 命令
- tar 命令
- 压缩与解压常用组合
3.1 zip 压缩打包程序
将目录 /home/shiyanlou/Desktop
打包成一个文件,并查看了打包后文件的大小和类型。第一行命令中,-r
参数表示递归打包包含子目录的全部内容,-q
参数表示为安静模式,即不向屏幕输出信息,-o
,表示输出文件,需在其后紧跟打包输出文件名。后面使用 du
命令查看打包后文件的大小
- 设置压缩级别为 9 和 1(9 最大,1 最小),重新打包:
- 创建加密 zip 包
使用 -e
参数可以创建加密压缩包:
3.2 使用 unzip 命令解压缩 zip 文件
将 shiyanlou.zip
解压到当前目录:
使用安静模式,将文件解压到指定目录:
使用 unzip 解压文件时同样应该注意兼容问题,不过这里我们关心的不再是上面的问题,而是中文编码的问题,通常 Windows 系统上面创建的压缩文件,如果有有包含中文的文档或以中文作为文件名的文件时默认会采用 GBK 或其它编码,而 Linux 上面默认使用的是 UTF-8 编码,如果不加任何处理,直接解压的话可能会出现中文乱码的问题(有时候它会自动帮你处理),为了解决这个问题,可以在解压时指定编码类型。
3.3 tar 打包工具
在 Linux 上面更常用的是 tar
工具,tar 原本只是一个打包工具,只是同时还是实现了对 7z、gzip、xz、bzip2 等工具的支持,这些压缩工具本身只能实现对文件或目录(单独压缩目录中的文件)的压缩,没有实现对文件的打包压缩,所以我们也无需再单独去学习其他几个工具,tar 的解压和压缩都是同一个命令,只需参数不同,使用比较方便。
- 创建一个 tar 包:
- 解包一个文件(
-x
参数)到指定路径的已存在目录(-C
参数):
常用命令:
- zip:
- 打包 :zip something.zip something (目录请加 -r 参数)
- 解包:unzip something.zip
- 指定路径:-d 参数
- tar:
- 打包:tar -cf something.tar something
- 解包:tar -xf something.tar
- 指定路径:-C 参数
实验七 文件系统操作与磁盘管理
一、实验介绍
1.1 实验内容
本节实验的文件系统操作的内容十分简单,只会包含几个命令的几个参数的讲解,但掌握这些也将对你在学习 Linux 和实验楼后续其他课程的过程中有极大帮助。
1.2 实验知识点
df
,du
,mount
命令的使用- 磁盘相关知识学习
二、基本操作
2.1 查看磁盘和目录的容量
- 使用
df
命令查看磁盘的容量
- 使用
du
命令查看目录的容量
-d
参数指定查看目录的深度
三、简单的磁盘管理
3.1 创建虚拟磁盘
dd
命令用于转换和复制文件,不过它的复制不同于 cp
。之前提到过关于 Linux 的很重要的一点,一切即文件,在 Linux 上,硬件的设备驱动(如硬盘)和特殊设备文件(如 /dev/zero
和 /dev/random
)都像普通文件一样,只是在各自的驱动程序中实现了对应的功能,dd
也可以读取文件或写入这些文件。这样,dd
也可以用在备份硬件的引导扇区、获取一定数量的随机数据或者空数据等任务中。dd
程序也可以在复制时处理数据,例如转换字节序、或在 ASCII 与 EBCDIC 编码间互换。
dd
的命令行语句与其他的 Linux 程序不同,因为它的命令行选项格式为 选项=值,而不是更标准的 --选项 值 或 -选项=值。dd
默认从标准输入中读取,并写入到标准输出中,但可以用选项 if
(input file,输入文件)和 of
(output file,输出文件)改变
用 dd
命令从标准输入读入用户的输入到标准输出或者一个文件中
将输出的英文字符转换为大写再写入文件:
使用 dd 命令创建虚拟镜像文件
使用下面的命令来将我们的虚拟磁盘镜像格式化为 ext4
文件系统:
使用 mount
来查看下主机已经挂载的文件系统:
实验九 Linux任务计划crontab
一、实验介绍
1.1 实验内容
我们时常会有一些定期定时的任务,如周期性的清理一下 /tmp
,周期性的去备份一次数据库,周期性的分析日志等等。而且有时候因为某些因素的限制,执行该任务的时间会很尴尬。本课程将带你很好的利用 Linux 系统的计划工具。
1.2 实验知识点
- crontab 语法
启动 rsyslog
,以便我们可以通过日志中的信息来了解我们的任务是否真正的被执行了
启动crontab:
实验十 命令执行顺序控制与管道
1.1 实验内容
顺序执行、选择执行、管道、cut 命令、grep 命令、wc 命令、sort 命令等,高效率使用 Linux 的技巧。
1.2 实验知识点
cut
,grep
,wc
,sort
命令的使用- 管道的理解
顺序执行多条命令
简单的顺序执行:
三 管道
管道是一种通信机制,通常用于进程间的通信(也可通过 socket 进行网络通信),它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)
/etc/passwd
文件中以 :
为分隔符的第 1 个字段和第 6 个字段分别表示用户名和其家目录:
grep 命令,在文本中或 stdin 中查找匹配字符串: