第一节 Linux系统简介
Linux——操作系统
1、使多个用户从不同的终端同时操作主机(分时操作系统);
2、MINIX是一个功能有限的类似于UNIX的操作系统(UNIX 实现了 TCP/IP 协议栈);
3、Linux 本身只是操作系统的内核。
4、内核是使其他程序能够运行的基础。它实现了多任务和硬件管理,用户或者系统管理员交互运行的所有程序实际上都运行在内核之上。
5、一些必需的程序:命令行解释器(shell)——用于用户交互和编写 shell 脚本(.bat文件)。
6、平台大都为开源软件。对于一些应用程序没有自己开发,更快捷的改写内核,使得程序更容易在Linux上运行。
7、兼具图形界面操作。
第二节 基本概念及操作
一、Linux桌面环境介绍
1、在 Linux 上你可以自己选择安装不同的桌面环境,甚至可以定制自己的专属桌面。
2、命令行操作体验
(1)Tab键:进行命令补全(只输入某个命令的开头的一部分然后按下Tab键就可以得到提示或者帮助完成)
(2)Ctrl+C键:当错误的使用了一个命令,光标在闪烁无法继续输入命令,或者不停地在输出一大堆你不想要的结果时,立即停止并恢复到你可控的状态,强行终止当前程序。
(3)其他一些常用快捷键
按键 |
作用 |
Ctrl+d |
键盘输入结束或退出终端 |
Ctrl+s |
暂定当前程序,暂停后按下任意键恢复运行 |
Ctrl+z |
将当前程序放到后台运行,恢复到前台为命令fg |
Ctrl+a |
将光标移至输入行头,相当于Home键 |
Ctrl+e |
将光标移至输入行末,相当于End键 |
Ctrl+k |
删除从光标所在位置到行末 |
Alt+Backspace |
向前删除一个单词 |
Shift+PgUp |
将终端显示向上滚动 |
Shift+PgDn |
将终端显示向下滚动 |
(4)“上”键:恢复之前输入过的命令
(5)通配符:一种特殊语句,主要有星号(*)和问号(?),用来对对字符串进行模糊匹配(比如文件名,参数名)。
1.当查找文件夹时,或者当不知道真正字符或者懒得输入完整名字时,可以使用它来代替一个或多个真正字符。
2.通配符 实际上就是一种 Shell 实现的路径扩展功能。在 通配符被处理后, Shell 会先完成该命令的重组,然后再继续处理重组后的命令,直至执行该命令。
3.使用 touch 命令创建文件
4.Shell 常用通配符:
字符 |
含义 |
* |
匹配 0 或多个字符 |
? |
匹配任意一个字符 |
[list] |
匹配 list 中的任意单一字符 |
[!list] |
匹配 除list 中的任意单一字符以外的字符 |
[c1-c2] |
匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] |
{string1,string2,...} |
匹配 sring1 或 string2 (或更多)其一字符串 |
{c2..c2} |
匹配 c1-c2 中全部字符 如{1..10} |
第三节 用户及文件权限管理
一、Linux 用户管理
Linux 是一个可以实现多用户登陆的操作系统,不同的两个人分别有自己的用户空间,用于存放各自的文件。但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于Linux 的 用户管理 和 权限机制 ,不同用户不可以轻易地查看、修改彼此的文件。
1.查看用户
第一列:表示打开当前伪终端的用户的用户名,要查看当前登录用户的用户名,去掉空格直接使用 whoami即可。
第二列: pts/0中 pts 表示伪终端,所谓伪是相对于 /dev/tty设备而言的(“真终端”---[Ctrl]+[Alt]+[F1]~[F7]进行切换的 /dev/tty设备;伪终端---当你在图形用户界面使用 /dev/tty7时每打开一个终端就会产生一个伪终端)
who 命令其它常用参数
参数 |
说明 |
-a |
打印能打印的全部 |
-d |
打印死掉的进程 |
-m |
同am i,mom likes |
-q |
打印当前登录用户数及用户名 |
-u |
打印当前登录用户登录信息 |
-r |
打印运行等级 |
2.创建用户
(1)root 是Linux 和 UNIX 系统中的超级管理员用户帐户
(2)sudo命令:1.两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo
用户组。2.不但可以添加用户到系统,同时也会默认为新用户创建home 目录。
操作截图:
(3)退出当前用户跟退出终端一样可以使用 exit命令或者使用快捷键 Ctrl+d
3.用户组
(1)如何知道自己属于哪些用户组呢?
方法一:使用groups命令
冒号之前表示用户,后面表示该用户所属的用户组
方法二:查看/etc/group文件
cat 命令:用于读取指定文件的内容并打印到终端输出
| sort :将读取的文本进行一个字典排序再输出
/etc/group 的内容包括用户组(Group)、用户组口令、GID 及该用户组所包含的用户(User),每个用户组一条记录。
(2)将其它用户加入 sudo 用户组
默认情况下新创建的用户是不具有 root 权限的,也不在 sudo 用户组,可以让其加入sudo用户组从而获取 root 权限。
4.删除用户
二、Linux 文件权限
1.查看文件权限
ls 命令:列出并显示当前目录下的文件。
drwxr-xr-x:文件类型和权限
3(或2...):链接数
shiyanlou:所属用户组
4096:文件大小
9月 19 22:35 :最后的修改时间
Desktop:文件名
文件类型:
/dev 目录下有各种设备文件,大都跟具体的硬件设备相关。
文件权限:
cat <file name> 命令:读取某个文件的内容,读权限
文件大小:
给 ls 加上 -lh 参数来更直观的查看文件的大小。
以'.' 开头的文件为隐藏文件。
2.变更文件所有者
3.修改文件权限
方式一:二进制数字表示
方式二:加减赋值操作
'g''o'还有'u',分别表示group,others,user,'+','-' 就分别表示增加和去掉相应的权限。
第四节 Linux 目录结构及文件基本操作
一、Linux 目录结构
1.FHS 标准:文件系统层次结构标准。定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。
FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该要放置设置文件,/bin 与 /sbin 则应该要放置可执行文件等等。
第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件、/usr/share 放置共享数据等等。
2.目录路径
cd 命令可以切换目录; . 表示当前目录;.. 表示上一级目录; ls -a 命令查看隐藏文件; - 表示上一次所在目录;~ 通常表示当前用户的"home"目录;pwd 命令可以获取当前所在路径(绝对路径)。
二、Linux 文件的基本操作
1.新建
新建空白文件
touch 命令创建空白文件,在不加任何参数的情况下,只指定一个文件名,则可以创建一个为指定文件名的空白文件。
新建目录
使用 mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性
2.复制
复制文件:使用cp(copy)命令复制一个文件或目录到指定目录。
复制目录:使用cp命令,需要加上-r或者-R参数,表示递归复制。
(必须要返回到根目录才能进行复制)
3.删除
删除文件:使用rm(remove files or directories)命令,删除一个文件或目录。
删除目录:需要加上-r或-R参数
4.移动文件与文件重命名
移动文件:使用mv(move or rename files)命令,移动文件(剪切)。
重命名文件
批量重命名:rename命令(先使用第二个参数的通配符匹配所有后缀为.txt的文件,然后使用第一个参数提供的正则表达式将匹配的这些文件的.txt后缀替换为.c)
5.查看文件
使用cat,tac和nl命令查看文件。cat为正序显示,tac倒序显示。
标准输入文件(stdin),默认对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应被重定向到终端的屏幕,以便我们能直接看到输出内容。
nl命令,添加行号并打印
Enter键向下滚动一行,使用Space键向下滚动一屏,按下h显示帮助,q退出。
使用head和tail命令查看文件。
more命令比较简单,只能向一个方向滚动
6.查看文件类型
file命令可以查看文件的类型;
7.编辑文件
直接使用 Linux 内部的 vim 学习教程,输入如下命令即可开始:$ vimtutor
三、作业
第五节 环境变量与文件查找
一、环境变量
1.变量
declare命令:创建变量;
$符号用于表示引用一个变量的值
2.环境变量
命令 |
说明 |
set |
显示当前 Shell 所有环境变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量 |
env |
显示与当前用户相关的环境变量,还可以让命令在指定环境中运行 |
export |
显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量 |
3.命令的查找路径与顺序
PATH里面就保存了Shell中执行的命令的搜索路径。
5.修改和删除已有变量
变量修改
变量的修改有以下几种方式:
变量设置方式 |
说明 |
${变量名#匹配字串} |
从头向后开始匹配,删除符合匹配字串的最短数据 |
${变量名##匹配字串} |
从头向后开始匹配,删除符合匹配字串的最长数据 |
${变量名%匹配字串} |
从尾向前开始匹配,删除符合匹配字串的最短数据 |
${变量名%%匹配字串} |
从尾向前开始匹配,删除符合匹配字串的最长数据 |
${变量名/旧的字串/新的字串} |
将符合旧字串的第一个字串替换为新的字串 |
${变量名//旧的字串/新的字串} |
将符合旧字串的全部字串替换为新的字串 |
使用unset命令删除一个环境变量
6.如何让环境变量立即生效
source命令别名就是.,注意与表示当前路径的那个点区分开;
第六节 文件打包与压缩
一、文件打包和解压缩
文件后缀名 |
说明 |
*.zip |
zip程序打包压缩的文件 |
*.rar |
rar程序压缩的文件 |
*.7z |
7zip程序压缩的文件 |
*.tar |
tar程序打包,未压缩的文件 |
*.gz |
gzip程序(GNU zip)压缩的文件 |
*.xz |
xz程序压缩的文件 |
*.bz2 |
bzip2程序压缩的文件 |
*.tar.gz |
tar打包,gzip程序压缩的文件 |
*.tar.xz |
tar打包,xz程序压缩的文件 |
*tar.bz2 |
tar打包,bzip2程序压缩的文件 |
*.tar.7z |
tar打包,7z程序压缩的文件 |
1.zip压缩打包程序
du命令查看打包后文件的大小
第一行命令中,-r参数表示递归打包包含子目录的全部内容,-q参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。
使用-e参数可以创建加密压缩包。
2.使用unzip命令解压缩zip文件
使用-O(英文字母,大写o)参数指定编码类型;
不想解压只想查看压缩包的内容你可以使用-l参数;
3.rar打包压缩命令
使用rar和unrar工具分别创建和解压 rar 压缩包。
使用a参数添加一个目录~到一个归档文件中,如果该文件不存在就会自动创建。
从指定压缩包文件中删除某个文件、查看不解压文件:
4.tar打包工具(tar命令一些基本的使用方式)
压缩文件格式 |
参数 |
*.tar.gz |
-z |
*.tar.xz |
-J |
*tar.bz2 |
-j |
-c表示创建一个tar 包文件,-f用于指定创建的文件名,注意文件名必须紧跟在-f参数之后。
第七节 文件系统操作与磁盘管理
一、简单文件系统操作
1.查看磁盘和目录的容量
使用 df 命令查看磁盘的容量
二、简单的磁盘管理
dd命令用于转换和复制文件,还可以实现数据转换
使用 umount 命令卸载已挂载磁盘
使用 losetup 命令建立镜像与回环设备的关联:
mkfs格式化各分区
第八节 命令执行顺序控制与管道
一、命令执行顺序的控制
1.顺序执行多条命令
2.有选择的执行命令(&&就是用来实现选择性执行的,它表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回0则执行后面的,否则不执行)
二、管道
cut 命令,打印每一行的某一字段:
grep 命令,在文本中或 stdin 中查找匹配字符串:
wc 命令,简单小巧的计数工具
uniq 去重命令
第九节 简单的文本处理
文本处理命令
1.tr 命令
tr 命令可以用来删除一段文本信息中的某些文字。或者将其进行转换。
使用方式:
tr [option]...SET1 [SET2]
常用的选项有:
选项 |
说明 |
-d |
删除和set1匹配的字符,注意不是全词匹配也不是按字符顺序匹配 |
-s |
去除set1指定的在输入文本中连续并重复的字符 |
2.col 命令
col 命令可以将Tab换成对等数量的空格建,或反转这个操作。
使用方式:
col [option]
常用的选项有:
选项 |
说明 |
-x |
将Tab转换为空格 |
-h |
将空格转换为Tab(默认选项) |
3.join命令
学过数据库的用户对这个应该不会陌生,这个命令就是用于将两个文件中包含相同内容的那一行合并在一起。
使用方式:
join [option]... file1 file2
常用的选项有:
选项 |
说明 |
-t |
指定分隔符,默认为空格 |
-i |
忽略大小写的差异 |
-1 |
指明第一个文件要用哪个字段来对比,,默认对比第一个字段 |
-2 |
指明第二个文件要用哪个字段来对比,,默认对比第一个字段 |
4.paste命令
paste这个命令与join 命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开。
使用方式:
paste [option] file...
常用的选项有:
选项 |
说明 |
-d |
指定合并的分隔符,默认为Tab |
-s |
不合并到一行,每个文件为一行 |
三、作业
第十节 数据流重定向
1.简单的重定向
用于终端的显示和输出,分别为stdin(标准输入,对应于你在终端的输入),stdout(标准输出,对应于终端的输出),stderr(标准错误输出,对应于终端的输出)。
将cat的连续输出重定向到一个文件。
将echo命令的输出从默认的标准输出重定向到一个普通文件。
2.标准错误重定向
标准输出和标准错误都被指向伪终端的屏幕显示。
3.使用tee命令同时重定向到多个文件
将需要将输出重定向到文件之外也需要将信息打印在终端。
4.永久重定向
exec命令的作用是使用指定的命令替换当前的Shell,及使用一个进程替换当前进程,或者指定新的重定向。
5.创建输出文件描述符
exec命令可以创建新的文件描述符。
6.关闭文件描述符
7.完全屏蔽命令的输出
通常被用于丢弃不需要的输出流,或作为用于输入流的空文件,这些操作通常由重定向完成。读取它则会立即得到一个EOF。
8.使用 xargs 分割参数列表
第十一节 正则表达式基础
一、正则表达式
1. 举例
2.基本语法:
一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列符合某个句法规则的字符串。
二、grep模式匹配命令
1.基本操作
grep命令用于打印输出文本中匹配的模式串,它使用正则表达式作为模式匹配的条件。grep支持三种正则表达式引擎,分别用三个参数指定:
参数 |
说明 |
-E |
POSIX扩展正则表达式,ERE |
-G |
POSIX基本正则表达式,BRE |
-P |
Perl正则表达式,PCRE |
在通过grep命令使用正则表达式之前,先介绍一下它的常用参数:
参数 |
说明 |
-b |
将二进制文件作为文本来进行匹配 |
-c |
统计以模式匹配的数目 |
-i |
忽略大小写 |
-n |
显示匹配文本所在行的行号 |
-v |
反选,输出不匹配行的内容 |
-r |
递归匹配查找 |
-A n |
n为正整数,表示after的意思,除了列出匹配行之外,还列出后面的n行 |
-B n |
n为正整数,表示before的意思,除了列出匹配行之外,还列出前面的n行 |
--color=auto |
将输出中的匹配项设置为自动颜色显示 |
2.使用正则表达式
使用基本正则表达式,BRE
下面包含完整的特殊符号及说明:
特殊符号 |
说明 |
[:alnum:] |
代表英文大小写字节及数字,亦即 0-9, A-Z, a-z |
[:alpha:] |
代表任何英文大小写字节,亦即 A-Z, a-z |
[:blank:] |
代表空白键与 [Tab] 按键两者 |
[:cntrl:] |
代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del.. 等等 |
[:digit:] |
代表数字而已,亦即 0-9 |
[:graph:] |
除了空白字节 (空白键与 [Tab] 按键) 外的其他所有按键 |
[:lower:] |
代表小写字节,亦即 a-z |
[:print:] |
代表任何可以被列印出来的字节 |
[:punct:] |
代表标点符号 (punctuation symbol),亦即:" ' ? ! ; : # $... |
[:upper:] |
代表大写字节,亦即 A-Z |
[:space:] |
任何会产生空白的字节,包括空白键, [Tab], CR 等等 |
使用扩展正则表达式,ERE。要通过grep使用扩展正则表达式需要加上-E参数,或使用egrep。
三、sed 流编辑器
sed工具用于过滤和转换文本的流编辑器。
三、sed 流编辑器
参数 |
说明 |
-n |
安静模式,只打印受影响的行,默认打印输入数据的全部内容 |
-e |
用于在脚本中添加多个执行命令一次执行,在命令行中执行多个命令通常不需要加该参数 |
-f filename |
指定执行filename文件中的命令 |
-r |
使用扩展正则表达式,默认为标准正则表达式 |
-i |
将直接修改输入文件内容,而不是打印到标准输出设备 |
命令 |
说明 |
s |
行内替换 |
c |
整行替换 |
a |
插入到指定行的后面 |
i |
插入到指定行的前面 |
p |
打印指定行,通常与-n参数配合使用 |
d |
删除指定行 |
四、awk文本处理语言
AWK是一种优良的文本处理工具。
pattern通常是是表示用于匹配输入的文本的“关系式”或“正则表达式”,action则是表示匹配后将执行的动作。
awk处理文本的方式,是将文本分割成一些“字段”,然后再对这些字段进行处理,默认情况下,awk以空格作为一个字段的分割符。
-F参数用于预先指定前面提到的字段分隔符(还有其他指定字段的方式) ,-v用于预先为awk程序指定变量,-f参数用于指定awk命令要执行的程序文件,或者在不加-f参数的情况下直接将程序语句放在这里,最后为awk需要处理的文本输入,且可以同时输入多个文本文件。
第十二节 Linux下软件安装
一、Linux 上的软件安装
通常 Linux 上的软件安装主要:在线安装,从磁盘安装deb软件包,从二进制软件包安装,从源代码编译安装
二、在线安装
三、使用 dpkg 从本地磁盘安装 deb 软件包
四、从二进制包安装
从网络上下载的二进制包解压后放到合适的目录,然后将包含可执行的主程序文件的目录添加进PATH环境变量即可。
学习总结
1.又学习了新的操作环境,觉得win不好用了。
2.在现在看来实验楼在网速得当的情况下还是很好用的,以后还准备学习一下其他科目。
3.这学期加油!