2019-2020-1 20199319《Linux内核原理与分析》第一周作业
一、Linux系统简介
通过实验一了解了Linux 的历史,Linux与windows之间的区别以及学习Linux的方法。因为一直用的都是windows系统,习惯了图形界面,而Linux是通过输入命令执行操作,所以初学还很不适应。正如那句话说的windows能做的Linux都能做,windows不能做的Linux也能做,以后慢慢体会Linux的强大。
二、基本概念及操作
本节对Linux桌面环境进行了介绍,体验了一些基本的命令行操作,还有很多有趣的命令。
1、banner输出图形字符,不过只能输出大写?
2、toilet输出结果可以是小写。
3、用figlet输出图形字符。
三、用户文件权限管理
学习了如何在Linux中创建、删除用户及用户组以及设置文件权限。
1、新建用户lilei:
2、切换用户:
3、默认情况下新创建的用户不具备 root 权限,也不在 sudo 用户组,可以给新用户分组并获得root 权限:
4、删除用户:
5、如果你有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改:
四、Linux 目录结构及文件基本操作
在本节中学习了Linux 文件的目录结构,并且对文件的新建、删除、移动、复制、重命名等基本操作进行了练习。
1、创建一个 homework 目录,建立名为 1.txt~10.txt 文件,并删除 1.txt~5.txt 。
2、Linux 的日志文件在哪个目录
Linux的日志文件在/var/log中。
3、xeyes召唤一双眼睛也很有趣,不过召唤出来之后怎么关掉呢(T_T)
五、环境变量与文件查找
在本节中学习了环境变量的作用与用法以及几种搜索文件的方法。
1、环境变量
在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,除了创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。Shell程序也作为一个进程运行在操作系统之上,而我们在Shell中运行的大部分命令都将以Shell的子进程的方式运行。
三种环境变量类型:
- 当前Shell进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前Shell中有效。
- Shell本身内建的变量。
- 从自定义变量导出的环境变量。
与上述三种环境变量相关的命令:set,env,export。这三个命令很相似,都是用于打印环境变量信息,区别在于涉及的变量范围不同。 - set:显示当前Shell所有变量,包括其内建环境变量(与Shell外观等相关),用户自定义变量及导出的环境变量。
- env:显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
- export:显示从Shell中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。
两个重要文件 :/etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile。它们分别存放的是 shell 变量和环境变量。这个 .profile 只对当前用户永久生效。而写在 /etc/profile 里面的是对所有用户永久生效,所以如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量就好啦。
2、命令的查找路径与顺序
创建hello_shell.sh和hello_world.c文件,在 /home/shiyanlou 目录创建一个 mybin 目录,并将上述 hello_shell.sh 和 hello_world 文件移动到其中,在 mybin 目录中分别运行你刚刚创建的两个程序:
回到上一级目录,也就是 shiyanlou 家目录,当再想运行那两个程序时,会发现提示命令找不到,除非加上命令的完整路径。
3、添加自定义路径到“ PATH ”环境变量
就可以在任意目录执行那两个命令了
4、修改和删除已有变量
变量修改的几种方式:
- ${变量名#匹配字串}:从头向后开始匹配,删除符合匹配字串的最短数据
- ${变量名##匹配字串}:从头向后开始匹配,删除符合匹配字串的最长数据
- ${变量名%匹配字串}:从尾向前开始匹配,删除符合匹配字串的最短数据
- ${变量名%%匹配字串}:从尾向前开始匹配,删除符合匹配字串的最长数据
- ${变量名/旧的字串/新的字串}:将符合旧字串的第一个字串替换为新的字串
- ${变量名//旧的字串/新的字串}:将符合旧字串的全部字串替换为新的字串
变量删除:
可以使用 unset 命令删除一个环境变量
5、如何让环境变量立即生效
可以使用 source 命令来让环境变量立即生效,source 命令还有一个别名就是 .
6、搜索文件
与搜索相关的命令常用的有 whereis,which,find 和 locate 。
7、cmatrix"数字雨"的速度可以调吗,感觉自己出来的效果很卡顿。
六、文件打包与解压缩
1、zip 压缩打包程序
将目录 /home/shiyanlou/Desktop 打包成一个文件,并查看了打包后文件的大小和类型。-r 参数表示递归打包包含子目录的全部内容,-q 参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。后面使用 du 命令查看打包后文件的大小
设置压缩级别为 9 和 1(9 最大,1 最小),重新打包
用 du 命令分别查看默认压缩级别、最低、最高压缩级别及未压缩的文件的大小
创建加密 zip 包
2、使用 unzip 命令解压缩 zip 文件
使用安静模式,将文件解压到指定目录,如果你不想解压只想查看压缩包的内容你可以使用 -l 参数:
3、tar 打包工具
创建一个 tar 包,然后解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数)
只查看不解包文件 -t 参数
在创建 tar 文件的基础上添加 -z 参数,使用 gzip 来压缩文件
解压 *.tar.gz 文件
4、aafire
七、文件系统操作与磁盘管理
1、基本操作
使用 df 命令查看磁盘的容量
使用 du 命令查看目录的容量
- du -h #同--human-readable 以K,M,G为单位,提高信息的可读性。
- du -a #同--all 显示目录中所有文件的大小。
- du -s #同--summarize 仅显示总计,只列出最后加总的值。
2、创建虚拟磁盘
dd命令用于转换和复制文件,dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变。
将输出的英文字符转换为大写再写入文件:
从/dev/zero设备创建一个容量为 256M 的空文件
使用 mkfs 命令格式化磁盘
使用 mount 命令挂载磁盘到目录树,户在 Linux/UNIX 的机器上打开一个文件以前,包含该文件的文件系统必须先进行挂载的动作,此时用户要对该文件系统执行 mount 的指令以进行挂载。输出的结果中每一行表示一个设备或虚拟设备,每一行最前面是设备名,然后是 on 后面是挂载点,type 后面表示文件系统类型,再后面是挂载选项。
使用 umount 命令卸载已挂载磁盘
使用 fdisk 为磁盘分区
为各分区建立虚拟设备的映射,用到kpartx工具
将其全部格式化为 ext4
格式化完成后在/media目录下新建四个空目录用于挂载虚拟磁盘
3、cowsay
八、Linux下的帮助命令
1、内建命令与外部命令
内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等
可以使用 type 命令来区分命令是内建的还是外部的
2、help命令
help 命令只能用于显示内建命令的帮助信息,外部命令基本上都有一个参数--help,这样就可以得到相应的帮助
3、man命令
man 没有内建与外部命令的区分,得到的内容比用 help 更多更详细,输入man ls命令结果如下:
打开手册之后我们可以通过 pgup 与 pgdn 或者上下键来上下翻看,可以按 q 退出当前页面
4、info命令
info 来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息,所以得到的信息比 man 还要多。若 man 页包含的某个工具的概要信息在 info 中也有介绍,那么 man 页中会有“请参考 info 页更详细内容”的字样。