●实验一
一、Linux是什么
Linux就是计算机一个操作系统类似于我们了解的 Windows(xp,7,8)和 Max OS
二、Linux的历史
三、Linux与Windows的差异
1、免费与收费
2、软件与支持
3、安全性
4、使用习惯
5、可定制性
6、应用范畴
7、Windows没有的
稳定的系统 安全性和漏洞的快速修补 多用户 用户和用户组的规划 相对较少的系统资源占用 可定制裁剪,移植到嵌入式平台(如安卓设备) 可选择的多种图形用户界 面(如 GNOME,KDE)
8、Linux没有的
没有特定的支持厂商 游戏娱乐支持度不足 专业软件支持度不足
四、如何学习Linux
学习心态
注重基础
●实验二 基本概念及操作
一、Linux 桌面环境介绍
在 Linux 上你可以自己选择安装不同的桌面环境,甚至可以定制自己的专属桌面
二、Linux终端
1、terminal(终端)
终端本质上是对应着 Linux 上的 /dev/tty 设备,Linux 的多用户登陆就是通过不同的 /dev/tty 设备完成的,Linux 默认提供了 6 个纯命令行界面的 “terminal”(准确的说这里应该是 6 个 virtual consoles)来让用户登录,在物理机系统上你可以通过使用[Ctrl]+[Alt]+[F1]~[F6]进行切换,不过在我们的在线实验环境中可能无法切换,因为特殊功能按键会被你主机系统劫持。当你切换到其中一个终端后想要切换回图形界面,你可以按下[Ctrl]+[Alt]+[F7]来完成
2、shell
Shell 是指“提供给使用者使用界面”的软件(命令解析器),类似于 DOS 下的 command(命令行)和后来的 cmd.exe。普通意义上的 Shell 就是可以接受用户输入命令的程序。它之所以被称作 Shell 是因为它隐藏了操作系统底层的细节。
3、命令行操作体验
1)重要快捷键
[TAB]:使用Tab键来进行命令补全,当忘记某个命令的全称时你可以只输入它的开头的一部分然后按下Tab键就可以得到提示或者帮助完成
[Ctrl+c]:立即停止并恢复到你可控的状态可以使用Ctrl+c键来强行终止当前程序并不会使终端退出
2)历史输入命令:键盘上的方向上键,恢复之前输入过的命令
3)学会使用通配符:通配符是一种特殊语句,主要有星号(*)和问号(?),用来对对字符串进行模糊匹配
shell常用通配符
4)学会在命令行中获取帮助
在 Linux 环境中,如果你遇到困难,可以使用man 命令,它是Manual page的缩写。要查看相应区段的内容,就在 man 后面加上相应区段的数字即可
NAME(名称) 该命令或函数的名称,接着是一行简介。
SYNOPSIS(概要) 对于命令,正式的描述它如何运行,以及需要什么样的命令行参数。对于函数,介绍函数所需的参数,以及哪个头文件包含该函数的定义。 DESCRIPTION(说明) 命令或函数功能的文本描述。
EXAMPLES(示例) 常用的一些示例。
SEE ALSO(参见) 相关命令或函数的列表。
●作业
toilet的应用
figlet的应用
●三、用户及文件权限管理
1、Linux用户管理
1)、查看用户
2)、创建用户
root 是 Linux 和 UNIX 系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作
要创建用户需要 root 权限就要用到 sudo 这个命令。使用这个命令有两个大前提,一是要知道当前登录用户的密码,二是当前用户必须在 sudo 用户组。
3)、用户组
使用groups:用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源。其中冒号之前表示用户,后面表示该用户所属的用户组。
查看/etc/group文件:cat 命令用于读取指定文件的内容并打印到终端输出
4)、删除用户
2、Linux文件权限
1)、查看文件权限
文件类型:Linux里一切皆文件。软链接等同于 Windows 上的快捷方式
文件权限:一个目录要同时具有读权限和执行权限才可以打开,而一个目录要有写权限才允许在其中创建其它文件
链接数:链接到该文件所在的 inode 结点的文件名数目
文件大小:以 inode 结点大小为单位来表示的文件大小,你可以给 ls 加上 -lh 参数来更直观的查看文件的大小。
2)、变更文件所有者
将iPhone文件从shiyanlou的用户名下转移到了jiayuan
3)、修改文件权限
二进制数字表示:每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)就对应这一个 "rwx",也就是一个 '7'
加减赋值操作:
作业:
添加用户
创建文件
增加权限
四、Linux 目录结构及文件基本操作
1、Linux目录结构
1)、Linux 的目录与 Windows 的目录的区别:一种不同是体现在目录与存储介质。Linux 是以树形目录结构的形式来构建整个系统的,可以理解为一个用户可操作系统 的骨架
FHS标准:文件系统层次结构标准。定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该要放置设置文件,/bin 与 /sbin 则应该 要放置可执行文件等等。 第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件、/usr/share 放置共享数据等等。
2)、目录路径
使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录, - 表示上一次所在目录,~ 通常表示当前用户的"home"目录。
使用 pwd 命令可以获取当前所在路径(绝对路径)。
绝对路径和相对路径:关于绝对路径,简单地说就是以根"/"目录为起点的完整路径,以你所要到的目录为终点。
相对路径,也就是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点
2、Linux 文件的基本操作
1)、新建文件:使用 touch 命令创建空白文件
新建目录:使用 mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性
2)、复制文件:使用cp(copy)命令复制一个文件或目录到指定目录
复制目录:要成功复制目录需要加上-r或者-R参数,表示递归复制,就是说有点“株连九族”的意思
3)、删除
删除文件:使用rm(remove files or directories)命令,删除一个文件或目录
删除目录:跟复制目录一样,要删除一个目录,也需要加上-r或-R参数
4)、移动文件与文件重命名
移动文件:使用mv(move or rename files)命令,移动文件(剪切)
文件重命名:将文件"file1"重命名为"myfile" mv 旧的文件名 新的文件名
5)、查看文件:使用cat,tac和nl命令查看文件。cat为正序显示,tac倒序显示
使用more和less命令分页查看文件
6)、查看文件类型:在 Linux 下面文件的类型不是根据文件后缀来判断的,我们通常使用file命令可以查看文件的类型
7)、编辑文件:vimtutor
3、作业
五、环境变量与文件查找
1、环境变量
1)、变量:所谓变量就是计算机中用于记录一个值的符号,而这些符号将用于不同的运算处理中。变量的作用域即变量的有效范围(比如一个函数中、一个源文件中或者全 局范围),在该范围内只能有一个同名变量。一旦离开则该变量无效,如同不存在这个变量一般。
环境变量就是作用域比自定义变量要大,如Shell 的环境变量作用于自身和它的子进程
通常我们会涉及到的环境变量有三种:
当前 Shell 进程私有用户自定义变量,如上面我们创建的 temp 变量,只在当前 Shell 中有效。 Shell 本身内建的变量。 从自定义变量导出的环境变量。
2)、命令的查找路径与顺序
3)、添加自定义路径到“PATH”环境变量:在前面我们应该注意到PATH里面的路径是以:作为分割符,所以我们可以这样添加自定义路径:
$ PATH=$PATH:/home/shiyanlou/mybin。注意这里一定要使用绝对路径
4)、修改和删除已有变量:
2、搜索文件:搜索相关的命令常用的有如下几个whereis,which,find,locate。
locate快而全。which小而精。find精而细
3、作业:数字雨
六、文件打包与压缩
1、zip压缩打包程序:-r参数表示递归打包包含子目录的全部内容,-q参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。
后面使用du命令查看打包后文件的大小
压缩级打包:注意:这里只能使用绝对路径,否则不起作用
2、使用unzip命令解压缩
3、rar打包压缩命令: rar也是 Windows 上常用的一种压缩文件格式,在 Linux 上可以使用rar和unrar工具分别创建和解压 rar 压缩包。
注意:rar 的命令参数没有-,如果加上会报错
4、tar打包工具:-c表示创建一个 tar 包文件,-f用于指定创建的文件名,注意文件名必须紧跟在-f参数之后
5、作业:火苗~ 并没有出现 command not found
七、文件系统操作与磁盘管理
简单的文件操作系统
1、查看磁盘和目录的容量:使用 df 命令查看磁盘的容量。du查看目录容量。
2、简单的磁盘管理
创建虚拟磁盘:dd命令,dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变。
bs(block size)用于指定块大小(缺省单位为 Byte,也可为其指定如'K','M','G'等单位),count用于指定块数量。使用和du和cat命令看到的写入完成文件
使用 dd 命令创建虚拟镜像文件:使用 mkfs 命令格式化磁盘
使用 mount 命令挂载磁盘到目录树,使用 unmount 命令卸载已挂载磁盘
使用 fdisk 为磁盘分区:
作业:
八、命令执行顺序控制与管道
1、命令执行顺序的控制
顺序执行多条命令:
有选择的执行:用which来查找是否安装某个命令。&&就是用来实现选择性执行的,它表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的 结果)返回0则执行后面的,否则不执行,你可以从$?环境变量获取上一次命令的返回结果:
2、管道:管道是一种通信机制,通常用于进程间的通信,它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。
cut 命令,打印每一行的某一字段:打印/etc/passwd文件中以:为分隔符的第1个字段和第6个字段分别表示用户名和其家目录
3、grep 命令,在文本中或 stdin 中查找匹配字符串:
grep命令的一般形式为: grep [命令选项]... 用于匹配的表达式 [文件]...
-r 参数表示递归搜索子目录中的文件,-n表示打印匹配项行号,-I表示忽略二进制文件。这个操作实际没有多大意义,但可以感受到grep命令的强大与实用
4、wc 命令,简单小巧的计数工具
wc 命令用于统计并输出一个文件中行、单词和字节的数目
5、sort排序命令:默认为字典排序: $ cat /etc/passswd | sort
反转排序: $ cat /etc/passwd | sort -r
按特定字段排序: $ cat /etc/passwd | sort -t':' -k 3
6、uniq 去重命令:uniq命令可以用于过滤或者输出重复行
作业:安装aview和imagemagick,用asciiview命令显示图片。图要存在shiyanlou目录下哦
九、简单的文本处理
文本处理命令
1、tr 命令:tr 命令可以用来删除一段文本信息中的某些文字。或者将其进行转换。tr [option]...SET1 [SET2]。
2、col命令:col 命令可以将Tab换成对等数量的空格建,或反转这个操作。-x 将Tab转换为空格 -h 将空格转换为Tab(默认选项)
3、join命令:join [option]... file1 file2
常用的选项有: -t 指定分隔符,默认为空格。 -i 忽略大小写的差异。 -1 指明第一个文件要用哪个字段来对比,默认对比第一个字段。 -2 指明第二个文件要用哪 个字段来对比,默认对比第一个字段
4、paste命令:paste这个命令与join 命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开。 使用方式: paste [option] file...
作业:
十、数据流重定向
1、简单的重定向:默认使用终端的标准输入作为命令的输入和标准输出作为命令的输出
管道默认是连接前一个命令的输出到下一个命令的输入,而重定向通常是需要一个文件来建立两个命令的连接
2、标准错误重定向:
3、使用tee命令同时重定向到多个文件:,除了将需要将输出重定向到文件之外也需要将信息打印在终端,那么你可以使用tee命令来实现
4、永久重定向:可以使用exec命令实现“永久”重定向。exec命令的作用是使用指定的命令替换当前的 Shell,及使用一个进程替换当前进程,或者指定新的重定向
5、创建输出文件描述符:默认在 Shell 中可以有9个打开的文件描述符,同样使用exec命令可以创建新的文件描述符
6、关闭文件描述符:如上面我们打开的3号文件描述符,可以使用如下操作将它关闭: $ exec 3>&- $ cd /dev/fd;ls -Al;cd -
7、完全屏蔽命令的输出 在 Linux 中有一个被成为“黑洞”的设备文件,所以导入它的数据都将被“吞噬”。 在类 UNIX 系统中,/dev/null,或称空设备,是一个特殊的设备文 件,它通常被用于丢弃不需要的输出流,或作为用于输入流的空文件,这些操作通常由重定向完成。读取它则会立即得到一个EOF。 我们可以利用设个/dev/null屏蔽命令 的输出: $ cat Documents/test.c~ nefile 1>/dev/null 2>&1 向上面这样的操作将使你得不到任何输出结果。
8、使用 xargs 分割参数列表 xargs 是一条 UNIX 和类 UNIX 操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问 题。 这个命令在有些时候十分有用,特别是当用来处理产生大量输出结果的命令如 find,locate 和 grep 的结果,详细用法请参看 man 文档。 $ cut -d: -f1 < /etc/passwd | sort | xargs echo 上面这个命令用于将/etc/passwd文件按:分割取第一个字段排序后,使用echo命令生成一个列表。
9、作业:
十一、正则表达式基础
1、正则表达式:正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。正则表达式通常缩写成“regex”,单数有 regexp、regex,复数有 regexps、 regexes、regexen。
1)、基本语法:选择 | 竖直分隔符表示选择,例如"boy|girl"可以匹配"boy"或者"girl"
数量限定 数量限定除了我们举例用的*,还有+加号,?问号,.点号,如果在一个模式中不加数量限定符则表示出现一次且仅出现一次
范围和优先级 ()圆括号可以用来定义模式字符串的范围和优先级,这可以简单的理解为是否将括号内的模式串作为一个整体。
语法 正则表达式有多种不同的风格,下面列举一些常用的作为 PCRE 子集的适用于perl和python编程语言及grep或egrep的正则表达式匹配规则
2、grep模式匹配命令
1)、基本操作:
2)、使用正则表达式
3、sed流编辑器:sed工具在 man 手册里面的全名为"sed - stream editor for filtering and transforming text ",意即,用于过滤和转换文本的流编辑器。
1)、sed常用参数介绍
常用参数及说明:
2)、sed编辑器的执行命令
sed操作举例:打印2~5行和打印奇数行
行内替换和行间替换:
4、awk文本处理语言
1)、awk介绍:它允许创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。最简单地说,AWK是一种 用于处理文本的编程语言工具。
2)、awk的一些基础概念:awk所有的操作都是基于pattern(模式)—action(动作)对来完成的,如: $ pattern {action}
awk处理文本的方式,是将文本分割成一些“字段”,然后再对这些字段进行处理,默认情况下,awk以空格作为一个字段的分割符
3)、awk命令基本格式:awk [-F fs] [-v var=value] [-f prog-file | 'program text'] [file...]
4)、awk操作体验:
十二、linux下软件安装
1、Linux上的软件安装
2、在线安装
1)、体验
2)、apt 包管理工具介绍:APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程
当你在执行安装操作时,首先apt-get 工具会在本地的一个数据库中搜索关于 w3m 软件的相关信息,并根据这些信息在相关的服务器上下载软件安装
3)、apt-get:apt-get使用各用于处理apt包的公用程序集,我们可以用它来在线安装、卸载和升级软件包等
4)、安装软件包:关于安装,如只需要执行apt-get install <软件包名>即可,除了这一点还应该掌握的是如何重新安装软件包。
可以使用如下方式重新安装: $ sudo apt-get --reinstall install w3m
5)、软件升级:
6)、软件卸载:
7)、软件搜索:sudo apt-cache search softname1 softname2 softname3……
3、使用 dpkg 从本地磁盘安装 deb 软件包
1)、dpkg 是 Debian 软件包管理器的基础,被用于安装、卸载和供给和 .deb 软件包相关的信息。 dpkg 本身是一个底层的工具。
2)、使用dpkg安装deb软件包
3)、查看已安装软件包的安装目录:使用dpkg -L查看deb包目录信息
4、从二进制包安装:二进制包的安装比较简单,我们需要做的只是将从网络上下载的二进制包解压后放到合适的目录,然后将包含可执行的主程序文件的目录添加进PATH 环境变量即可,如果你不知道该放到什么位置,请重新复习第四节关于 Linux 目录结构的内容。
作业:
遇到的问题
刚开始不能完全理解Linux,对各种命令和写法不太熟悉。我觉得第一周留的实验任务太重,所以不能及时消化理解每一个实验学到的东西,在质量与速度上并不能做到两全其美。这次的实验报告格式内容都没有把握对,好多内容没有及时加进去,希望在接下来的学习中可以改进,也希望接下来的学习任务不要过重,讲究效率,为了完成任务去做实验是没有意义的。