Shell简介
1、Shell的英文含义是“壳”。 2、Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,返回给用户。换句话说,3、shell是为用户与机器之间搭建成的一个桥梁,让我们能够通过Shell来对计算机进行操作和交互,从而达到让计算机为我们服务的目的。 4、Shell独立于内核,内核是Linux系统的心脏,从开机自检就驻扎在计算机内存中,直到计算机关闭为止。用户的应用程序存储在计算机硬盘上,仅当需要时才被调入内存。5、Shell是一种应用程序,当用户登陆Linux系统时,Shell就会被调用到内存执行。
Shell配置文件读取
1、login shell(登录) 读取顺序:
i、/etc/profile -> ~./bash_profile、~./bash_login、~./profile
ii、/etc/profile -> ~./bashsrc
2、non-login shell(非登录) 读取顺序: ~./bashsrc
命令执行机制
1、字符解析 字符串截取 字符串替换
2、shell展开 shell中有7种展开。展开的顺序是:大括号展开;波浪展开、参数和变量展开、算术展开和命令替换(以从左到右的方式完成);分词;和文件名扩展。在支持它的系统上,还有一种额外的扩展:进程替换。这与波浪线、参数、变量、算术展开和命令替换同时执行。在执行这些扩展之后,原始单词中的引号字符将被删除,除非它们本身被引号括起来(引号删除)。只有大括号展开、分词和文件名展开才能增加展开的单词数;其他扩展将单个单词扩展为单个单词。唯一的例外是$@和 $∗ 以 及 *以及 ∗以及 {name[@]}和${name[*]}(见数组)的扩展。
3、查找命令、执行
判断命令
test[ [[
选择命令
if elif else if
case in ) ease
循环
while [condition];do;done
until[condition];do;done
for in [list];do;done;
shell默认变量
shell常用默认变量如下:
一、文件参数变量
在执行脚本时,可以向脚本传递参数。$1是第一个参数,$2是第二个参数,以此类推。而$0是文件名,包含路径。
1.创建文件test.sh
2.vim test.sh
3.按i进入编辑模式
4.#!/bin/bash
echo "文件名:" $0
echo "第一个参数:" $1
echo "第二个参数:" $2
5.执行脚本 ./test.sh aaa zzz #记得在执行前给文件加执行权限 chmod +x test.sh
(以下为输出)
文件名:./test.sh
第一个参数:aaa
第二个参数:zzz
二、其他参数变量
1.$#:意思是传进文件传了几个参数,就像上面举的例子是两个参数
2.$*:由所有参数构成的用空格隔开的字符串,如上例为"$1 $2"
3.$@:每个参数分别用双引号括起来的字符串,如上例为"$1" "$2"
4.$$:脚本当前运行的进程ID
5.$?:上一条命令的退出状态(exit code),0表示正常,其他值表示错误。可以拿return来理解
6.$(command):返回这条命令的stdout。其实说白了就是标准输出。
7.`comdmand`:返回这条命令的stdout。注意不是单引号,是tab键上面的那个符号