shell

shell 是用户与Linux内核进行联系的桥梁,Linux通过shell界面接受用户需求,提供相应的服务。

下面是百度百科中关于shell的解释:
基本上shell分两大类:  
一:图形界面shell(Graphical User Interface shell 即 GUI shell) 
例如:应用最为广泛的 Windows Explorer (微软的windows系列制作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manger (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。
二:命令行式shell(Command Line Interface shell ,即CLI shell)
Shell基本上是一个命令解释器,类似于DOS下的command.com。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。
交互式shell和非交互式shell
  交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
  shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。


Linux中交互式shell: Gnome登录成功以后就会调用交互式shell,它利用/etc/profile和/etc/bashrc以及~/.profile文件来进行环境变量的初始化。

非交互式shell主要是用用于脚本,当利用命令行界面提交一个shell脚本,从开始执行到结束整个环境处于非交互式shell。

shell 既是一个命令解释程序,又是一个强有力的编程语言,因为它可以接受用户命令,同时本身具有判断,循环等语法结构。


运行脚本

1:只需对文件拥有可读权限 

$ sh scripts/test.sh 如果用sh的话,必须在脚本中指定具体是哪个bash.因为sh是dash的符号链接文件,若不指定会冲突

2:chmod是文件具有x属性,然后直接调用

$ scripts/test.sh    $ test.sh(如果test.sh在当前目录)

对于python脚本如果时当前目录的话必须为形式 $ ./test 才能够通过。Python入门


结束脚本

exit n , n=0表示正常退出 n != 0是非正常. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

如果脚本中exit没有n的话,返回状态就是这个exit前面的那个命令的值。它实际上等价于变量$? 

$? 给出之前执行的最后一个命令的出口状态。所以对于函数而言的话,也就是返回返回值了。同时我们可以再终端直接输入$?用于显示出口状态


调用适当的shell解释程序

shell脚本都是以#!,这时一个标示符,用于说明当前文本中接下来有命令,需要到指定的shell中进行解析。而#!就是用于指定这个shell。所以说你在脚本中的命令都是指定shell中所认识的内部函数之类的。如果你有多行#!开头的特殊指示符行,只有第一行起作用。

#!bin/bash  系统默认的bash shell

#!bin/rm    用的是rmfile这个特殊shell,这个特殊的shell只会删除当前脚本,而没有其他作用

#!bin/more  这个特殊的shell,将会显示脚本中除特殊指示符行以外的所有信息


位置参数

命令行传递给shell脚本的参数传递给函数的参数set命令得到的参数通常被称为位置参数。位置参数依次为$0 $1 $2...注意这是分3中情况。而对函数的话,这就给出了我们赋予它实参的一个方式

传递给shell脚本的参数:$0是脚本名,它由shell进行处理。 

变量: $*和$@表示所有的位置参数,$#表示位置参数的总数。

快速传递最后一个参数的方式:

args=$#

lastarg=${!args}


更改位置参数

shift命令把位置参数都向前移一位 $2->$1 $n->$n-1,原来的$1,$n都不存在了。而$0不变,仍旧是脚本名。每执行一次$*和$@都会舍弃一个,$#同时减1。

$*与$@的区别


变量的分类

内部变量(为shell编程提供支持),环境变量(为了内核及系统命令提供环境PATH HOME),本地变量,参数变量及用户自定义变量。

广义的讲每个进程都运行在特定的"环境"里面,它将影响进程的行为。每当开始的时候,shell都会更新环境变量,更新自己的运行环境,如果在shell中定义了环境变量,我们需要通过export命令予以公布,以让子程序能够调用。


变量的赋值

$ variable="hello me"

$ read 

$ for args in list




你可能感兴趣的:(shell)