Linux的哲学思想
1.一切皆文件
把几乎所有资源、包括硬件设备都组织为文件格式
2.由众多单一目的的小程序组成,一个小程序只实现一个功能,组合小程序完成复杂任务
3.尽量避免与用户交互
好处:实现脚本编程,以自动完成某些功能,在设计之初就为脚本编程提供了一个保证或可能性
4.使用纯文本文件保存配置信息
目标:一款合适的文本编辑器,就能完成系统配置工作。
操作系统的组成部分:
硬件hardware 》 操作系统kemel 》 库 》 程序
库可以让我们更方便调动操作系统,但少数人不需要库也能调动操作系统,所以库不是必须的,库的输出接口叫库调用。
终端设备:用户与主机进行交互就必须用到的设备
终端分为:物理终端、虚拟终端
物理终端也叫控制台Console
Ctre+Alt+F(N)可以切换终端
系统启动以后一般默认从虚拟终端F1上进行登录而不会使用物理终端即便是在物理设备上。
刚开机时程序还未运行起来,所以信息都需要输出,这时候应对的是物理终端,一旦程序启动完成,默认就以虚拟终端F1作为用户登录提供的界面,但若是默认启动的是图形界面那么它也会启动图形界面。
图形终端:它也是虚拟的,是附加在物理终端上以软件形式实现的终端,但额外会提供桌面环境,所以图形终端也是虚拟终端的一种
在图形界面下点击右键或某一个应用程序里面有一个opem in Terminal 在里面同样能输入命令。这种终端叫模拟终端。
任何一个可以输入命令的交互式接口都是终端。
模拟终端:纯粹是以软件方式实现,而且不会附加在本地物理终端上,是附加在图形终端或其他远程终端之上的终端
tty命令:查看当前的终端设备的设备文件
虚拟终端设备文件会显示:/dev/ttyX X为数字
模拟终端设备文件会显示/dev/tty/X X从0到无穷大
图形界面打开模拟终端,设备文件会显示:/dev/pts/0
物理终端的设备文件:/dev/console
交互式接口:启动终端以后,在终端设备上附加一个交互式程序
交互式应用程序有:
GUI:图形界面
提供一个窗口管理器和一个桌面系统
CLI:文本界面
shell程序:不同程序员开发,但凡能实现外壳功能的都可以叫shell
在shell中:# 和$是命令提示符
#是管理员提升符
$是普通用户提示符
如何切换shell:
输入命令:/bin/要切换的shell程序的名字,如bash
如何查看系统所支持的所以shell类型:
输入命令:cat/etc/shell
命令 :
输入命令,回车意味着提请shell程序找到所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来,运行起来后就会有一个或多个进程
运行中的程序叫进程
在shell中可执行的命令有两类:内建命令、外部命令
内建命令:由shell程序自带的,而且通过命令形式提供
外部命令:当前系统的某文件系统路径下有对应的可执行程序文件
如何区分内建命令或外部命令:
输入type+命令,如果出现is a shell buil tin 说明这是一个内建命令,内建命令是找不到路径的,因为他是shell自带的命令
命令的运行格式:
COMMAND [OPTIONS.....] [ARGUMENTS.....]
命令 选项 参数
选项:
一个命令的功能可能有很多种,选项其实是用于启用或关闭命令的某些或某个功能
选项一般由横线引导,一般有两种形式:
短选项:一个横线加单个字符 如 -c -l -h
长选项:两个横线加一个单词 如 --word --human-readable
多个短选项同时使用时可以合并: 如 -lc -hc
长选项一般不能合并
但如果不合起来使用,中间一定要用空白隔开
选项与选项、选项与参数、选项与命令之间都要用空白隔开
参数:
参数是可选的,但有些命令是必须的
参数指的是命令的作用对象或命令的生效对象
参数是向命令提供数据的,参数也可以有多个但参数之间要用字符隔开
命令通常写在最左侧,命令本身通常是一个可执行的二进制程序或者是shell自带的内建命令
注意:
1、多选项、以及多参数和命令之间都应该用空白字符隔开,空白字符可以是一个,也可以说多个
2、取消命令执行:ctrl+c
文件系统
文件系统就是能够定位的我们能够理解的编制方式组成
从最顶层开始向下不断层进以后找到一个文件的格式就叫文件路径
绝对启始位置:这个启始位置相对于其他文件而言绝对不可能有其他启始位置
根文件系统:所有文件的路径必须从这个位置开始,然后可以有多个路径,最后层级向下,最后一个节点叫叶子节点
目录是什么:是路径的映射方式,而不是文件夹
文件是什么:
文件由两类数据组成:
元数据:是文件属性部分,如文件的大小、名字
数 据:是文件的内容
路径中每一个可以分叉的叫目录,最后不能分叉的真正存放数据的叫文件,目录也是一种文件,但它是一种特殊的文件
路径分为:
绝对路径:从根目录起始的路径
相对路径:对当前位置起始的路径
如何查看当前在那个路径下:使用Pwd命令
Linux文件下的系统有一下几种特性:
1、文件名严格区分大小写, 如 file File FILE 是不同的文件
2、文件名可以使用除/以外的任意字符
/字符的意义 :(1)、它代表根目录
(2)、它是路径分隔符
3、文件名长度最长不能超过255个字符
4、所有*开头的文件均隐藏文件
Linucx命令帮助的获取
如何获取内部命令的帮助:
输入:help+命令 可以获取其详细帮助手册
任何一个内建命令都是shell自带的,想要获取shell的使用;先确定shell的版本
输入:echo $SHELL 可以显示shell版本 显示为bash
例:man bash
注意:bash自己是一个外部命令,但它里面有大量的内部命令
可以获取很多bash的使用信息,而且介绍了bash内建的一些命令
内建命令不能使用man去获取帮助,因为bash自己就是一个外部命令,使用man只会打开bash的使用手册,内建命令要使用内建命令的help来获取
如何获取内部命令的帮助:
(1)、每一个命令都会自带一个简要的使用帮助手册,通常由命令自身的选项来实现
例:命令 --help
命令 -h
(2)、每一个命令对Linux而言,都有帮助手册在某个目录下存放,存放的地方叫使用手册manual
manual可以简写为man
输入:man 命令
可以找到帮助手册
(3) 、信息页
输入:info 命令
信息页支持超链接,允许在某些关键字符之间跳来跳去
(4)、每一个应用程序自身的帮助文档
(5) 、程序官方文档
打开官方站点,里面会有这个程序的详细使用方式
(6)、发行版的官方文档
发行版的官方文档是我们学习某一个发行版不可多得的,而且很权威的一个资料
(7)、Google
使用Google搜索
外部命令都有一个可执行程序,位于文件系统某目录下。
输入:which或whereis 来获取它在那个位置
shell程序搜寻可执行程序文件的路径定义在PATH环境变量中
输入:echo $ PATH 可查看有哪些路径
注意:它寻找文件是自左自右的,如果在第一个路径下找到了,就不会去找第二个路径,所以它的先后次序很重要
shell搜寻到的外部命令的路径结果会缓存到KV(key-value)
输入:hash 可查看KV
KV缓存有一个副作用,如果其中指向的文件发生改变,缓存中的内容就会失效,需要手动更新,否则就会出错。
当缓存命中了缓存中的结果是错误的,这时就需要清除缓存
输入: -d 命令 表示你要清除的缓存
-r 表示清除全部缓存