学习计时:共17小时
读书:2小时
代码:6小时
作业:7小时
博客:2小时
任务一:
Linux系统简介
Linux是一个操作系统,也就是系统调用和内核两层,还包括一些运行上的应用程序。
Linux本身只是操作系统的内核。
内核是使其他程序能够运行的基础,它实现了多任务和硬件管理。
其中有些程序是必需的,比如命令行解释器,Linux没有自己开发这些应用程序,而是使用已有的自由软件,减少了工作量。
Linux和Windows的区别:
1.Linux免费,Windows收费
2.Linux大都为开源自由软件,部分软件质量和体验欠缺;Windows由微软官方提供支持,数量和质量有优势
3.Linux比Windows安全
4.Linux兼具图形界面操作和完全命令行操作,可只用键盘完成一切操作;Windows普通用户基本是纯图形界面操作,依靠鼠标和键盘完成一切
5.Linux想怎么做就怎么做;Windows全封闭,可定制性差
6.大多数软件和服务都运行在Linux之上
任务二:
基本概念及操作
一、Linux桌面环境介绍
Linux上的这套软件是xorg,是通过X窗口系统实现的
实验楼目前使用XFCE桌面环境
我们使用Linux时,是通过一个叫做Shell的中间程序来完成的,还提供了一个叫做终端服务模拟器的程序(Terminal),xfce桌面环境自带xfce-terminal。
Linux提供了6个纯命令界面的terminal,在物理机上可用ctrl+alt+F1~F7进行切换,但在线试验环境无法切换,当想要切换回图形界面,按ctrl+alt+F7
二、常见shell命令及快捷键
Shell:有壳就有核,核是指UNIX/Linux内核,壳是指命令解析器,就是可用接受用户输入命令的程序
快捷键:
1.Tab:命令补全(输入命令全称的开头部分之后得到提示),还可补全目录和命令参数
3.利用历史输入命令:键盘的上键
4.通配符:主要是*和?,对字符串进行模糊匹配,主要出现在命令的参数值里
要看相应区段的内容,就在后面加上相应区段的数字
可以在man中进行搜索,查找到后用n键切换到下一个关键字,shift+n上一个关键字所在处,空格翻页,回车向下滚一行,h显示帮助,q退出。
也可以用--help参数
三、Linux使用小技巧(作业)
任务三:
用户及文件权限管理
一、Linux用户管理
1.查看用户
输入who am i打开当前伪终端的用户的用户名,whoami则是当前登录用户的用户名。
pts/0
中 pts
表示伪终端,在图形用户界面使用 /dev/tty7
时每打开一个终端就会产生一个伪终端, pts/0
后面的数字表示打开的伪终端序号,第三列表示当前伪终端的启动时间。
其他参数
2.创建用户
要创建用户需要root权限
sudo命令 前提:1.要知道当前登录用户密码 2.当前用户必须在sudo用户组
退出可以用exit命令或者ctrl+d
3.用户组
一组用户的集合,共享资源和权限,同时拥有私有资源
方法一:使用groups命令
方法二:查看/etc/group文件
| sort:将读取的文本进行一个字典排序再输出
/etc/group 的内容包括用户组(Group)、用户组口令、GID 及该用户组所包含的用户(User),每个用户组一条记录。格式如下:
group_name:password:GID:user_list
将其他用户加入sudo用户组
usermod命令:使用者必须有root权限
4.删除用户
二、Linux文件权限
1.查看文件权限
文件类型:Linux里面一切皆文件(设备文件,socket,pipe,软链接,硬链接)
文件权限:执行文件,通常指可以运行的二进制程序文件或者脚本文件,一个目录要同时具有读权限和执行权限才可以打开,而一个目录要有写权限才允许在其中创建其它文件
链接数:链接到该文件所在的 inode 结点的文件名数目
文件大小:以 inode 结点大小为单位来表示的文件大小
ls命令的其他用法:显示除了 '.'(当前目录),'..' 上一级目录之外的所有包含隐藏文件
2.变更文件使用者
3.修改文件权限
方法一:二进制数字表示
每个文件都有三组权限:拥有者,所属用户组,其他用户
方法二:加减赋值操作
'g''o'还有'u',分别表示group,others,user,'+','-' 就分别表示增加和去掉相应的权限。
作业:
添加一个用户loutest
,使用sudo
创建文件/opt/forloutest
,设置成用户loutest
可以读写
任务四
Linux任务结构及文件基本操作
一、Linux目录结构
Linux和Windows存储结构的不同:Linux以目录为主,Windows以存储介质为主
Linux以树形目录结构的形式来构建整个系统
1.FHS标准
FHS:文件系统层次结构标准
多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理
FHS 定义了两层规范:
第一层: / 下面的各个目录放什么文件数据,( /etc 应该放置设置文件,/bin 与 /sbin 应该放置可执行文件)
第二层:针对 /usr 及 /var 这两个目录的子目录来定义。( /var/log 放置系统登录文件、/usr/share 放置共享数据)
将目录定义为四种交互形式的形态
2.目录路径
使用 cd
命令可以切换目录
.
表示当前目录
..
表示上一级目录
-
表示上一次所在目录
~
通常表示当前用户的"home"目录
使用 pwd
命令可以获取当前所在路径(绝对路径)
绝对路径:以根"/"目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin
,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。
相对路径:相对于你当前的目录的路径,以当前目录 .
为起点,以你所要到的目录为终点,表现形式如: usr/local/bin
二、Linux文件基本操作
1.新建:
新建文件:使用touch命令新建空白文件(不会覆盖同名文件)
新建目录:使用 mkdir
命令创建一个空目录,可同时指定创建目录的权限属性。使用 -p
参数,同时创建父目录
2.复制:
复制文件:使用cp
命令复制一个文件或目录到指定目录
复制目录:要成功复制目录需要加上-r
或者-R
参数,表示递归复制
3.删除:
删除文件:使用rm
命令,删除一个文件或目录
删除一些为只读权限的文件,直接使用rm
删除会显示一个提示
想忽略这提示,直接删除文件,可以使用-f
参数强制删除
删除目录:要删除一个目录,也需要加上-r
或-R
参数
4.移动文件与文件重命名
移动文件:使用mv
命令,移动文件(剪切)
重命名文件:mv 旧的文件名 新的文件名
批量重命名:rename(rename
是先使用第二个参数的通配符匹配所有后缀为.txt
的文件,然后使用第一个参数提供的正则表达式将匹配的这些文件的.txt
后缀替换为.c)
5.查看文件
cat
,tac
和nl
命令查看文件这两个命令都是用来打印文件内容到标准输出(终端),其中cat
为正序显示,tac
倒序显示。可以加上-n
参数显示行号。
nl
命令,添加行号并打印
more
和less
命令分页查看文件可以使用Enter
键向下滚动一行,使用Space
键向下滚动一屏,按下h
显示帮助,q
退出。
head
和tail
命令查看文件只看一行, 加上-n
参数,后面紧跟行数
6.查看文件类型
file
命令可以查看文件的类型
7.编辑文件
vimtutor
作业:
任务五
环境变量与文件查找
一、环境变量
1.变量
所谓变量就是计算机中用于记录一个值(不一定是数值,也可以是字符或字符串)的符号
变量的作用域即变量的有效范围(比如一个函数中、一个源文件中或者全局范围),在该范围内只能有一个同名变量。一旦离开则该变量无效,如同不存在这个变量一般。
变量名只能是英文字母,数字或者下划线,且不能以数字作为开头
2.环境变量
通常我们会涉及到的环境变量有三种
与环境变量相关的命令
3.命令的查找路径与顺序
通过环境变量PATH进行搜索
4.添加自定义路径到“PATH”环境变量
一定要使用绝对路径
>>
表示将标准输出以追加的方式重定向到一个文件中
>
是以覆盖的方式重定向到一个文件中
5.修改和删除已有变量
可以使用unset
命令删除一个环境变量
6.如何让环境变量立即生效
使用source
命令来让其立即生效(source
命令有一个别名是.)
二、搜索文件
与搜索相关的命令常用的有如下几个whereis
,which
,find
,locate
whereis
只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s)
locate可以用来查找指定目录下的不同文件类型,它不只是在 etc 目录下查找并会自动递归子目录进行查找
通常使用which
来确定是否安装了某个指定的软件,因为它只从PATH
环境变量指定的路径中去搜索命令
find功能最强大
find 命令的路径是作为第一个参数的, 基本命令格式为 find [path] [option] [action]
与时间有关的命令参数
-mtime n
: n 为数字,表示为在n天之前的”一天之内“修改过的文件
-mtime +n
: 列出在n天之前(不包含n天本身)被修改过的文件
-mtime -n
: 列出在n天之前(包含n天本身)被修改过的文件
newer file
: file为一个已存在的文件,列出比file还要新的文件名
作业:
数字雨
任务六
文件打包与压缩
一、文件打包与解压缩
*.zip
,*.rar
,*.7z,
*.gz
,*.xz
,*.bz2
,*.tar
,*.tar.gz
,*.tar.xz
,*tar.bz2
1.zip压缩打包程序
-r
参数表示递归打包包含子目录的全部内容
-q
参数表示为安静模式,即不向屏幕输出信息
-o
,表示输出文件,需在其后紧跟打包输出文件名
du
命令查看打包后文件的大小
添加一个参数用于设置压缩级别-[1-9]
,1表示最快压缩但体积大,9表示体积最小但耗时最久。
-x
是为了排除上一次创建的 zip 文件
使用-e
参数可以创建加密压缩包
2.使用unzip命令解压缩zip文件
如果不想解压只想查看压缩包的内容可以使用-l
参数
使用-O
(英文字母,大写o)参数指定编码类型
3.rar打包压缩命令
使用a
参数添加一个目录~
到一个归档文件中,如果该文件不存在就会自动创建。
4.tar打包工具
-c
表示创建一个 tar 包文件
-f
用于指定创建的文件名
-v
参数以可视的的方式输出打包的文件
-P
保留绝对路径符
作业:火炉
任务七
文件系统操作与磁盘管理
一、简单文件系统操作
1.查看磁盘和目录的容量
使用df命令查看磁盘容量
roofts:它作为系统启动时内核载入内存之后,在挂载真正的的磁盘之前的一个临时文件系统。通常的主机会在系统启动后用磁盘上的文件系统替换,只是在一些嵌入式系统中会只存在一个 rootfs
物理主机上的 /dev/sda2 是对应着主机硬盘的分区,后面的数字表示分区号,数字前面的字母 a 表示第几块硬盘
使用du命令查看目录的容量
二、简单的磁盘管理
1.创建虚拟磁盘
dd
命令用于转换和复制文件
它的命令行选项格式为选项=值
dd
默认从标准输入中读取,并写入到标准输出中
bs
用于指定块大小
count
用于指定块数量
使用dd命令创建虚拟镜像文件
使用mkfs命令格式化磁盘
使用mount命令挂载磁盘到目录树
在 Linux/UNIX 的机器上打开一个文件以前,包含该文件的文件系统必须先进行挂载的动作,此时用户要对该文件系统执行 mount 的指令以进行挂载
每一行最前面是设备名,然后是 on 后面是挂载点,type 后面表示文件系统类型,再后面是挂载选项
mount
命令的一般格式如下:
mount [options] [source] [directory]
使用umount命令卸载已挂载磁盘
由于环境的问题,无法挂载成功
使用fdisk为磁盘分区
在进行操作前首先应先规划好分区方案
操作完成后输入p
查看结果
最后输入w
写入分区表
使用losetup命令建立镜像与回环设备的关联
使用mkfs
格式化各分区,格式化之前,我们还要为各分区建立虚拟设备的映射,用到kpartx
工具
作业:cowsay
任务八
命令执行顺序控制与管道
一、命令执行顺序的控制
1.顺序执行多条命令
2.有选择的执行命令
问题:比如上面我们是&&
在前||
在后,反过来可以么?会不会有问题?
会有问题,因为优先级的问题,不可以反过来
二、管道
管道是一种通信机制,通常用于进程间的通信
它表现出来的形式就是将前面每一个进程的输出直接作为下一个进程的输入
1.试用
2.cut命令,打印每一行的某一字段
3.grep命令,在文本中或stdin中查找匹配字符串
grep
命令的一般形式为:
grep [命令选项]... 用于匹配的表达式 [文件]...
-r
参数表示递归搜索子目录中的文件
-n
表示打印匹配项行号
-I
表示忽略二进制文件
4.wc命令,简单小巧的计数工具
5.sort排序命令
-t
参数用于指定字段的分隔符
以":"作为分隔符
-k 字段号
用于指定对哪一个字段进行排序
如果要按照数字排序就要加上-n
参数
6.unip去重命令
uniq
命令可以用于过滤或者输出重复行
使用history
命令查看最近执行过的命令
uniq
命令只能去连续重复的行,不是全文去重
输出重复行
作业:
使用以前介绍过的方法,安装aview
和imagemagick
,然后用asciiview
命令显示图片,使用方法可以用 man 命令查看。
由于无法把图片下载到虚拟机里,结果无法显示
任务九
简单的文本处理
一、常用的文本处理命令
二、文本处理命令
1.tr命令
tr 命令可以用来删除一段文本信息中的某些文字,或者将其进行转换
tr [option]...SET1 [SET2]
2.col命令
col 命令可以将Tab
换成对等数量的空格建,或反转这个操作
使用方法:
col [option]
3.join命令
用于将两个文件中包含相同内容的那一行合并在一起
使用方式:
join [option]... file1 file2
4.pasta命令
paste
这个命令与join
命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起,以Tab
隔开
使用方式:
paste [option] file...
作业:小蜜蜂
任务十
数据流重定向
一、数据流重定向
1.简单的重定向
Linux 默认提供了三个特殊设备,用于终端的显示和输出,分别为stdin
(标准输入,对应于你在终端的输入),stdout
(标准输出,对应于终端的输出),stderr
(标准错误输出,对应于终端的输出)
文件描述符在形式上是一个非负整数
它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表
2.标准错误重定向
将标准错误重定向,标准输出和标准错误都被指向伪终端的屏幕显示
应该在输出重定向文件描述符前加上&
3.使用tee命令同时重定向多个文件
4.永久定向性
使用exec
命令实现“永久”重定向
exec
命令的作用是使用指定的命令替换当前的 Shell,及使用一个进程替换当前进程,或者指定新的重定向
5.创建输出文件描述符
默认在 Shell 中可以有9个打开的文件描述符
6.关闭文件描述符
7.完全屏蔽命令的输出
利用设/dev/null
屏蔽命令的输出,将使你得不到任何输出结果
使用xargs分割参数列表
xargs 是一条 UNIX 和类 UNIX 操作系统的常用命令。
它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题
作业:
任务十一
正则表达式基础
一、正则表达式
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本
基本语法:
一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列符合某个句法规则的字符串。
|
竖直分隔符表示选择
数量限定除了*
,还有+
加号,?
问号,.
点号,如果在一个模式中不加数量限定符则表示出现一次且仅出现一次
+
表示前面的字符必须出现至少一次(1次或多次)
?
表示前面的字符最多出现一次(0次或1次)
*
星号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)
()
圆括号可以用来定义模式字符串的范围和优先级
PCRE是一个用 C 语言编写的正则表达式函数库
优先级:
二、grep模式匹配命令
1.基本操作
grep
命令用于打印输出文本中匹配的模式串,它使用正则表达式作为模式匹配的条件
grep
支持三种正则表达式引擎,分别用三个参数指定
2.使用正则表达式
三、sed流编辑器
sed流编辑器是一个非交互式的编辑器
sed 命令基本格式
sed [参数]... [执行命令] [输入文件]...
sed编辑器的执行命令
sed执行命令格式
[n1][,n2]command
[n1][~step]command
n1,n2表示输入内容的行号
它们之间为,
逗号则表示从n1到n2行,如果为~
波浪号则表示从n1开始以step为步进的所有行
command为执行动作
行内替换
行间替换
四、awk文本处理语言
1.awk介绍
AWK
是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一
功能:
创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表
AWK是一种用于处理文本的编程语言工具
2.awk的一些基本概念
形式:
$ pattern {action}
awk
处理文本的方式,是将文本分割成一些“字段”,然后再对这些字段进行处理
3.awk命令基本格式
awk [-F fs] [-v var=value] [-f prog-file | 'program text'] [file...]
-F
参数用于预先指定字段分隔符
-v
用于预先为awk
程序指定变量
-f
参数用于指定awk
命令要执行的程序文件,或者在不加-f
参数的情况下直接将程序语句放在这里
最后为awk
需要处理的文本输入,且可以同时输入多个文本文件
作业:
任务十二
Linux下软件安装
通常 Linux 上的软件安装主要有三种方式:
在线安装
从磁盘安装deb软件包
从二进制软件包安装
从源代码编译安装
在安装一个软件之后,无法立即使用Tab
键补全这可命令,先执行source ~/.zshrc
,然后就可以使用补全操作
APT是Debian及其派生发行版的软件包管理器,APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程
这个包管理器包含以 apt-
开头的的多个工具,如 apt-get
apt-cache
apt-cdrom
等
apt-get
使用各用于处理apt
包的公用程序集,可以在线安装、卸载和升级软件包等
常用参数:
重新安装:
$ sudo apt-get --reinstall install w3m
软件升级:
# 更新软件源
$ sudo apt-get update
# 升级没有依赖问题的软件包
$ sudo apt-get upgrade
# 升级并解决依赖关系
$ sudo apt-get dist-upgrade
卸载软件:
软件搜索:
sudo apt-cache search softname1 softname2 softname3……
使用dpkg从本地磁盘安装deb软件包
dpkg 是 Debian 软件包管理器的基础
apt-get
加上-d
参数只下载不安装
作业:
遇到的问题:
1.后来新建Documents即可
2.并无法显示black,未找到原因
3.权限不够,并未找到原因
4.由于不知道如何将图片保存于虚拟机,有一个显示照片的作业没有做出来
心得体会:
感觉接触到了好厉害的东西,但是一下子学习了太多,掌握起来也相对困难,容易遗忘,今后还要多加练习才行
最喜欢的是每堂课布置的作业,很有趣,好像打开了新世界的大门,不过那个游戏有点没玩明白