感觉内容越来越难,有关shell的章节看完后没明白是什么意思,有点像编程的赶脚,先记下来吧。

 

linux中的bash

kernel(内核)控制工作是通过“shell”将我们输入的命令与内核通信,好让内核可以控制硬件来正确无误地工作。

能够操作应用程序的接口都能够称为shell

/etc/shells这个文件存放了linux可以使用的shell

bash shell的功能和优点:

命令记忆能力:history功能;

命令与文件补全功能:Tab键的好处;

命令别名设置功能:alias

作业控制、前台、后台控制(job controlforegroundbackground);

程序脚本:shell script

通配符(wildcard)。

查看命令是来自外部命令(其他的非bash所提供的命令)或是内置在bash当中的命令:type name,不加任何参数type会显示出name是外部命令还是bash内置命令、-t参数,type会将name以下面这些字眼显示出来:1.file外部命令,2.alias该命令为命令别名所设置的名称,3.builtin该命令为bash内置命令、-p后面接name为外部命令时,才会显示完整文件名称、-a会由PATH变量定义的路径中,将所有含name的命令都列出来,包含alias

shell的变量功能:

变量就是以一组文字或符号等,来替代一些设置或者是一串保留的数据。

echo $name,显示变量。

变量的设置功能:

1.变量与变量内容以一个等号“=”来连接,例如:myname=xeyes

2.等号两边不能直接接空格符;

3.变量名称只能是英文字母与数字,但是开头字符不能是数字;

4.变量内容若有空格符使用双引号或单引号将变量内容结合起来,双引号内的特殊字符如$等,可以保有原有的特性;单引号内的特殊字符则仅为一般字符(纯文本);

5.可用转义字符“\”将特殊符号(如[enter])、$\、空格符、!等)变成一般字符;

6.在一串命令中,还需要通过其他的命令提供信息,可以使用反单引号“`”或“$命令”;

7.若该变量为了增加变量内容时,则可用“$变量内容”或${变量}累加内容;

8.若该变量需要在其他子进程执行,则需要以export来使变量变成环境变量,如report PATH

9.通常大些字符为系统默认变量,自行设置变量可用小写字符,方便判断;

10.取消变量的方法为使用“unset变量名称”

envenvironment)查看shell环境下所有环境变量和环境变量说明。

HOME:代表用户的主文件夹;

SHELL:告知我们目前这个环境使用的shell是那个程序,linux默认使用/bin/bash

HISTORY:历史命令;

MAIL:我们使用mail这个命令在收信时系统会去读取的邮件信箱文件(mailbox);

PATH:执行文件查找的路径,目录与目录中间以冒号(:)隔开;

LANG:语系数据;

RANDOM:随机数变量,/dev/random随机数生成器文件,0~32767

set:查看所有变量,包括环境变量和自定义变量。

PS1提示符设置:

默认:[\u@\h \W]\$ 我的主机[root@redhat ~]#.

$关于本shellPID$本身也是个变量,代表目前这个shell的线程代号,即所谓的PIDProcess ID)。

?关于上个执行命令的回传码,是上一个执行的命令所回传的值。当我们执行某些命令时,这些命令都会回传一个执行后的代码,一般来说,如果成功执行该命令,则会回传一个0值,执行过程发生错误,就会回传错误代码,非0

export:自定义变量转成环境变量。

环境变量和自定义变量的差异:该变量是否会被子进程所继续引用。子进程仅会继承父进程的环境变量,不会继承父进程的自定义变量。

当你登陆linux并取得一个bash后,你的bash就是一个独立的进程,成为PID的就是,我们在原本的bash下面执行另外一个bash,结果操作的环境接口会跑到第二个bash去(就是子进程),那原本的bash就会处于暂停的情况(sleep),只有将第二个bash结束掉(执行exitlogout),才能回到父进程。

一个变量,只有将自定义变量换成环境变量,菜可以让该变量值继续存在于子进程,利用export variablename

语系变量:locale显示语系变量设置,locale -a查看所有语系。

变量的有效范围:

环境变量=全局变量(可被子进程引用)

自定义变量=局部变量

变量键盘读取、数组与声明:

read:读取来自键盘输入的变量。-p后面接提示符、-t后面接等待的时间(s);

declare/typeset:声明变量类型,-a定义成数组(array)类型、-i定义成整数数字(integer)类型、-x用法和export一样,将自定义变量变成环境变量、-r将保留设置成只读(readonly)类型,该变量不可被更改内容和重设。

文件系统及程序的限制关系:ulimit

ulimit [参数] [配额]-Hhard limit严格设置,必定不能超过这个设置数额、-Ssoft limit警告设置,可以超过这个设置,但是若超过则有警告信息、-a后面不接任何参数,可列出所有的限制额度、-fshell可以创建的最大文件容量(一般设置为2GB)单位为KB

变量内容的删除、替代与替换:

#:符合删除文字的“最短的”那一个;(%

##:符合删除文字的“最长的”哪一个。(%%

#从变量内容的前面开始,%从变量内容的后面开始。

我和linux的第十八天_应用程序