linux的内核主要由如下模块组成:
- 进程管理
- 定时器
- 中断管理
- 内存管理
- 模块管理
- 虚拟文件系统接口
- 文件系统
- 设备驱动程序
- 进程间通讯
- 网络管理
- 系统引导
整体的模型如图所示,Linux内核是计算机硬件和各类应用程序之间的媒介。
Linux是类Unix系统,因此有一套基于Unix的准则和哲学:
- 小便是美
- 让程序只作好一件事
- 可移植性比效率更重要
- 一切皆文件:使用方便;把硬件当作文件处理是安全的。
- 使用shell脚原本提升效率和可移植性。
- 避免使用可定型地下的用户界面
- 全部程序都是数据的过滤器
Linux Shell
Linux shell是用户和Linux内核之间的接口,为用户提供使用操做系统的接口,当Shell向Linux传递命令的时候,内核作出相应的反应。
- shell 是一个用户程序,或者说是一个为用户和系统交互提供的环境
- 从标准输入 设备读取命令的语言解释程序,拥有本身内建的shell命令集,固然shell能够被其余程序调用
- 打开控制台,shell就会运行
- shell不是内核一部分,可是它使用系统内核执行程序,建立文件
那使用方式打开shell呢?
- 终端。Linux提供基于GUI的登录系统。形如XTerm、Gnome、KDE
- 安全shell链接(SSH),能够经过SSH远程登陆服务器或工做站访问其shell
- 控制台,基于文本的登录系统
Shell执行命令的解析方式:
首先shell执行命令时,shell首先检查命令是不是
内部命令,若不是检查是不是一个应用程序(Linux自己程序or商业程序or自由软件),shell在搜索路径里寻找这些程序。若是都没有找到,shell将会显示一条错误信息。若是找到,该命令将被分解为系统调用并传递给Linux内核。
shell下的组合命令:(备注:本身不经常使用的)
- ctrl + w :删除光标位置前的单词
- ctrl + u :清空行
- ctrl + r :搜索先前使用的命令
- ctrl + c:停止当前指令
- ctrl + d:退出登陆shell
- esc + t:调换光标前的两个单词
Linux Shell 重要特性:其自己就是一个解释类型的程序设计语言。所以 shell职场绝大多数在高级语言中的元素:函数、变量、数组
程序控制结构等。
shell种类
由此看到在Linux里面支持的shell不少。最经常使用的种类有
Bourne Shell(sh)、C Shell和Korn Shell。
Bourne-Again Shell(bash)是 Linux系统中最经常使用的Shell。它是Bourne Shell的扩展,与Bourne Shell彻底向后兼容,而且在Bourne Shell的基础上增长、加强了不少特性,具备不少特点,能够提供如命令补全、命令编辑和命令历史等功能。
Korn Shell(ksh)集合了C Shell和Bourne Shell的优势,并和Bourne Shell彻底兼容。Linux系统提供了ksh的扩展,它支持任务控制,能够在命令行上挂起、后台执行、唤醒或终止程序。
如此众多的shell,系统如何选择呢?
答:用户登陆到Linux系统时,由/etc/passwd这个文件决定用户将要使用哪一种Shell。查看当前帐户shell:echo $SHELL
S
hell脚本
shell脚本就是早期dos的.bat文件。让使用者能够一个操做执行多条命令。提供了数组、循环、条件以及逻辑判断等重要功能,让使用者能够直接以Shell来写程序。
Shell脚本是利用Shell的功能所写的一个程序,这个程序是
纯文本文件格式,将一些Shell的语法与指令写在里面,而后用
正则表达式、
管道命令以及
数据流重定向等功能,以实现咱们所须要的功能。
Shell脚本通常由如下几部分构成:
- Shell关键字——例如if…else,for do…done。
- Shell命令——例如export,echo,exit,pwd,return。
- Linux命令——例如date,rm,mkdir。
- 文本处理功能——例如awk,cut,sed,grep。
- 函数——经过函数把一些经常使用的功能放在一块儿。例如,/etc/init.d目录中的大部分或所有系统Shell脚本所使用的函数都包含在文件/etc/init.d/functions中。
- 控制流语句——例如if…then…else或执行重复操做的Shell循环。
为何使用Shell脚本
在Linux机器启动时,它执行/etc/rc.d目录中的Shell脚原本加载系统配置和运行服务。
- 使用简单;
- 节省时间。能够把冗长的重复的一连串命令合并成一条简单的命令;
- 能够建立你本身的自动化工具和应用程序;
- 使系统管理任务自动化;
- 由于脚本通过很好的测试,因此使用脚本作相似配置服务或系统管理任务时,发生错误的机会将大大减小。
尝试写一个脚本:
#!/bin/bash
#My first script
ls -l .*
脚本的第一行:告诉shell使用什么程序解释脚本。
本例中是
/bin/bash。其余脚本语言中(perl,Python)也使用该机制。
脚本第二行:注释。每行出现“#”符号都被bash忽视。
脚本最后一行:ls命令。
注意:默认状况下,Linux不容许文件执行。所以须要chmod命令增长“x”属性。2个方式 数字和字符模式。(755 a+x)
Shell在Linux环境的角色
Linux环境的构成部分:
内核——Linux操做系统的核心。
Shell
——为用户和内核提供一个交互的接口。
终端模拟器
——它容许用户输入命令并在屏幕上回显命令的运行结果。
Linux桌面和窗口管理器
——Linux桌面是各类软件应用程序的集合。它包括文件管理器、窗口管理器、终端模拟器等等
当Linux系统的运行级别为3时,用户能够从本地登陆到系统控制台,或在系统运行级别为5时,直接以图形界面方式登陆。
用户登陆时Bash将会使用如下初始化文件和启动脚本:
- /etc/profile——系统级的初始化文件,定义了一些环境变量,由登陆Shell调用执行。
- /etc/bash.bashrc或/etc/bashrc——其文件名根据不一样的Linux发行版而异,每一个交互式Shell的系统级的启动脚本,定义了一些函数和别名。
- /etc/bash.logout——系统级的登陆Shell清理脚本,当登陆Shell退出时执行。部分Linux发行版默认是没有此文件。
- $HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile——用户我的初始化脚本,由登陆Shell调用执行。这三个脚本只有一个会被执行,按照此顺序查找,第一个存在的将被执行。
- $HOME/.bashrc——用户我的的每一个交互式Shell的启动脚本。
- $HOME/.bash_logout——用户我的的登陆Shell清理脚本,当登陆Shell退出时执行。
- $HOME/.inputrc——用户我的的由readline使用的启动脚本,定义了处理某些状况下的键盘映射
具体细分的话,有两种状况:
- 当用户登陆时,登陆Shell会调用以下脚本:
- /etc/profile——当用户在运行级别3登陆系统时首先运行。
- /etc/profile.d——当/etc/profile运行时,会调用该目录下的一些脚本。
- $HOME/.bash_profile、$HOME/.bash_login和$HOME/.profile——在/etc/profile运行后,第一个存在的被运行。
- $HOME/.bashrc——上述脚本的中一个运行后即调用此脚本。
- /etc/bashrc或/etc/bash.bashrc——由$HOME/.bashrc调用运行
- 当一个交互式的非登陆Shell启动时,Bash将读取并运行以下脚本:
- $HOME/.bashrc——若是此文件存在即被运行。
- /etc/bashrc——将被$HOME/.bashrc调用运行。
- /etc/profile.d——此目录下的脚本将被/etc/bashrc或/etc/bash.bashrc调用运行。
Bash启动脚本主要设置的环境有:
- 设置环境变量PATH和PS1(咱们将在2.3.1小节中介绍这两个变量);
- 经过变量EDITOR设置默认的文本编辑器;
- 设置默认的umask(文件或目录的权限属性);
- 覆盖或移除不想要的变量或别名;
- 设置别名;
- 加载函数。
------------------------------------------------------
<未完>