Linux Shell
Linux Shell
可以将Shell定义为Linux/GNU或Unix等操作系统中的命令解释器。它是一个运行其他程序的程序。该Shell程序方便了计算机的每个用户,使其成为Unix/GNU Linux系统的接口。因此,用户可以用少量输入数据执行不同的工具/实用程序或命令。
当Shell程序完成了作为通用输出设备的程序的运行后,Shell程序会将结果通过屏幕发送给用户。这就是为什么它被称为" 命令解释器"的原因。
shell不仅仅是命令解释器。此外,shell是一种编程语言,具有编程语言的完整构造,例如函数,变量,循环,有条件执行以及其他许多条件。
因此,GNU/Unix Linux Shell比Windows Shell更强大。
广泛地,Shell被分为以下两个主要类别:
图形Shells
这些Shells通过允许诸如移动,关闭,调整大小和打开窗口,以及在窗口之间切换焦点。可以将Ubuntu OS或 Windows OS 视为一个很好的示例,该示例为用户提供了图形用户界面以与程序进行交互。各种用户不需要为所有操作键入任何命令。
命令行Shell
可以借助命令来访问各种Shell。用户的在线界面。在Windows或macOS/Linux的Terminal中提供了一个称为命令提示符的独特程序,用于键入人类可理解的命令,例如" ls"," cat"等,然后运行该程序。结果会在终端上进一步显示给用户。
在命令行shell上工作对于许多初学者来说很复杂,因为很难记住几个命令。命令行Shell程序非常占主导地位,它允许用户将命令存储在文件中并一起运行。以这种方式,重复动作可以容易地自动化。通常,这些文件在macOS/Linux系统中被称为Shell脚本,而在Windows中被称为批处理文件。
有各种类型的Shell,其讨论如下:
Bash Shell
在 bash shell ,bash表示Bourne Again Shell。它是当今多个Linux发行版的默认Shell。它是sh兼容的Shell。它可以通过Windows OS安装。它促进了sh在交互和编程方面的实际改进,其中包括:
作业控制
命令行编辑
Shell别名和功能
大小不受限制的命令历史记录
以2-64为底的整数算术
Csh/Tcsh Shell
Tcsh是升级的C Shell。此Shell程序可用作Shell程序脚本命令处理器和交互式登录Shell程序。
TcshShell程序具有以下特征:
类似于C的语法
文件名完成和可编程字
命令行编辑器
作业控制
拼写更正
Ksh Shell
Ksh表示 Korn Shell 。它是由 David G. Korn 开发和设计的。就像其他各种GNU/Unix Linux Shell一样,Ksh Shell是一种高级,强大且完整的编程语言,它是一种互惠的命令语言。 C Shell的用法和语法与C编程语言非常相似。
Zsh Shell
Zsh Shell被开发为互惠的,并且结合了各个方面其他GNU/Unix LinuxShell程序,例如ksh,tcsh和bash。另外,POSIX Shell标准规范是基于Korn Shell的。
此外,它是一种强大的脚本语言,与其他可用Shell一样。它的一些独特功能如下:
启动文件
文件名生成
观看登录/注销
概念索引
关闭评论
变量索引
关键索引
函数索引以及我们可以在手册页中找到的各种其他索引。
所有这些shell都执行相似的工作,但是采用不同的命令并促进不同的内置功能。
Fish
Fish代表" 友好的交互式Shell"。它于2005年生产。与其他贝Shell一样,鱼贝Shell的开发使其完全具有用户友好性和交互性。它包含一些好的功能,如下所述:
基于Web的配置
手册页补全
自动建议
对term256终端自动化的支持
完全使用干净的脚本编写脚本
Shell提示符
它被称为命令提示符,它是通过Shell发出的。在显示提示时,我们可以键入任何命令。
Shell在单击Enter后读取我们的输入。它通过查看输入的初始单词来说明我们要运行的命令。可以将一个单词定义为字符的不间断集合。制表符和空格分隔单词。
下面是显示当前时间和日期的常见数据命令示例:
我们还可以借助PS1(环境)自定义命令提示符。
Shell脚本
shell脚本的常见概念是命令列表。一个好的Shell脚本将包含在#simbol之前的注释。
解释Shell函数和脚本。
还有一些条件测试,例如值Y大于值Z,循环使我们能够按海量数据量进行处理,文件用于存储和读取数据以及变量用于存储并读取数据,并且这些脚本可能包含函数。
shell通常是交互式的,这意味着它们通过用户接收命令作为输入并运行它们。尽管有时我们通常希望运行一组命令,但是,我们必须在终端中始终输入命令。
shell脚本包含的语法与其他编程语言类似。当我们具有诸如 C /C++ , Python 等。容易开始。 Shell脚本包含以下组件:
功能
控制流: 如果不是,则为shell循环,大小写等。
Shell命令: 触摸,pwd,echo,ls,cd等。
Shell关键字: 如果可能,则中断,否则,等等。
需要Shell脚本
编写这些Shell脚本有多种原因:
为避免自动化和重复性工作
Shell脚本被系统管理员用于许多常规备份
在shell中包括新功能
系统监视等。
Shell脚本的优势
语法和命令与直接在命令行中输入的语法和命令完全相似。因此,程序员不必切换到完全不同的语法
交互式调试
快速入门
编写shell脚本等要快得多。
Shell脚本的缺点
单个错误可能会修改该命令,这可能是有害的,因此容易造成代价高昂的错误。
语言实现和语法中的设计缺陷。
执行速度较慢。
提供与其他脚本语言不同的最小数据结构。
不太适合复杂和大型任务等。
脚本示例
假设我们创建了一个test.sh脚本。在向脚本中添加其他内容之前,我们必须提醒系统Shell脚本已启动。
注意: 每个脚本都将带有.sh扩展名。
可以在shebang构造的帮助下完成。
例如:
它向系统显示要执行的几个命令将由Bourne shell运行。由于符号#被称为hash和符号!而被称为shebang!
要制作包含这些命令的脚本,我们将shebang构造行放在最前面,然后添加任何命令:
Shell中的注释
我们可以在下面的脚本中添加注释:
使脚本可运行并保存上面提到的内容:
现在,可以运行shell脚本了:
执行后,我们将得到如下结果:
/home/amrood
index.htm unix-basic_utilities.htm unix-directories.htm
test.sh unix-communication.htm unix-environment.htm
注意: 注意:-用于执行程序在最新目录中,我们可以使用./program_name
扩展的Shell脚本
Shell脚本包含几个必需的构造,这些构造定义了Shell平台的执行时间和操作方式。大多数脚本比上面的脚本更复杂。
毕竟,shell是一种实际的编程语言,其中包含控件结构,变量等。不管脚本多么复杂,仍然只是顺序执行命令列表。
以下脚本正在使用read命令,该命令通过键盘获取输入并将其指定为变量PERSON值并打印最终通过STDOUT。