Linux学习之路

Linux的基础知识


第一章:Linux的概述以及系统安装及使用

第一节:简单了解一下Linux发展历史与历程

  1. Linux是一种自由、开源的类UNIX操作系统。
  2. linux 的创始人 Linus torvalds;在1991年8月25号发布公开版本(基于Inter 386 体系结构)和源代码;Linux名字由来是在1991年10月5号,取自创始人 Linus torvalds的谐音Linux。
  3. UNIX 操作系统、MINIX 系统、 GNU 计划、POSIX 标准、Internet 的传播。
  4. Linux系统应用,过去,Linux因其廉价、灵活性及UNIX 背景,主要被用作服务器的操作系统。传统上,以Linux为基础的LAMP(Linux、Apache、MySQL、Per/PHP/Python的组合)技术。基于其低廉的成本与高度的可设置性,Linux常常被应用于嵌入式系统,如机顶盒、移动电话等等。在移动电话上,目前流行的Android手机操作系统。2019年6月的超级计算机TOP500榜单中500套系统全部采用Linux作为操作系统。
  5. Linux的特点:抢占式多任务、多用户、设备无关性、开放性、可扩展性与可维护性以及开放源代码、完善的网络功能、可靠的系统安全、良好的可移植性。
  6. Linux系统的组成:Linux内核(系统的心脏,是运行程序、管理磁盘和打印机等硬件设备的核心程序)、Linux Shell(Shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把这些命令送入内核去执行,也叫命令解释器)、Linux文件系统(是文件存放在磁盘等存储设备上的组织方法,支持ext2、3、4、XFS、ISO 9660、NFS)、Linux应用程序(应用系统的程序集,其中包括文本编辑器、编程语言、X Window、办公套件、Internet工具、数据库等)
  7. Linux与其他操作系统的区别。
  8. Linux版本介绍:Linux内核版本(稳定版和开发版),如5.14.7(主版本号0 ~ 9、次版本号00 ~ 99,修订版本号)。
  9. Linux发行版本:老牌的Red Hat、锐意的Fedora、自由的Debian、大众的Ubuntu、国产操作系统中标麒麟、国产开源社区版本openEuler。
  10. RHEL 8:该版本为用户提供了跨混合云和数据中心部署的安全、稳定和一致的基础,以及支持所有级别工作负债所需的工具。(内核和支持CPU架构、内容分发、桌面环境、软件管理、联网、网络管理Cockpit、Linux containers、虚拟化、存储和文件系统、安全)

第二节:Linux安装

  1. RHEL 的安装程序名Anaconda(使用Python语言),分为三种执行模式:Update 模式(安装与更新RHEL)、Kickstart 模式(自动安装RHEL)、Rescue模式(修复与救援RHEL系统)
  2. 确定安装硬件:中央处理器(CPU)、随机读取内存(RAM)、硬盘(Hard Disk)、网络适配卡(Network Interface Card)。
  3. 使用本地光盘安装RHEL 8:
    (1)从光驱启动计算机
    (2)测试光盘
    (3)RHEL 8的欢迎界面和语言选择
    (4)设置日期和时间
    (5)设置键盘
    (6)设置语言支持
    (7)设置安装源
    (8)软件选择
    (9)设置网络和主机名
    (10)设置安装目的地
    (11)开始安装
    (12)设置root密码
    (13)系统安装完成,重启计算机

具体步骤:
第一步:创建新的虚拟机

第二步:自定义,下一步

第三步:选择虚拟机硬件兼容性,下一步

第四步:安装客户机操作系统,稍后安装系统,下一步

第五步:选择客户机操作系统,Linux和Red Hat Enterprise Linux 8 64位,下一步

第六步:命名虚拟机,并选择位置,当然建议不要选择系统盘,下一步

第七步:处理器配置,再选之前尽量考虑一下自己电脑配置,下一步

第八步:此虚拟机的内存,下一步

第九步:网络类型,先默认,后面再细解释,下一步

第十步:选择I/O控制器类型,下一步

第十一步:选择磁盘类型,下一步

第十二步:选择磁盘,下一步

第十三步:指定磁盘容量,存储为单个文件,下一步


第十四步:指定磁盘文件,下一步

第十五步:自定义硬件

第十六步:选择光盘存放路径,新CD,然后使用之前准备好的镜像,关闭
第十七步:完成

第十八步:开启虚拟机

第十九步:默认,回车

第二十步:选择中文,前面已经有一台英文版的,所有这次来个中文版,继续

第二十一步:分区







第二十二步:接受更改,选择时间地点,软件安装(带GUI的服务器,带图形界面的,当然之后的安装时间会加大。比如搭建hadoop高可用集群等等,可以不选择这个,直接命令行界面。这里有点不一样的就是完成要点击两下,而不是卡了)





第二十三步:设置root密码
第二十四步:等待安装

第二十五步:重启

第二十六步:接受许可证

第二十七步:安装完成

  1. 安装后的初始化配置-firstboot服务
    (1)Kdump管理
    (2)许可协议和注册
    (3)首次登录配置界面
    (4)登录界面
    (5)帮助界面
    (6)系统界面

第三节:X Window 图形用户界面和应用软件

  1. X Window 工作原理:在完成RHEL 8 系统安装后,用户可以选择进入两种操作环境(字符命令界面、图形化界面X Window)。X Window 为用户提供两个重要特征:平台无关性和网络透明性。
  2. GNOME桌面环境:Nautilus 文件管理器
  3. 文本编辑器Gedit
  4. LibreOffice(OpenOffice办公套件衍生版):
    (1)文字处理组件 Writer
    (2)电子表格组件 Calc
    (3)演示文稿组件 Impress
    (4)数据库组件 Base
    (5)绘图组件 Draw
    (6)公式编辑组件 Math
  5. 图像处理软件 GIMP
  6. 图像查看器 Eye of GNOME Image Viewer
  7. 文件查看器 Document Viewer
  8. 网页浏览器 Firefox
  9. 多媒体播放器 Totem
  10. 使用 Cockpit管理:Cockpit是一个免费且开源的基于Web的管理工具,系统管理员利用它可以执行诸如存储管理、网络配置、检查日志、管理容器等任务。非常轻量级,Web界面也非常简单易用。

第二章:shell基本应用

第一节:Shell 命令概述

  1. Shell 简介:Shell是Linux的一个特殊程序,也是内核与用户的接口,它还是命令语言、命令解释程序及程序设计语言的统称。Shell是一个命令语言解释器,它拥有内置的Shell命令集,Shell也能被系统中其他应用程序所调用。Shell编程语言简单易学,任何在提示符下能输入的命令都能放到一个可执行的Shell程序中,以非交互的方式执行,这意味着用Shell语言能简单地重复执行某一任务。例如,可以把一些要执行的命令预先存放在文本文件中(称为Shell脚本),然后执行该文件。这一做法类似于DOS的批处理文件做法,但其功能要比批处理文件强大的多。RHEL 中Shell有很多种:Bourne Shell(BSH,简称BASH)和C Shell(CSH)。可以修改在文件/etc/passwd 中该用户文本中的最后一个字段,将其内容替换为用户所需的Shell版本。
  2. Shell的启动与退出
    (1)终端的切换:RHEL的字符界面也被称作虚拟终端或虚拟控制台,可为用户提供多个互不干扰、独立工作的界面。而Window系统的计算机则是真实的。RHEL 8 的虚拟终端默认为6个,2-6总是字符界面,而第一个默认为图形化用户界面。Ctrl+Alt+F1实现从字符界面的虚拟终端切换到图形化用户界面,Ctrl+Alt+F2-6可以实现从图形化用户界面到字符界面的虚拟终端。
    (2)终端的启动:root是#,普通用户是$。
    (3)系统的注销:logout命令、exit命令或按Ctrl+D。
    (4)系统的重启:reboot命令、shutdown -r now。
    (5)关机:halt或shutdown -h now命令、poweroff命令。
  3. Shell 命令的格式
    (1)命令提示符

具体含义:[用户名@主机名(默认localhost)目录名(~表示用户的主目录)]
(2)命令格式:命令名 [选项] [参数] ([]为可选)
选项:是执行该命令的限定参数或功能参数,0-多个,以-开头,-l -a = -la,–开头则是单词,还有少数命令不需要-。
参数:是执行该命令所需要的对象,如文件、目录等,0-多个。
在Shell中,一行可以输入多条命令,用;分隔开。一行命令后加\表示另起一行继续输入。使用 Tab键可以自动补充(有时记不全的命令,文件名过长等等,十分方便)。命令 --help,是该命令的帮助模式。命令 --version,是该命令的版本信息。
4. 常用 Shell 命令
(1)目录的创建与删除

注释:递归创建多级目录。

注释:创建一个目录文件并设置700权限,不让除所有主以外任何人读、写、执行它。

注释:一次性创建多个目录文件。

注释:显示执行过程详细信息。

注释:删除test01目录下的file目录,同时将test01目录一并删除。要求目录在被删除之前必须为空。

注释:删除指定的空目录,并显示删除的过程。

注释:显示版本信息。

(2)改变工作目录

注释:若没有指定目录,则返回用户的主目录,也可以是用cd … ,返回上一级目录。


注释:cd …/… 回到上两级目录。

(3)显示目录命令

注释:表示当前的工作目录为root用户的主目录/root。

(4)显示目录内容

注释:显示所有文件和子目录(包括隐藏文件和隐藏子目录,以.开头的)

注释:ll=ls -l,显示文件和子目录的详细信息,不显示其中所包含文件信息。


注释:如果参数是目录,则只显示目录信息。

注释:不仅显示指定目录下的文件和子目录信息,而且递归地显示各子目录中的文件和子目录信息。

注释:按照时间顺序显示。

(5)显示文件内容

注释:创建文本文件f1,按下Ctrl+D,保存当前文件f1,之后输入查看命令。


注释:-b显示行数(空行不编号)
-n显示行数(空行也显示编号)

注释:每行结束处显示$符号。

注释:分屏显示文件内容,系统还将显示出文本占全部文本的百分比。若要继续显示,可以按Enter键或者空格键即可,按b可以向前翻页,按p退出该命令。-p显示下一屏之前先清屏,-s将文件中连续的空白行压缩成一个空白行显示。


注释:less命令和more命令非常相似,不同之处more可以显示二进制文件,而less只能查看ASCII码文件。可以使用上下方向键、Enter键、空格键、PageDown键或PageUp键前后翻阅文本内容,使用q键可退出less命令。


注释:显示文件前n行内容。


注释:tail和head的功能相对应,想要查看文件尾,就使用这个命令,该命令是将文件从指定位置到文件结束处的内容标准化输出。

(6)文件内容查询


注释:在文件中查找root字符串,*是搜索当前目录下所有文件中含有data字符串的行。

(7)文件查找

注释:全盘搜索系统中所有以.conf结尾的文件。

注释:在/etc目录中搜索所有大于1M大小的文件。

注释:在/home目录中搜索所有属于指定用户的文件。

注释:列出当前工作目录中的所有文件、目录以及子文件信息。

注释:在/var/log目录下搜索所有指定后缀的文件,后缀不需要大小写。

注释:在/var/log目录下搜索所有不是以.log结尾的文件。

注释:搜索当前工作目录中的所有近7天被修改过的文件。

注释:全盘搜索系统中所有类型为目录,且权限为1777的目录文件。

注释:全盘搜索系统中所有类型为普通文件,且可以执行的文件信息。

注释:全盘搜索系统中所有后缀为.mp4的文件,并删除所有查找到的文件。-a逻辑与,-o逻辑或。find功能非常强大。

(8)文件内容统计

注释:表示f1文件的行数4、单词数10、字节数50。

(9)文件的复制、移动和删除

注释:将f1文件复制为f2,若f2文件存在,则备份原来的f2文件。~为备份文件。-f是强制覆盖同名文件。-r或-R是按递归方式,保留原目录结构复制文件,-b若存在同名文件,覆盖前备份原来的文件。

注释:将f1文件移动到目录test02下

注释:将mf1目录改名为mf2,-f是强制覆盖同名文件,-b若存在同名文件,覆盖前备份原来的文件。

注释:删除当前目录下的f2文件,删除mf2目录,连同其下的子目录一起删除。-f强制删除,不出现确认信息,-r或-R按递归方式删除目录,默认删除文件。

(10)查看手册页man

注释:按q退出,可以使用上下方向键、PageDown键或PageUp键前后翻阅文本内容。

(11)清屏

第二节:BASH 的应用

  1. 命令自动补齐,Tab键。
  2. 命令历史记录,在.bash_history文件中可以看到,用ls -a或-A来查看。用上下键来查看,或者用history命令。


    注释:history n,列出最后几个历史命令。


注释:执行序号为204的命令。

  1. 命令别名

注释:这里和大家交流学习一个小技巧,是我一位大佬朋友教的,具体操作见这里。这里直接用小技巧大智慧来讲解了命令别名怎么用。当然hadoop高可用集群要是有时间还是要自己练一下的,毕竟认真学了终会有好处的,此处就是没有时间的解决方法。查看别名用alias命令。当然有效期持续到用户退出登录之前。


注释:当然要是想要长期有效就需要写入.bashrc文件中就行。

  1. 通配符

    注释:通配符可以同时引入多个文件以方便操作。
    *通配符是可以匹配任意数量的字符。
    ?通配符是在相应位置上匹配任意单个字符。
    []通配符是可以匹配括号中给出的字符或字符范围,-是来表示范围的,!是表示不在这个范围内的。
    显示当前目录下以f开头的所有文件。
    显示当前目录下以f开头的、文件名为两个字符的所有文件。
    显示当前目录下以a、m、f开头的文件名为3个字符的所有文件。
    显示当前目录下以a、b、c开头的所有文件。
    显示当前目录下不是以f、h、i开头的所有文件。

第三节:正则表达式、管道和重定向

  1. 正则表达式作用:验证是否是合法的邮件地址、查找特定的字符串、用来替换(这种替换的功能比普通的功能强大的多)。
    (1)普通字符:字母、数字、汉字、下画线,以及没有特殊定义的标点符号都是。
    (2)简单的转义字符:一些不变书写的字符可以在前面加\的方法,比如一些有特殊用处的标点符号。

转义字符

表达式 可匹配
\r,\n 分别代表回车符和换行符
\t 制表符
\\ \本身

特殊符号转义字符

表达式 可匹配
\^ ^符号本身
\$ $符号本身
\. 小数点.本身

(3)能够与“多种字符”匹配的表达式
能够与“多种字符”匹配的表达式

表达式 可匹配
\d 代表任意一个数字,0-9中的任意一个
\w 代表任意一个字母、数字或下画线,也就是说A-Z,a-z,0-9,_中的任意一个
\s 代表空格、制表符、换行符等空白字符中的任意一个

(4)自定义能够匹配“多种字符”的表达式
自定义能够匹配“多种字符”的表达式

表达式 可匹配
[ab5@] 匹配a或者b或者5或者@
[^abc] 匹配a、b、c之外的任意一个字符
[f-k] 匹配f-k之间的任意一个字母
[^A-F 0-3] 匹配A-F和0-3之外的任意一个字符

(5)修饰匹配次数的特殊符号
修饰匹配次数的特殊符号

表达式 作用
{n} 表达式重复n次,比如: “w{2}” 相当于"w’w"; "a{5}“相当于"aaaa”
{m,n} 表达式至少重复m次,最多重复n次,比如: "ba{1,3}"可以匹配 “ba” “baa” “baaa”
{m,} 表达式至少重复m次,比如: “\w\d{2,}“可以匹配"a12"”_456” “M12344”
? 匹配表达式0次或者1次,相当于{0,1),比如: "a[cd]?“可以匹配"a” “ac” “ad”
+ 表达式至少出现1次,相当于{1,},比如: “a+b"可以匹配"ab” “aab” “aaab”
* 表达式不出现或出现任意次,相当于{0},比如:“\^*b” 可以匹配"b" “^^^b”

使用方法:“次数修饰”放在“被修饰的表达式”后面。比如:“[bcd][bcd]”可以写成“[bcd]{2}”

(6)其他一些代表抽象意义的特殊符号
其他一些代表抽象意义的特殊符号

表达式 作用
^ 与字符串开始的地方匹配,不匹配任何字符
$ 与字符串结束的地方匹配,不匹配任何字符
\b 匹配一一个单词边界,也就是单词和空格之间的位置,不匹配任何字符

影响表达式内部子表达式之间关系的符号

表达式 作用
| 其左、右两边表达式之间为“或”关系,匹配左边或者右边均成立
() (1)在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰 (2)在取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
  1. 管道与重定向
    重定向:除了从键盘以外的其他设备读取数字,或者将数据传送到屏幕外的其他设备。

输入重定向

输出重定向
作用:
某个命令的输出很多,在屏幕上不能完全显示,用户可以将其从重定向到一个文件中,命令执行完后再用文本编辑器打开这个文件。
当想保存一个命令的输出时也可以使用这种方法。输出重定向甚至可以将一个命令的输出当做另一个命令的输入。
当然,需要注意的是,输出重定向的目标是一个文件时,则每次使用重定向时应首先清除该文件的内容。如果想要保留的话,将新的重定向信息追加到一个文件的尾部,则使用>>作为输出重定向符号。

注释:首先,ls -a是在屏幕中显示所有文件夹和文件信息,而使用了输出重定向就会将这些本该在屏幕上输出的信息“输出”到了info文件中,所有屏幕上不显示任何信息;当然可以通过cat info命令可以查看。

(1)创建文本文件
cat >文件名
作用是创建一个新的文件,输入此命令后,用户可以直接从屏幕输入文本内容,按Ctrl+D就可以结束文本输入,而不是卡了。

(2)合并文本文件
cat 文件列表 >文件名
作用是将文件中的所有文件内容合并到指定的新文件中。

(3)向文本文件追加信息
cat >>文件名
作用是向已有文件中追加文本信息。

错误信息重定向
首先来解释一下什么是错误信息输出设备?
程序的输出设备分为标准输出设备和错误信息输出设备,当程序输出错位信息时使用的设备是错误信息输出设备。在前面介绍的输出重定向方法只能重定向程序的标准输出,而错误信息的重定向使用下面方法。
“2>”:程序的执行结果显示在屏幕上,而错误信息会被重定向到指定文件。


注释:查看/test目录中文件夹和文件信息,当/test目录不存在时,系统会将错误信息保存在error文件中。

管道
用户可以将第一个命令的输出通过管道传给第二个命令以作为第二个命令的输入,再将第二个命令的输出通过管道传给第三个命令以作为第三个命名的输入,以此类推,最后一个命令的输出才会显示在屏幕上,管道所使用的符号是“|”。

注释:统计文件中含有“file”单词的行数。
cat f1命令将文件f1的内容传给grep命名,grep命名在f1中查找单词“file”,其统计文件中含有“file”单词的行数。

第四节:文本编辑器 Vim

  1. Vim简介与模式
    在RHEL中的文本编译器很多,比如图形模式的Gedit、KWrite、OpenOffice等,文本模式的Vi、Vim等。其中Vim编辑器在系统管理,服务器管理方面功能十分强大。Vim是RHEL系统上的全屏幕交互式编辑器。
    Vim有3种基本工作模式:

命令模式(Command Mode):用户只需按Esc键,即可以进入Vim命令模式,当然再按一个Esc键就会退出。
插入模式(Insert Mode):按i、o、a或Insert键可以切换到插入模式。

注释:在屏幕的左下角有–插入–字样。这样用户就可以进行文字和数据的输入。
末行模式(Last Line Mode):
用户按“:”键就可以进入末行模式,等待用户输入命令,如Vim、设置编辑环境、查找字符串、列出行号、把编辑缓冲区的内容写到文件中等。末行命令执行完后,Vim自动返回到命令模式,也可以按Esc键回到命令模式。

  1. Vim的进入与退出:
    (1)进入
    1)vim

    2)vim file1
    如果file1不存在,将建立此文件;如果存在,则,将其复制到一个临时缓冲区,鼠标光标定位在该缓冲区第一行第一列位置。
    3)vim +file1
    这个命令就和2)不同的就是,鼠标光标定位在文件最后1行第1列的位置上。
    4)vim +#file1
    这个命令就和2)不同的就是,鼠标光标定位在文件第#行第1列的位置上。
    5)vim +/string file1
    这个命令就和2)不同的就是,鼠标光标定位在文件中第一次出现在字符串string的行首位置上。
    6)vim -r filename
    如果在上次正在使用Vim进行编辑时发现系统崩溃,则可以用该命令恢复filename文件。
    7)vim filename1 filename2…filename n
    打开多个文件,依次进行编辑。

(2)退出
在退出Vim前,按Esc键,确保当前Vim的工作模式为命令模式。
1)w:保存
2)q:退出,当然退出时会被要求确认是否放弃修改内容。
3)wq:保存退出
4)w filename:指定文件另存为filename。
5)x和ZZ:功能与wq等价,注意ZZ前面没有:,且需要大写。
6)q!或quit:放弃刚才编辑内容,强行退出Vim。

  1. 基本操作命令

(1)移动光标命令
h:左移
l:右移
j:下移
k:上移

(2)添加文本命令
需要在插入模式下操作,则从命令模式到插入模式
i:在光标当前位置插入文本
a:在光标当前位置前面开始添加文本
I:在光标所在行的下面插入一个空行
A:在光标所在行的行末添加文本
o:在光标所在行的下面插入一个空行
O:在光标所在行的上面插入一个空行

(3)删除文本命令
s: 删除光标后的一个字符,然后进人插入模式。
S:删除光标所在的行,然后进入插入模式。
X:删除光标所在位置的字符。
X:删除光标前的一个字符。
#x:删除#个字符,#表示数字。例如,4x表示删除从当前光标开始的4个字符。
d$:删除从当前光标位置至行尾的内容。
do:删除从当前光标位置至行首的内容。
dd:删除光标所在的当前一行。
#dd:删除#行。例如,4dd 表示删除光标所在行,以及光标下面的3行。
dw:删除一个字。
#dw:删除#个单词。例如,3dw 表示删除包含光标所在单词的3个连续单词,不包含空格。
Ctrl+u:删除插人模式下所输人的文本。
J:清除光标所处的行与上一行之间的空格,把光标行和上一行接在一起。

(4)文本替换命令
替换文本是用新输人的内容替换原文档中的内容。在命令模式下和末行模式下都可以执行文本替换操作。
在命令模式下的Vim中,替换的命令又可以分为取代命令、替换命令和字替换命令。
1)取代命令
r: 用即将输人的一个字符代替当前光标处的字符。
#r:用即将输人的字符取代从当前光标处开始的#个字符。例如,3rS 是将当前光标处的字符及其后的两个字符都取代为"S"。
2)替换命令
s: 用即将输人的文本替换当前光标处的字符。如果只输入一个新字符, s命令与r 命令功能类似,但r命令仅完成替换,s命令在完成替换的同时,工作模式从命令模式转为插人模式。
#s:用即将输人的文本替换从光标所在字符开始的#个字符。例如,3sA 命令将从当前光标开始的3个字符替换为一个字符"A"。
3)字替换命令
cw:替换当前光标所在的字。例如在命令模式下输人cw,接着输人hello,则原先光标处的字被"hello"替换掉。该命令等同于ce命令。
使用末行模式下的替换命令时,要先输人“:”,确保切换到末行模式。末行模式下的替换命令格式为:
[range] s/pattern/string/ [选项]
其中,range用于指定文本中需要替换的范围,缺省代表当前全部文木。例如,[3,6]表示对3~6行的内容进行替换; [3,S]表示对第3行到最后一行的内容进行替换。pattern 指定需要被替换的内容,可以是正则表达式。string 用来替换pattern的字符串。
常用选项说明如下。
c:每次替换前都要进行询问,要求用户确认。
e:不显示错误。
g:对指定范围内的字符完成替换,替换时不进行询问。
i:替换时不区分大小写。
示例如下所示。
: s/a/b:将当前行中所以a均用b替换。
:12,23s/a/b/c:将第12-23行中所有a均用b替换,替换前要求用户确认。
: s/a/b/g:将文件中所有a均用b替换。

(5)复制与粘贴命令
复制和粘贴是文本编辑中常用的操作。在Vim中为用户提供了缓冲区,当用户执行复制命令时,所选择的文本会被存入缓冲区中;当下一个复制命令被执行后,缓冲区的内容被刷新。
使用粘贴命令可以将缓冲区的内容添加到文档中的光标所在处。常用的复制和粘贴命令如下。
yw:将当前字的光标所在处到字尾的内容复制到缓冲区。
#yw:复制从当前字开始的#个字到缓冲区。
yy:复制光标所在行到缓冲区。
#yy:复制包含光标所在行的#行数据到缓冲区。例如,3yy 表示将光标所在的该行及下面的两行文字复制到缓冲区。
p:将缓冲区的内容粘贴到当前光标右侧,如果缓冲区内容为一行,则复制到光标下面一行。
P:将缓冲区的内容粘贴到当前光标左侧,如果缓冲区内容为一行,则复制到光标上面一行。所有与“y"有关的复制命令都需要与“p"或“P”命令组合使用才能完成复制与粘贴功能。

(6)查找和替换命令
如同Windows提供的“在找”及“替换”命令菜单样。Vim也提供了在找和替换命令。查找是在末行模式下进行的,用户首先输入“/”或“?”就会切换到末行模式,在文本编辑框的最面显示""或"在其后输人要在找的字符模式即可。利用在找命令可以实现向前或向后搜索指定关键字的功能,并且可以按原搜索方向或反方向继续查找。下面对这些命令进行介绍。
/pattem:光标开始处向文件尾搜索patterm.若遇到文件尾,则从头再开始。
?patterm:从光标开始处向文件首搜索pattern,若遇到文件首,则从文件尾再开始。
/pattern/+#:将光标停在包含pattern 的行后面第#行上。
/patterm/- #:将光标停在包含pattern 的行前面第#行上。
n: 按原搜索方向重复上- -次搜索命令。
N:在相反方向重复上一-次搜索命令。

(7)重复命令
重复命令也是一个经常用到的命令。 在文本编辑中经常 会需要重复一些操作,这时就需要用到重复命令,它可以让用户方便地再执行一次前面的命令。重复命令只能在Vim的命令模式下使用,在该模式下按“.” 键即可。执行一一个重复命令时,其操作结果是针对光标当前位置进行的。

(8)取消命令
取消命令用于取消前一次的误操作,使操作恢复到这种误操作被执行之前的状态。
取消上一个命令有两种形式,在命令模式下输入字符u和U,它们的功能都是取消刚才输人的命令,恢复到原来的状态。大写U命令的功能是恢复到误操作命令前的状态,即如果插人命令后使用U命令,就删除刚刚插人的内容;如果删除命令后使用U命令,就相当于在光标处又插人刚刚删除的内容。

  1. 高级命令
    (1)多文件编辑命令
    (2)在Vim中运行Shell命令
    (3)块标记命令
    (4)Vim环境设置命令

5.练一下
安装gcc编译器并使用:
(1)挂载虚拟光驱(光盘)到本地配置本地yum源



[AppStream]
name=AppStream
baseurl=file:///dvd/AppStream
gpgcheck=0
enabled=1
[BaseOS]
name=BaseOS
baseurl=file:///dvd/BaseOS
gpgcheck=0
enabled=1

(2)执行yum clean 或者 yum clean all 定期清理缓存

(3)执行yum -y install gcc





(4)检测一下安装的怎么样



OK,安装的可以。

第五节:Shell 编程

  1. Shell脚本
    Shell 脚本(Shell Script)是一种为Shell 编写的脚本程序。建议用普通用户来运行Shell,这样就可以避免破坏系统。
    首先我们来看看,编译语言是什么?
    编译型语言我们了解的应该不少,比如:C、C++和Java,这类的语言需要预先编译(源代码->目标代码),然后运行读取目标代码。因为编译后的目标代码非常接近计算机底层,因此执行效率很高,这就是编译型语言的优点。
    解释型语言也被称为“脚本语言”,比如:Python、Shell等等,执行时,解释器需要读取我们编写的源代码,将其转换成目标代码,再由计算机运行。因为每次执行程序时都多了编译的过程,所以效率有所下降。
    特点
    (1)简单性
    (2)可移植性
    (3)开发容易



注释:以扩展名为.sh结尾;“#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。echo命令用于向窗口输出文本。
chmod +x ./cc.sh 使用脚本具有执行权限
./cc.sh 执行脚本,告诉系统(Shell这个应用程序),在PATH里面找。


注释:既然这个系统就是指Shell,使用/bin/sh 作为解释器的脚本可以省去第一行。
作为解释器参数,这种运行方式直接运行解释器,其参数就是这个Shell脚本的文件名。这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。

  1. Shell脚本案例
    案例


Linux的系统管理

先定义、理论,然后直接上实验

第三章:用户与组的管理

定义
用户:分为普通用户和超级用户(root用户),使用su root 切换用户。

用户ID(UID):每个用户都拥有唯一的标识符。其最大值可以在文件/etc/login.defs中查到,RHEL规定为60000,

用户分组:用户至少属于一个组。是由系统管理员建立的,一个用户分组包含若干个用户,一个用户也可以归属于不同的组。

分组ID(GID):用户分组也有唯一的标识符。
对文件的访问都是以文件的用户ID和分组ID为基础的。同时根据用户和分组信息可以控制如何授权用户访问系统,以及允许访问后用户可以进行的操作权限。

用户账号文件/etc/passwd:用来保存用户的账号数据等信息,又被称为密码文件或口令文件。
在/etc/passwd中,每一行表示的是一个用户的信息,一行有7个域,每个域用冒号“:”分隔。比如:
student: x:1000:1000:student:/home/student:/bin/bash

用户名(登录名):口令(密码已经映射到/etc/shadow中):UID(0是root用户,1~999是系统用户,1000及以上代表普通用户):GID:用户名全称(可选,可以不设置):用户的登录目录所在位置:用户所用Shell的类型(如果系统用户不允许登录,需要设置Shell为/sbin/nologin)

用户影子文件/etc/shadow:和/etc/passwd这两个文件是对应互补的;包含用户、被加密的密码(不可逆算法),以及其他/etc/passwd不能包括的信息,比如用户的有效期等。
该文件包括9个字段:
name:password:lastchange:minage:maxage:warning :inacting:expire:blank
登录名词:已被加密的用户口令(开头是感叹号时,表示改密码锁定):最近一次修改密码的时间(距离1970年1月1日的天数显示):两次修改密码间隔最少的天数(如果是0,表示无最短期限要求):必须更改密码的最多天数:密码到期警告(以天数表示,0为不警告):在口令过期之后多少天禁用此账号:用户账号过期日期:保留字段(未使用)

组账号文件/etc/group:具有某种共同特征的用户集合起来就是用户组;该文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户归属哪个用户组过哪几个用户组。
该文件包含4个字段:
groupname:password:GID:user_list
用户组名称:用户组口令:GID:用户列表(每个用户之间用“,”逗号分隔,该字段可以为空,如果为空表示用户组包含GID的全部用户)

用户组影子文件/etc/gshadow:同样和/etc/group是互补的两个文件。
该文件包含4个字段:
groupname:password:admin,admin,…:member,member,…
用户组:用户组密码(若为空的或“!”表示没有密码):用户组管理者(也可以为空):组成员

实验一:
1、用户管理

  1. 新建一个user1用户,UID、GID、主目录均按默认;

  2. 新建一个user2用户,UID=800、其余按默认;

  3. 新建一个user3用户,默认主目录为/abc、其余默认;并观察这三个用户的信息有什么不同;

  4. 分别为以上三个用户设置密码为123456;

  5. 把user1用户改名为u1,UID改为700,主目录为/test;

  6. 把u1用户锁定,在不同的终端分别登录user2与u1,并观察有什么现象;

2、组管理

  1. 建立一个标准的组group1,GID=900;

  2. 建立一个标准组group2,选项为默认,观察该组的信息有什么变化;

  3. 新建用户ah、xh,再新建一个组group3,把root、u1、user2用户添加到group1组中,把ah、xh添加到group2组,

  4. 把group3组改名为g3,GID=2000;

  5. 查看user2所属于的组,并记录;

  6. 删除user1组与g3组,观察有什么情况发生;

3、权限管理

  1. 用root用户登录,在根目录下新建一目录test,设置文件的权限,当用户u1登录时,能进入到/test目录之中,并能建立属于u1用户的文件;当用户xh登录时,只能进入到/test目录中,但不能建立属于xh用户的文件;

  2. 以root身份登录,在test目录下新建一个文件ff与目录dd,观察新建文件及目录的权限,进行一定的设置,让新建的目录对属主用户具有读写与执行的权限,组和其它用户具有读和执行的权限;利用ah用户登录,来观察对dd的操作情况;

  3. 进行设置,把文件ff和目录dd的所属用户变为ah用户;利用ah用户登录,来观察对dd的操作情况。




实验二:
ACL配置实例

  1. 创建目录并规划好权限


  2. 设置cc 的使用权限(需要有rwx权限)

  1. 设置使用者user2的权限

  2. ACL内的mask项目

第四章:磁盘与文件的管理

定义:
磁盘的分类:RHEL用来存储数据的设备主要是
内存:内存成本高,但访问速度快,通常是用来存储短暂性的数据。
磁盘:访问速度慢,但成本低,所有磁盘通用来存储需永久保存的数据。
目前常见的磁盘包括硬盘(Hard Disk,HD)、软盘(Floppy Disk,FD)、光盘(Compact Disk,CD)、磁带(Tape)与闪存(Flash Memory)。
RHEL支持的磁盘设备,依照连接的接口种类不同可以分为一下4类:

  • IDE磁盘:是个人计算机中最常见的磁盘类型,支持ATA与SATA两种接口的IDE磁盘。
  • SCSI磁盘
  • 软盘
  • 移动硬盘
    与其他硬件设备一样,RHEL也会为不同的磁盘提供一个设备文件;当调用某个设备文件时,RHEL就可以知道需要调用哪个磁盘设备。

实验:
step1: 增加一个为20G的SATA硬盘,用命令行查询硬盘的大小,截图命令行上传

记得最后点确认。

step2: 为增加的硬盘创建主分区,大小为300M,格式化为ext4文件系统,扩展分区,大小为2G


step3:增加逻辑分区1,大小为1G,格式化为ext4文件系统

step4:查询当前硬盘分区配置

step5:把主分区挂载到/mnt/data上,逻辑分区挂载到/mnt/test上

step6:查询文件系统磁盘使用情况统计

step7:配置永久挂载系统,并查询修改后的文件

step8:给当前的逻辑分区1的文件系统增加usrquota和grpquota

step9:更新装载系统,使得更改生效

step10:扫描相应文件系统,用quota命令生成基本配额文件

step11:在对应的目录下查询生成的quota配额文件

step 12:增加用户xiaoming

step 13:对用户xiaoming设置配额限制,软配额为1M,硬配额为2M,软配额文件个数为6,硬配额文件个数为8个

step 14:用命令激活配额

step 15:启动测试,持续创建文件,直到文件个数达到6-8个时,观察有超出配额限制

VDO(虚拟数据优化)实例:
作用:节省磁盘空间,比如2TB的磁盘能装下3TB的数据,从而降低数据中心的成本。
实现原理:主要是重删和压缩技术。
1、排除零区块
2、删除重复数据
3、压缩
VDO创建

  1. 安装VOD模块,需要的软件包是kmod-kvdo和vdo

  2. VDO创建命令:vdo create
  • --name 创建VDO的逻辑名称
  • --device 创建VDO的物理名称
  • --vdoLogicalSzie VDO大小(可以比物理卷的空间大)



  1. 分析一个VDO命令:vdo status


    Compression:压缩
    Deduplication:重复删除数据
  2. 给vdo1一个xfs文件系统,之后挂载到/mnt/vdo1上

    刷新存储设备:udevadm settle
    创建挂载目录:mkdir /mnt/vod1
    挂载使用:mount /dev/mapper/vdo1 /mnt/vdo1/

  3. 使用vdostats命令查看卷的初始统计信息和状态
  4. 创建多个相同文件,验证结果



第五章:逻辑卷管理

Step1:创建一个10G的硬盘

Step2:分区后主分区1G,扩展9G,第一个逻辑分区3G,剩余分配给第二个逻辑分区,并设置两个逻辑分区的类型为Linux LVM


Step3: fdisk命令查询分区信息

Step4:为第一个逻辑分区创建一个VG和LV,PE大小8M,LV中PE个数100,开机时自动挂载到/mnt/testlvm 格式化为ext4文件系统,其中 Vg名称为vg0 ,lv名称为lv0



Step5:vgdisplay、lvdisplay、df命令分别查询vg、lv、文件系统挂载的详细信息




Step6:设置永久挂载后,df命令查询挂载文件信息


step7:扩容vg0 增加第二个逻辑分区,并vgdisplay查询扩展后的逻辑分区

step8:扩容文件系统,放大逻辑卷为1.5G,并采用df命令查询扩容后文件系统的信息

第六章:进程管理

第七章:软件管理

第八章:服务管理


网络服务与安全

第九章:网络基础

第十章:访问网络文件共享服务

第十一章:安全管理

第十二章:常用网络服务器配置


报错与解决

第十三章:Linux报错总结以及相对应的处理方法

报错1.

解决方法:就是cc.sh文件里面echo后面少了空格。

报错2.

解决方法:就是单引号和双引号没有前后匹配。

报错3.

解决方法:-C 没有写。

报错4.

解决方法:-c改成大写就行。

报错5.

解决方法: 用户:用户组 是这样的。

Linux学习之路(持续补充中......)相关推荐

  1. Go语言开发学习笔记(持续更新中)

    Go语言开发学习笔记(持续更新中) 仅供自我学习 更好的文档请选择下方 https://studygolang.com/pkgdoc https://www.topgoer.com/go%E5%9F% ...

  2. 高人指点 linux 学习之路

    博客的原创之路艰辛,小女子对创作人心生崇敬,转载是为了起步,从转载开始,过渡到有胆识和见识写自己的话吧,加油! Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为 <linux_de ...

  3. linux 的基本命令格式,Linux学习之路(一)命令基本格式

    据统计Linxu里面能够识别的命令超过3000个,而我们常用的Linux基本命令在60个左右.常用命令是我们必须掌握的命令,需要我们多练习才能记住,最起码要敲3遍以上. 简单的把常用命令分为以下几大类 ...

  4. linux学习之路——ubuntu 16.04 开机开启数字小键盘解决方法

    linux学习之路--ubuntu 16.04 开机开启数字小键盘解决方法 参考文章: (1)linux学习之路--ubuntu 16.04 开机开启数字小键盘解决方法 (2)https://www. ...

  5. 【Matlab 绘图——持续补充中】

    Matlab 绘图--持续补充中 目录 plot() 函数 常用线型.颜色.symbol loglog,semilogx,semilogy,plotyy 图片完善--标题title,坐标轴名称xlab ...

  6. C语言学习笔记Day3——持续更新中... ...

    上一篇文章C语言学习笔记Day2--持续更新中- - 八. 容器 1. 一维数组 1.1 什么是一维数组 当数组中每个元素都只带有一个下标(第一个元素的下标为0, 第二个元素的下标为1, 以此类推)时 ...

  7. linux 学习之路

    很多同学接触Linux不多,对Linux平台的开发更是一无所知. 而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机IT行业从业人员, 掌握Linux是一种很重要的谋生资源与手段. 下来我将 ...

  8. 我的Linux学习之路及参考书籍

    学习目的 很简单的考虑,最近在各大招聘网站上找工作,发现多数c/c++开发职位都需要Linux开发经验,让我很苦恼,因为Linux我到目前为止知之甚少,知道Linux的概念,也在大学期间了解过一段时间 ...

  9. 【Vue全家桶+SSR+Koa2全栈开发】项目搭建过程 整合 学习目录(持续更新中)

    写在开头 大家好,这里是lionLoveVue,基础知识决定了编程思维,学如逆水行舟,不进则退.金三银四,为了面试也还在慢慢积累知识,Github上面可以直接查看所有前端知识点梳理,github传送门 ...

最新文章

  1. Ubuntu中的超级兔子:Tweak安装教程
  2. Spark 1.4连接mysql诡异的问题及解决
  3. Gridview的footer模板中放置控件实现添加功能
  4. 在JAXB解组期间应用名称空间
  5. html align 属性,align-content
  6. 老人机彻底不能用了?联通逐渐关闭2G、3G网络?回应:手机制式不支持
  7. 微课|玩转Python轻松过二级(3.2节):元组与生成器推导式
  8. 蓝桥杯 PREV-37 历届试题 分巧克力
  9. jquery on()动态绑定元素的的点击事件无反应的问题记录
  10. Thinkphp 批量更新方法 saveALL
  11. 历年蓝桥杯日期类问题总结
  12. 【银河麒麟操作系统安装win字体库】
  13. 无损对图片进行压缩软件Caesium使用方法及下载
  14. python输出列表的子列表_python切片(获取一个子列表(数组))详解
  15. Verified Boot
  16. 行走的Linux——将ubuntu装入移动硬盘
  17. 微信将迎来重大更新:绑定银行卡的用户请注意
  18. 尤雨溪: 2022 Web 前端生态趋势
  19. vue php聊天室,实时聊天室:基于Laravel+Pusher+Vue通过事件广播实现
  20. Python网络爬虫入门(一)入门

热门文章

  1. 利用betterzip直接在访达中进行解压缩操作
  2. 心理学如何影响用户决策—社会认同效应
  3. 【Android 10 源码】MediaRecorder 录像流程:MediaRecorder 配置
  4. 数据库系统原理【自考教材笔记】
  5. android中的广播大全,android中的广播
  6. 实例分割总结 Instance Segmentation Summary(Center Mask、Mask-RCNN、PANNet、Deep Mask和Sharp Mask)
  7. 前端Element-UI中show-overflow-tooltip属性不生效
  8. 用Python写公司年会抽奖程序!
  9. 心率血氧接收芯片,助力智能运动手环领域
  10. iOS上架小课堂:被拒解决方案汇总【2.1蓝牙权限、3.1.1微信小程序、5.1.1权限使用说明、 境外IP访问权限等】