hell编程快速入门

Shell脚本(英语:Shell script)是一种电脑程序与文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。被当成是一种脚本语言来设计,其运作方式与直译语言相当,由Unix shell扮演命令行解释器的角色,在读取shell script之后,依序运行其中的shell命令,之后输出结果。利用Shell script可以进行系统管理,文件操作等。

在Unix及所有的类Unix系统中,如Linux、FreeBSD等操作系统,都存在Shell Script。依照Unix shell的各种不同类型,Shell script也有各种不同方言。在DOS、OS/2、Microsoft Windows中的批处理文件,跟shell script有类似的功能。

来看一个实例

cd, mkdir, touch都是系统自带的程序,一般在/bin或者/usr/bin目录下。for, do, done是sh脚本语言的关键字。

shell编程跟java、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

当前主流的操作系统都支持shell编程,本文档所述的shell编程是指Linux下的shell,讲的基本都是POSIX标准下的功能,所以,也适用于Unix及BSD(如Mac OS)。

Linux默认安装就带了shell解释器。

Mac OS不仅带了sh、bash这两个最基础的解释器,还内置了ksh、csh、zsh等不常用的解释器。

windows出厂时没有内置shell解释器,需要自行安装,为了同时能用grep, awk, curl等工具,最好装一个cygwin或者mingw来模拟linux环境。

即Bourne shell,POSIX(Portable Operating System Interface)标准的shell解释器,它的二进制文件路径通常是/bin/sh,由Bell Labs开发。

Bash是Bourne shell的替代品,属GNU Project,二进制文件路径通常是/bin/bash。业界通常混用bash、sh、和shell,比如你会经常在招聘运维工程师的文案中见到:熟悉Linux Bash编程,精通Shell编程。

在CentOS里,/bin/sh是一个指向/bin/bash的符号链接:

但在Mac OS上不是,/bin/sh和/bin/bash是两个不同的文件,尽管它们的大小只相差100字节左右:

理论上讲,只要一门语言提供了解释器(而不仅是编译器),这门语言就可以胜任脚本编程,常见的解释型语言都是可以用作脚本编程的,如:Perl、Tcl、Python、PHP、Ruby。Perl是最老牌的脚本编程语言了,Python这些年也成了一些linux发行版的预置解释器。

编译型语言,只要有解释器,也可以用作脚本编程,如C shell是内置的(/bin/csh),Java有第三方解释器Jshell,Ada有收费的解释器AdaScript。

执行:

或者:

如果你已经掌握了一门编程语言(如PHP、Python、Java、JavaScript),建议你就直接使用这门语言编写脚本程序,虽然某些地方会有点啰嗦,但你能利用在这门语言领域里的经验(单元测试、单步调试、IDE、第三方类库)。

新增的学习成本很小,只要学会怎么使用shell解释器(Jshell、AdaScript)就可以了。

如果你觉得自己熟悉的语言(如Java、C)写shell脚本实在太啰嗦,你只是想做一些备份文件、安装软件、下载数据之类的事情,学着使用sh,bash会是一个好主意。

shell只定义了一个非常简单的编程语言,所以,如果你的脚本程序复杂度较高,或者要操作的数据结构比较复杂,那么还是应该使用Python、Perl这样的脚本语言,或者是你本来就已经很擅长的高级语言。因为sh和bash在这方面很弱,比如说:

如果你的脚本是提供给别的用户使用,使用sh或者bash,你的脚本将具有最好的环境兼容性,perl很早就是linux标配了,python这些年也成了一些linux发行版的标配,至于mac os,它默认安装了perl、python、ruby、php、java等主流编程语言。

打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了。

输入一些代码,第一行一般是这样:

"#!"是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行。

运行Shell脚本有两种方法:

运行Shell脚本有两种方法:

通过这种方式运行bash脚本,第一行一定要写对,好让系统查找到正确的解释器。

这里的"系统",其实就是shell这个应用程序(想象一下Windows Explorer),但我故意写成系统,是方便理解,既然这个系统就是指shell,那么一个使用/bin/sh作为解释器的脚本是不是可以省去第一行呢?是的。

这种运行方式是,直接运行解释器,其参数就是shell脚本的文件名,如:

THE END
0.菜鸟教程菜鸟教程(www.runoob.com)提供了编程的基础技术教程, 介绍了HTML、CSS、Javascript、Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识。 同时本站中也提供了大量的在线实例,通过实例,您可以更好的学习编程。..jvzquC41yy}/t~sqqd4dqv4
1.10个最值得收藏的编程学习网站(非常详细)零基础入门到精通,收藏这一篇菜鸟教程和w3cschool类似的在线教程网站。菜鸟教程仅支持图文教程 添加图片注释,不超过 140 字(可选) 4.易百教程 易百教程的网站有相当丰富的教程,仅支持图文教程。 添加图片注释,不超过 140 字(可选) 5.码农教程 码农教程有大量IT编程入门教程 如:JAVA, PHP, JAVASCRIPT, C, C++, HTML, CSS…等 jvzquC41dnuh0lxfp0tfv8U{vjuoayfkrco0c{ykenk0fnyckny03=676:>27
2.C#用于生成所有应用的现代化、创新开放源代码编程语言。 开始 为什么选择 C# C# 是一种新式、创新、开放源代码、跨平台,面向对象的编程语言,是 GitHub 上排在前列的 5 种编程语言之一。 是否拥有 JavaScript、Java 或 C++ 开发经验?你会立即发现 C# 用起来十分熟悉,并会乐于看到推出不断变化的功能,包括类型安全、jvzquC41fqzog}3okexpuxkv0eun1ƒm/ep5mcwlwcikt1lxjctv
3.python入门教程(非常详细),从零基础入门到精通,看完这一篇就够了本文罗列了了python零基础入门到精通的详细教程,内容均以知识目录的形式展开。 01.python由来与发展介绍 02.项目开发流程‍ 第一章markdown编辑器 HALLOWEEN 01.markdown基本语法 02.Typora简介与安装 03.Windows上gitee+Typora设置图床 04.macOS上gitee+Typora设置图床‍ jvzquC41dnuh0lxfp0tfv8r2a7?35?;241gsvrhng1jfvjnnu1748<<3:59
4.2022年超详细的Android(安卓)入门编程教程安卓教程Android编程入门教程内容分为:Java语言基础从入门到熟悉、Kotlin语言基础从入门到熟悉、Android 技术栈从入门到熟悉、Android Jetpack 全家桶全面学习四个部分,共70个小章节,776页。 一,Java语言基础从入门到熟悉 1. Java综述 面向对象 设计模式 2. Java基础 jvzquC41dnuh0lxfp0tfv8r2a8=4;::431gsvrhng1jfvjnnu1738<7788:
5.C语言入门:从零开始的完整学习指南那么C 语言就是一位冷静的工程师,亲手搭建每一根梁柱,掌控每一块内存。 C 语言诞生于 1972 年,至今仍是系统编程、嵌入式开发、操作系统、驱动程序等领域的基石。Linux内核、Git、Redis、Python 解释器本身……都是用 C 写的。 学习C 语言,不是为了“快速上手做项目”,而是为了真正理解计算机如何工作。 jvzquC41dnuh0lxfp0tfv8|gkzooa?9829?978ftvkimg8igvcomu86759>45B>
6.C语言入门介绍C语言教程C 语言入门介绍 适用于初学者和专业人士的C语言教程采用编程方法,可帮助您轻松理解C语言教程。我们的C教程通过程序解释了每个主题。 C语言是由Dennis Ritchie开发的,用于创建与硬件设备(例如驱动程序,内核等)直接交互的系统应用程序。 C编程被认为是其他编程语言的基础,这就是为什么它被称为母语。jvzquC41yy}/ejnpkcuke7hqo1i.r{titcsnkwl1e/vsqpwcooooi6qcpi{bin2vwvuskjq0jvsm
7.python编程:从入门到精通,python编程完全入门教程本文是Python编程入门教程,涵盖变量和数据类型、列表、字典等基础内容,介绍了if语句、函数、类的使用,还涉及文件操作、异常处理和数据存储。最后重点讲解了代码测试,包括测试函数和类,以及setUp()方法的运用,帮助开发者确保代码质量。 本篇文章给大家谈谈python编程:从入门到精通,以及python编程完全入门教程,希望对各位有jvzquC41dnuh0lxfp0tfv8U78:>46?4ctvodnn4fgvgjn|4359:75?85