感觉内容越来越难,有关shell的章节看完后没明白是什么意思,有点像编程的赶脚,先记下来吧。
linux中的bash
kernel(内核)控制工作是通过“shell”将我们输入的命令与内核通信,好让内核可以控制硬件来正确无误地工作。
能够操作应用程序的接口都能够称为shell。
/etc/shells这个文件存放了linux可以使用的shell。
bash shell的功能和优点:
命令记忆能力:history功能;
命令与文件补全功能:Tab键的好处;
命令别名设置功能:alias;
作业控制、前台、后台控制(job control、foreground、background);
程序脚本: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变量名称”
env(environment)查看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 ~]#.
$关于本shell的PID,$本身也是个变量,代表目前这个shell的线程代号,即所谓的PID(Process ID)。
?关于上个执行命令的回传码,是上一个执行的命令所回传的值。当我们执行某些命令时,这些命令都会回传一个执行后的代码,一般来说,如果成功执行该命令,则会回传一个0值,执行过程发生错误,就会回传错误代码,非0。
export:自定义变量转成环境变量。
环境变量和自定义变量的差异:该变量是否会被子进程所继续引用。子进程仅会继承父进程的环境变量,不会继承父进程的自定义变量。
当你登陆linux并取得一个bash后,你的bash就是一个独立的进程,成为PID的就是,我们在原本的bash下面执行另外一个bash,结果操作的环境接口会跑到第二个bash去(就是子进程),那原本的bash就会处于暂停的情况(sleep),只有将第二个bash结束掉(执行exit或logout),才能回到父进程。
一个变量,只有将自定义变量换成环境变量,菜可以让该变量值继续存在于子进程,利用export variablename。
语系变量:locale显示语系变量设置,locale -a查看所有语系。
变量的有效范围:
环境变量=全局变量(可被子进程引用)
自定义变量=局部变量
变量键盘读取、数组与声明:
read:读取来自键盘输入的变量。-p后面接提示符、-t后面接等待的时间(s);
declare/typeset:声明变量类型,-a定义成数组(array)类型、-i定义成整数数字(integer)类型、-x用法和export一样,将自定义变量变成环境变量、-r将保留设置成只读(readonly)类型,该变量不可被更改内容和重设。
文件系统及程序的限制关系:ulimit
ulimit [参数] [配额],-H:hard limit严格设置,必定不能超过这个设置数额、-S:soft limit警告设置,可以超过这个设置,但是若超过则有警告信息、-a后面不接任何参数,可列出所有的限制额度、-f此shell可以创建的最大文件容量(一般设置为2GB)单位为KB。
变量内容的删除、替代与替换:
#:符合删除文字的“最短的”那一个;(%)
##:符合删除文字的“最长的”哪一个。(%%)
#从变量内容的前面开始,%从变量内容的后面开始。
本文出自 “开�岬闹魈�” 博客,谢绝转载!