shell是什么?

 

一张图认识操作系统简单架构:

认识BASH_第1张图片

在整个操作系统中核心(kernel) 用来管理整个计算机硬件,我们一般不会直接与核心进行交互,

而是使用Shell通过System Call来与核心进行沟通,以让核心达到我们所想要的目的,所以shell

可以说是一个命令解析器,是与内核交互的桥梁。

 

Linux中的shell

    在Linux中有多种shell我们可以通过如下命令:

  cat /etc/shells

    8926377_1404052841ASjf.png

  这里介绍bash!

  /bin/bash是Linux的默认shell,它是GNU计划中重要的软件之一,它的主要功能如下:

    1. 命令记忆

        我们可以通过上下方向键切换历史命令,默认命令记忆功能可以达到100个!

        我们也可以通过命令:history 查看命令执行历史,这些历史记录保存在家目录的 .bash_history文件中

    2. 命令补全

        Tab可以补全未输入完整的命令,也可以补全未输入完整的文件名称

        直接按两次Tab可以查看所有可运行的命令,查看以c开头的命令则可以输入:c 然后按两下Tab

    3. 命令别名

        例如当我们查看文件列表时一般使用:ls –l,那么我们可以对这个命令设置命令别名:

    alias ll='ls -l'

        这样就执行命令:ll 就相当于:ls –l

    4. shell脚本

        我们可以通过编写shell脚本进行类似Windows的批处理

    5. 通配符

        例如我们需要查看某个目录下有多少个以a开头的文件,可以使用如下命令:

    ls -l /usr/bin/a*

shell中的变量

    变量的类型可以分为:

    局部变量:

        作用范围:当前shell进程

        声明方式:

        p_w_picpath

    环境变量:

        作用范围:当前shell进程及子shell进程

        声明方式:环境变量通常以大写字母表示,内置环境变量如:PATH,HOME,MAIL,SHELL

        p_w_picpath

        查看当前系统有多少环境变量可以使用命令:printenv 或者 export

        查看当前系统所有变量可以使用命令:set

        操作:

            1.修改LANG变量的值为en

                方法一:export LANG=en 及时有效

                方法二:touch /etc/profile.d/custom.sh && echo "LANG=en" > /etc/profile.d/custom.sh 在/etc/profile.d下新建一个脚本文件,定义变量LANG使其永久有效。

    位置变量:

        变量说明:位置变量有点类似于占位符,在bash中位置变量用来记录输入参数位置,从1开始,

        第一个参数表示为:$1,第二个参数:$2

    特殊变量:

        $$:保存当前进程ID

        $?:用于保存刚刚执行的命令的状态返回值,0表示执行成功,1-255表示失败,可以通过exit命令来自定义状态返回值

        $#:保存位置参数个数

        $*:保存所有位置参数,将所有参数当做一个字符串

        $@:保存所有位置参数,将所有参数当做n个字符串

     取消变量:

        取消变量使用命令:unset


bash的配置文件

    profile类:交互式登陆的用户

        /etc/profile: 全局,对所有用户有效

        /etc/profile.d/*.sh 全局,对所有用户有效

        ~/.bash_profile: 仅对某用户自己有效

    功能:

        1.设定环境变量

        2.运行命令或脚本

    bashrc类:非交互式登录

        /etc/bashrc: 全局有效

        ~/.bashrc: 仅对某用户自己有效

    功能:

        1. 设定本地变量

        2 .定义命令别名


bash的快捷键

    ctrl + a 跳转到命令行首

    ctrl + e 跳转到命令行尾部

    ctrl + u 删除命令行首至光标所在出的内容

    ctrl + k 删除当前光标所在处至命令行尾部的内容

    ctrl + l 清除屏幕,相当于clear

    ctrl + c 取消或终止

    ctrl + z 将当前命令送至后台执行