Linux下命令解释器称为Shell,Shell是一种具备特殊功能的程序,它是介于使用者和 UNIX/Linux *** 作系统之核心程序(kernel)间的一个接口。它接收用户输入的命令并把它送入内核去执行。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
Linux系统提供多种不同的Shell以供选择。常用的有Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)和Bourne Again Shell (简称bash)。----以下内容来自于教材。
(1)Bourne Shell是AT&T Bell实验室的 Steven Bourne为AT&T的Unix开发的,它是Unix的默认Shell,也是其它Shell的开发基础。Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell。
(2)C Shell是加州伯克利大学的Bill Joy为BSD Unix开发的,与sh不同,它的语法与C语言很相似。它提供了Bourne Shell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。但是,C Shell与BourneShell并不兼容。
(3)Korn Shell是AT&T Bell实验室的David Korn开发的,它集合了C Shell和Bourne Shell的优点,并且与Bourne Shell向下完全兼容。Korn Shell的效率很高,其命令交互界面和编程交互界面都很好。
(4)Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。
Shell是Linux系统的外壳,它是用户和Linux *** 作系统之间的接口,并且具有很多种类型。那么什么是Shell?Shell分为哪几类?linux
Shell有什么特性?我们来看看具体的内容介绍。
什么是Shell?
Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一个命令语言,又是一个程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
Shell是一个应用程序,是用户管理应用程序的一个接口。
广义上Shell的分类?
GUI:图形用户界面,KDE、GNOME、XFCE。
CLI:命令行接口,bash、zsh、fishsh、csh、tcsh、ksh。
linux Shell有什么特性?
Shell是一个简单得脚本语言,适合自动化命令执行。
Shell是Linux系统必备的语言,我们 *** 作Linux就是通过命令行bash解释给系统的。
大多数应用软件的启动和配置都是Shell脚本完成的。
要想学好Linux,掌握shell是必不可少的。
命令历史:shell进程会在会话中保存此前用户提交执行过的命令;
查看历史命令:
~]# history
定制history的功能,可通过环境变量来实现
HISISIZE:shell进程可保留的命令历史条数
HISIFILE:持久保存命令历史的文件 (.bash_history)
HISIFILESIZE:命令历史文件的大小
用法:
-c:清空当前历史命令; -a:将历史命令缓冲区中命令写入历史命令文件中; -r:将历史命令文件中的命令读入当前历史命令缓冲区; -w:将当前历史命令缓冲区命令写入历史命令文件中;-d:删除指定命令历史条目;显示最近#条历史命令 (history #)
调用历史列表中的命令 ( ! number)
再次执行上一条命令 (!!)
再一次执行历史列表中最近一个以STRING开头的命令 (!STRING)
调用上一条命令的最后一个参数 (ESC+.、file !$、file alt+.
控制命令历史的方法
环境变量:HISICONTROL
参数:
ignorespace:忽略以空白字符开头的命令
ignoredups:忽略以空白字符开头的命令
ignoreboth:以上两者同时生效
echo $HISTCONTROL
修改变量值
HISICONTROL=Ignorespace
bash 基础特性之:命令补全
命令补全:
shell程序在接收到用户执行命令的请求,分析完成后,最左侧的字符串会被当作命令;
命令查找机制:
根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名\
给定的打头字符串如果能唯一标识某命令程序文件,则直接补全\
不能惟一标识某命令程序文件,再击打一次tab键,会给出列表;
路径补全:
在给定的起始路径下,以对应路径下的打头字符串来逐一匹配起始路径下的每个文件 (tab) 《Linux就该这么学》 一起学习linux
如果能惟一标识,则直接补全。否则,再一次tab给出列表;
bash 基础特性之:命令行展开
~:自动展开为用户的家目录,或指定的用户家目录;
{}:可承载一个以逗号分割的路径列表;
例如:
[options] [directory] 列出树形目录中目录的内容; -l:level 指定显示的层级
tree命令:
mkdir /tmp/{a,b},相当于 mkdir /tmp/a,mkdir /tmp/b;
创建/tmp/sysroot目录下包含以下文件
|--bin
|--etc
|--sysconfig
|--network-scripts
|--sbin
|--usr
|--local
|--bin
|--sbin
|--var
|--cache
bash 基础特性之:命令的执行状态结果
命令执行的状态结果
bash通过状态返回值来输出此结果 (成功:0,失败:1-255);
命令执行完成后,其状态返回值保存于bash的特殊变量中 " $? ";
命令正常执行时,有的还会有命令返回值,其根据命令及其功能不同,结果各不相同;
两种引用命令的执行结果
$(COMMAND)
`COMMAND`
示例:mkdir $(date +%H-%M-%S)
bash 基础特性之:引用
强引用:' '
弱引用:" "
命令引用: ` `
bash 基础特性之:快捷键
Ctrl+a:跳转至命令行行首
Ctrl+e:跳转至命令行行尾
Ctrl+u:删除行首至光标所在处之间的所有字符
Ctrl+k:删除光标所在处至行尾的所有字符
Ctrl+l:清屏(等同clear)
bash 基础特性之:globbing
globbing:文件名通配
星号 :匹配任意长度的任意字符 (pa,pa,pa,pa);
问号?:匹配任意单个字符(pa?,??pa,p?a,p?a?);
中括号[]:匹配指定范围内的任意单个字符 ([a-z] [A-Z] [0-9] [a-z0-9]);
[^]:匹配指定范围外的任意单个字符([^[:upper:]],[^0-9],[^[:alnum:]]);
bash 基础特性之:命令hash
hash命令:
-d COMMAND,删除
-r 情况hash缓存
执行命令的查找顺序: hash、alias、path;
解释:
把命令的查找结果,缓存在缓存中就叫hash;
什么时候需要清空hash表,hash缓存不正确时;
bash 基础特性之:变量
转载于:https://blog.51cto.com/51eat/2409637
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)