欢迎光临散文网 会员登陆 & 注册

Shell脚本编程——1. Shell简介

2022-12-30 12:39 作者:房子下面一头猪  | 我要投稿

1. Shell简介

  • shell是提供交互式计算机编程环境的UNIX程序,在终端窗口中使用 shell 与 UNIX 风格的操作系统(例如 Linux 或 MacOS)进行交互。

  • shell 位于用户和操作系统之间,提供一些有用的命令和功能。简单来看,shell是一个程序,用于为用户运行指定命令并向用户显示运行结果。

1.1 特性

1.1.1 命令嵌套

把已有命令进行适当组合构成新的命令。

1.1.2 文件名扩展

提供了文件名扩展字符(通配符,如* 、 ?、 [ ]),使得用单一的字符串可以匹配多个文件名,省去键入一长串文件名的麻烦。

1.1.3 直接使用Shell内置命令

  • 可以直接使用Shell的内置命令,而不需创建新的进程,如Shell中提供的cd、echo、exit、pwd、kill等命令。为防止因某些Shell不支持这类命令而出现麻烦,许多命令都提供了对应的二进制代码,从而也可以在新进程中运行。

  • 通常来说,内建命令会比外部命令执行得更快,执行外部命令时不但会触发磁盘 I/O,还需要 fork 出一个单独的进程来执行,执行完成后再退出。而执行内建命令相当于调用当前 Shell 进程的一个函数。

1.1.4 灵活地使用数据流

Shell允许灵活地使用数据流,提供通配符、输入/输出重定向、管道线等机制,方便了模式匹配、I/O处理和数据传输。

1.1.5 结构化

结构化的程序模块,提供了顺序流程控制、条件控制、循环控制等。

1.1.6 可后台执行

Shell提供了在后台执行命令的能力。

1.1.7 环境可配置

Shell提供了可配置的环境,允许创建和修改命令、命令提示符和其它的系统行为。

1.1.8 可创建复杂程序(Shell脚本)

Shell提供了一个高级的命令语言,能够创建从简单到复杂的程序。这些Shell程序称为Shell脚本,利用Shell脚本,可把用户编写的可执行程序与Unix命令结合在一起,当作新的命令使用,从而便于用户开发新的命令。

1.2 Shell种类

  • sh:Bourne Shell,UNIX 上的标准shell,很多UNIX版本都配有sh

  • bash:Bourne Again Shell,Linux的默认shell,bash兼容sh,但并不完全一致

  • csh:C Shell,语法与C语言相似

  • ksh:Korn Shell,基于Bourne shell的源代码发展而来
    ...

查看当前系统所有可用的Shell

查看当前正在使用的Shell

查看系统默认的Shell

sh 一般被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接

1.3 命令执行方式

  • 交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条

  • 批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。

1.4 使用场景

1.4.1 建议使用的场景

  • 使用只基于 UNIX 风格的操作系统(如Linux)开发的程序(如bwa、gatk),或需要在服务器上运行软件

  • 文件操作可以使用简单的命令完成

  • 批量操作文件/文件夹

  • 主要调用其他应用程序并且数据操作较少

  • 多条命令需要被重复执行时(Shell脚本)

1.4.2 不建议使用的场景

  • 资源密集型的任务,尤其在需要考虑效率时(如排序,hash等)

  • 需要处理大量数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(C/C++)

  • 有跨平台(操作系统)移植需求(一般使用C或Java)

  • 复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型等)

  • 需要复杂数据结构的支持,比如类、链表或多维数组等数据结构(R、Python)。

  • 需要产生或操作图形化界面 GUI。

  • 私人的、闭源的程序


Shell脚本编程——1. Shell简介的评论 (共 条)

分享到微博请遵守国家法律