您的位置:首页 > 运维架构 > Linux

《Linux命令行》学习笔记

2016-04-12 20:59 519 查看
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

                                                                Shell脚本
    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(文件或目录的权限属性); 
    覆盖或移除不想要的变量或别名; 
    设置别名; 
    加载函数。

------------------------------------------------------
<未完>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux