OS 工作原理

Ink Drawings
OS  software     Kernel  内核
                             driver(驱动程序)
Ink Drawings
各种软件资源:qq wechat office等

Ink Drawings
hardware  硬件  CPU  内存     网络    disk

内核里有大量的驱动

操作系统使用硬件是因为有内核这些东西

 

GUI 图形化的用户接口

GUI--> graphical user interface 图形化的用户接口, 用户操作图形软件,软件通过内核请求资源,内核调用硬件资源,硬件处理,硬件返回信息给图形,用户看到图形显示。

 

命令行管理Linux(基础)

用户敲命令,命令向内核请求资源,内核调用硬件资源,硬件处理,硬件返回信息到命令行接口,用户看到命令行显示的结果。

 

Windows 能进行的管理:

文件管理(文件的增删改查)

进程(运行中的程序)管理(进程的增删改查)

软件管理(软件的增删改查)

权限管理

用户管理(同时一个用户使用系统)

网络管理(设置网络,配置ip,wiffi,有线)

防火墙管理

磁盘管理

 

Linux能进行的管理

文件管理(文件的增删改查)

进程(运行中的程序)管理(进程的增删改查)

软件管理(软件的增删改查)

权限管理

用户管理(同时一个用户使用系统)

网络管理(设置网络,配置ip,wiffi,有线)

防火墙管理

磁盘管理

 

以上内容,全都是操作系统的基本管理,只要是操作系统,理论上都需要具备以上功能。

 

无论GUI还是CLI,都叫做shell

用户操作的是shell,shell向内核请求资源,内核调用硬件资源,硬件处理,硬件返回到shell,用户通过shell查看结果

 

调整字体临时大小:右键,点open terminal, 打开命令行接口,变大 :ctrl+shift+"+" , 变小:ctrl+'-'

 

命令1:echo 

命令2:bc  (交互式命令)

命令3:expr (非交互命令)

命令4:date

命令5:cat

命令6:hostnamectl set-hostname rhel8

 

CLI命令行接口的shell

 

$: 表示普通用户

#:表示特权用户

 

我是谁 : whoami

我在哪儿:pwd (print woking directory)

我要干什么:

 

操作系统的目录结构

windows的目录结构介绍:

文件的路径

顶级目录: C D E F……

Linux的目录结构介绍:

 

Linux:  根目录

 

根目录

一级目录

 

Linux的目录结构:

“/”表示根目录,根目录是linux结构中最顶级的目录,类似windows 中的C D E 盘

/boot 目录 : 存放的系统的启动配置文件和内核文件

/dev目录:存放的是Linux的设备文件

/etc目录:存放的是Linux的配置文件

/home目录:存放的是Linux普通用户的家目录

/media目录:挂载点目录

/mnt目录:挂载点目录

/run目录:挂载点目录

/opt目录: 存放软件文件的目录

/proc目录: 存放的是进程文件

/srv目录:存放的是一些资源文件

/sys目录:存放一些资源文件(系统资源)

/tmp目录:存放的是一些临时文件(非常重要)

/usr目录:Linux 软件默认的安装目录。

/var目录:存放Log日志文件的目录(非常重要)

 

Linux通过图形查看到右下角有箭头

2.Linux的基础文件管理和高级文件管理_linux

叫做Linux的快捷方式

/bin-->/usr/bin :存放的是普通用户执行的命令

/lib-->/usr/lib :存放的是32位的函数文件

/lib64-->/usr/lib64 :存放的是64位的函数文件

/sbin-->/usr/sbin :存放的是超级用户执行的命令

 

/root: 是root用户的目录

 

su命令详解:

su (switch user): 普通用户切换到任何一个用户都需要输入密码,root用户切换到任何用户都不需要密码

 

su - username

su 命令切换用户如果不加"-"的话只是shell层面的切换,用户的环境变量实际上是没有变的

 

 

su -

su - root 是一样的,没区别

 

Linux的文件管理

文件的增删改查

文件的创建(文本文件的创建,目录文件的创建)

文件的删除(文本文件的删除,目录文件的删除)

文件的修改(文件内容的修改,文件属性的修改)

文件的查看(文件内容的查看,文件属性的查看)

 

在讲文件管理之前,我们必须明白路径的概念,通过路径你能找到一个具体的文件

什么是绝对路劲 :以顶级目录开头的路径就是绝对路径,在linux里面“/”就是顶级目录,以/开头的路径就是绝对路径

什么是相对路径 :不以/开头的路径就是相对路径

 

cd (change directory)

cd path(相对路径或者绝对路径)

cd .. 表示切换到上级目录

cd ~ 表示切换到当前shell用户的家目录

cd - 表示切换到上次所在的目录 (反复的敲,会在两个目录下来回的切换)

 

ctrl+shit+t 多一个命令行的shell,然后alt+1~9来回切换,ctrl+d关闭当前的shell

 

查看

ls命令作用和基础用法

我要去哪儿

我要变成谁

我才能干什么

 

Linux的文件管理

文件的增删改查

文件的创建(文本文件的创建,目录文件的创建)

文件的删除(文本文件的删除,目录文件的删除)

文件的修改(文件内容的修改,文件属性的修改)

 

 

文件的查看(文件内容的查看,文件属性的查看)

文件属性的查看, ls (list)

ls 如果什么都不加,表示显示当前目录下的所有文件名称

ls 后面加路径,就能显示路径下面的文件内容,如果ls后面跟的是目录,就把目录下面的文件名字列出来,如果ls后面跟的是普通文件,就把普通文件的名字列出来。

ls 后面可以跟多个路径

如果想看文件的详细信息,需要加参数

 

ls -l 表示显示文件的详细信息

ls -a 参数表示显示以"."开头的文件,在Linux中,以“.”开头的文件是隐藏文件

ls -d 表示显示目录本身,而不是目录下的内容

参数在99%的命令里,参数的顺序是无所谓的。

 

2.Linux的基础文件管理和高级文件管理_linux_02

 ls -l 显示的内容,第一列表示文件的类别,“-”表示普通文件,"d"表示目录文件,“b”表示块设备(存储设备),“l”表示快捷方式(软链接)

 

文件拥有者 文件所属组

文件大小 单位:字节 (Byte)

1k=1024Byte

1MB=1024kB

 

-h参数必须和-l参数一起使用,-h参数可以显示大小

 

cat 命令查看文件的内容

文本文件内容

cat          文本文件的path1 文本文件的path2

 

head       文本文件的path,显示文件的前10行

head -n 5 /etc/passwd  显示文件的前5行

head -5 等于  显示文件的前5行

 

tail        文本文件的path ,显示文件的后10行内容

tail -n 5 文本文件的path,显示文件的后5行内容

tailf  文本文件的path,不断的查看文件的后10行内容

 

more  当文本内容非常多的时候,cat命令会一次性将所有的内容输出到屏幕上,对于文本文件内容比较多的文件,more命令可以分页显示这些内容。

回车:可以让你看下一行的内容

空格:可以让你看你下一页的内容

q: 退出more 的状态

more 不支持向前翻页

 

less 和more 差不多,less的好处是可以向前翻页,more 有的功能less 都有,more 没有的less也有

 

文件的创建(文本文件的创建,目录文件的创建)

touch  文件的path1, 文件的path2 …

touch 创建的文本文件默认都是空的

 

Linux和Windows里所谓的后缀名字都是扯淡的

为什么说windows里面有后缀名呢? 菜鸡保护机制

 

在Linux里面,  path  查看文件的类型

 

touch 文本文件

mkdir 创建目录文件(mke directory)

 

-p 目录的递归创建

 

増  touch   mkdir  (mkdir -p)

    rm -i

改   mv cp

查  cat  more less head tail

 

目录文件的删除 rmdir (rm=remove, dir=directory)

删除目录很致命

rm (remove移除)  下岗命令,能不用就尽量不用

rm命令 path1 path2

 

rm -i参数可以提示是否删除一个文件 进入到交互模式

touch aa{1..100} 创建100个文件

 

 

如果是root删除文件,为了防止不断的提示是否删除,可以加-f参数,表示force

-r 参数能赋予rm删除目录的能力,递归删除

-f 强制删除

-r -f 一起用,文件目录都能在不提示的情况下,直接干掉

 

Linux命令的alias

直接在命令行上alias rm='rm -i',创建的命令是临时的,shell关闭后就没有了。如果想要创建永久的alias命令,需要修改环境变量配置文件

 

Linux的拷贝命令和剪切命令

cp (copy)

mv (move)

 

cp 源文件1 源文件2  … 目的目录path

 

cp 源文件 目的目录/aaaaaaa

cp如果最后一个文件并不是一个存在的目录,就将cp指定的文件拷贝到目标名字的上层目录,并且将名字更改为目标名字

 

cp  -a 保留原有文件的属性

 

文件的移动mv

用法和cp基本一致

 

如果移动的源文件和目的文件路径一致,就可以实现改名的操作

 

Linux通配符的使用

通配符,是文件管理的神器。

rm -rf *

? 就是通配符的一个, "?"表示一个非空的任意字符

\转义字符,能让特殊字符失去原有的功能

[] 表示匹配一个字符

*表示匹配任意数量的字符

rm -rf

[a - z] 表示匹配所有的小写字母

[A -Z]表示匹配所有的大写字母

[1-9]表示匹配所有的数字

 

vim path (文件)

当使用vim指定一个文本文件的时候,会进入该文本文件,并查看到该文本文件的内容。此时,默认请侠士不能对文件内容进行修改的。

vim分为4大模式:

命令模式

编辑模式(插入模式)

末行模式

可视化模式

 

 

当vim指定文件然后回车,进入的第一个模式是命令模式

hjkl 分表代表 左 上 下 右

 

命令模式

gg: 将光标切换到行首 (文本的第一行的最前面)

G: 将光标切换到最后一行,shift+g=G

输入nG就能切换到第n行,3G,就能切换到第三行

 

光标所在位置按x,就能删除光标所在位置的字符。如果连续按x,就会不断的向右删除字符。

光标所在位置按X,就能删除光标所在位置左侧的第一个字符,如果连续按X,就会不断的向左删除字符。

 

按u能撤回上一次的操作,相当于windows里面的ctrl+z,windows的ctrl+z是有限制的。windows能撤回次数有限,取决

于编辑软件的缓冲区设置。vim命令模式下的u,几乎可以无限次的撤回到文件内容最开始的部分。按住u,就会一直撤回,直到恢复到你刚进入到文本的样子。

 

在命令模式下输入iIOo都能进去到编辑模式。

 

编辑模式:

命令模式下按i就会开始从光标所在位置的左侧开始插入文本

命令模式下按I,光标就会立刻到达光标所在行的行首开始插入文本

命令模式下按a,就会开始从光标所在位置的右侧开始插入文本

命令模式下按A,光标就会立刻到达光标所在行的行尾开始插入文本

命令模式下按o,就会在光标所在行下面另起一行开始插入文本

命令模式下按O,就会在光标所在行上面一行另起一行开始插入文本

 

让你在某个配置文件第486行配置下面另起一行,添加Listen 223

486G o

Listen 223

 

命令模式下还有很多命令

dd: 在命令模式下按dd就能删除光标所在行,在命令模式下按5dd就能删除包含光标所在行的下5行

yy:在命令模式下按yy就能复制光标所在行,在命令模式下按8yy就能复制包含光标所在行的下8行

p:如果在命令模式的上一次操作中包含dd或者yy这种命令,dd和yy所删除或者复制的那些行,都可以通过p命令粘贴出来。

P:在命令模式下输入P,会将上次dd或者yy指定的行,增加到所在行的上面

 

 

在命令模式下输入"/"或者":"就能进入末行模式

末行模式下常见的操作就如下几种:

1.查看指定的字符串

2.文本内容的替换

3.保存文本内容

4.退出vim编辑器 (如果修改的内容没有保存是不能正常退出编辑器的,如果强制退出会导致编辑的内容丢失)

由于Linux是一个多用户的操作系统,所以有可能出现多个用户同时编辑同一个文件的情况,所以要学会查看vim的异常状态。

 

:set number回车能显示行号

: set nonumber回车去掉行号

 

  1. 文本内容的替换

:n1,n2s/old content/new content/global

上面的操作会将第n1行开始,n2行结束,这些行之间且包含n1和n2行中old content替换成new content

 

:5,10/123/456/g   第5行到第10行的123全部替换成456

 

 

:1,$s/old content/new content/g

 

$就表示最后一行

 

vim 编辑器异常处理

 

 

export LANG=zh_CN.utf8

 

vi 编辑器和vim 编辑器

vim 相当于 vi plus

 

 

Linux的重定向和管道

 

输出重定向

当输入一个命令后,命令产生了结果,结果默认是输出到屏幕上的。

默认情况,无论一个命令执行正确与否,结果都会默认输出到屏幕上。

 

在有些情况下,可能需要保留命令或者脚本,当做Log 事后分析

将命令或者脚本产生的结果保存下来的意义。

 

  •  >  和 >>是正确的重定向,能将正确的结果重定向到文件中,区别是:
  •  > 相当于正确的覆盖
  • >>  相当于正确的追加

 

 

2 > 就是错误的覆盖

2 >>就是错误的追加

 

&> 正确错误都覆盖

&>>正确错误都追加

&>> /dev/null

/dev/null是一个特殊的文件,如果将重定向指向这个文件,那么就相当于将执行结果送到黑洞中。直接没了。

 

有些时候,我们不想让这个命令产生结果,就送到黑洞中。

 

输入重定向 (可以将交互式的命令变成非交互式的命令)

mail 命令能发送邮件

<

<<

完全不一样

 

 

管道

(文件管理里面比较重要的概念)

 

1.管道的左边和右边都有命令 (左边任意命令 右边特定命令)

2.管道左边的命令会产生输出结果,经过管道后就变成了输入。

3.管道右边的命令总是接收输入的命令。

 

 

接收输入的命令:

cat

mail

 

head  文件

tail     文件

more   文件

less  文件

 

 

ls | xargs cat

 

grep 命令  (抓)  过滤文件中的内容,如果过滤的内容存在,就将改行显示出来

grep  内容 普通文本文件

-i不区分大小写

-v 反向抓取

-A

-B

-n 显示行号

 

 

grep 正常操作只能抓取文件的内容,配合管道,可以抓任何内容。

 

正则表达式 (存在的意义是为了匹配文件内容)   log(日志)分析

 

^ (^a) 表示以a开头

 

$  (c$) 表示以c结尾

 

. (a.)表示匹配任意一个非空字符

 

*(a*)

 

? (.?) 表示匹配任意两个非空字符

 

 

grep ^a | grep b$  (抓取以a开头以b结尾)

(.*) 表示匹配任意非空字符串

(.?)111

 

获取Linux帮助和快捷键

文件管理命令,Linux命令本身并不难,难的是命令包含非常多的参数

man

info

help

红帽官方文档 access.redhat.com

百度

谷歌

软件本身的帮助文档

 

man 手册中命令的级别

 

2.Linux的基础文件管理和高级文件管理_linux_03

 

快捷键:

ctrl+l   清屏 (clear)

ctrl +a 将光标移到最左侧

ctrl+ e将光标移到最右侧

ctrl+u 将删除光标所在位置到最左侧

ctrl +y 还原删除操作

ctrl+w 删除光标到左侧的一个word

 

向上箭头  能列出上次使用的命令

向下箭头  和向上箭头相反

 

history 命令能查看历史命令

 

Linux支持路径的补全

按一下Tab 部分补全

按两下Tab 列出可以补全的命令