shell(计算机壳层)
在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Shell 脚本(shell script),是一种为shell编写的脚本程序。
业界所说的shell通常都是指shell脚本,但读者朋友要知道,shell和shell script是两个不同的概念。
Shell 编程跟java、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
在Windows环境下可以使用Cygwin工具来使用shell。
Cygwin是一个在windows平台上运行的类UNIX模拟环境,是cygnus solutions公司开发的自由软件(该公司开发的著名工具还有eCos,不过现已被Redhat收购)。它对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对Cygwin产生了兴趣。
cygnus当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后,他们要把这些工具移植到 windows平台上去。一种方案是基于win32 api对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法——他们写了一个共享库(就是cygwin dll),把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于 win32 api写了一个unix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来 生成可以在 windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改, 只需要修改他们的配置脚本)软件移植到windows上来。这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。
Linux下为什么要用shell,而且如此重要?
Linux的shell有很多个,包括bash。shell在内核、系统调用之外,所以叫shell,作为用户与计算机交互的界面。
因为Unix/Linux早期都是命令行界面,所有的功能都通过命令行完成,所以shell是很重要的,
即便有了图形用户界面,很多系统维护、自动化处理方面的任务还是通过shell完成更加高效,而且有的功能只能通过命令行。
命令行在主机、服务器的远程登录方面具有优势,因为安全和节省带宽,比如服务器托管在电信机房,在公司远程登录上去维护。
Unix/Linux的设计哲学之一,就是一个程序只完成一个功能并且做得很专业,程序之间组合起来就可以完成复杂的工作,这都离不开shell。不像
Windows,一个软件要集成很多功能,样样都不出色,而且重复软件多。不过现在Linux图形界面下的软件也越来越像Windows的了。
稍微大型的程序,为了吞吐量和效率,都会写可执行程序。
shell好用,但处理问题能力有限,效率也不高(相对应用程序)。
shell更多倾向于服务器管理员进行操作和文本处理,可执行程序多用在嵌入式和大型服务器后台。
命令提示符
Windows命令:命令行(Command Processor)(CMD)是在OS / 2 , Windows CE与Windows NT平台为基础的操作系统(包括Windows 2000,Windows XP,Windows Vista,Windows Server 2003,Windows 7, Windows 8 ,Windows 8.1 ,Windows 10)下的“MS-DOS 方式”。一般Windows 的各种版本都与其兼容,用户可以在Windows 系统下运行DOS命令,中文版Windows XP 中的命令提示符进一步提高了与DOS 下操作命令的兼容性,用户可以在命令提示符直接输入中文调用文件。命令行功能多于DOS。
DOS命令
DOS(磁盘操作系统)命令,是DOS操作系统的命令,是一种面向磁盘的操作命令,主要包括目录操作类命令、磁盘操作类命令、文件操作类命令和其它命令。
dos,是磁盘操作系统的缩写,DOS是Disk Operation System(磁盘操作系统)的简称,是个人计算机上的一类操作系统。它直接操纵管理硬盘的文件,一般都是黑底白色文字的界面,是个人计算机上的一类操作系统。从1981年直到1995年的15年间,磁盘操作系统在IBM PC 兼容机市场中占有举足轻重的地位。而且,若是把部分以DOS为基础的Microsoft Windows版本,如Windows 95、Windows 98和Windows Me等都算进去的话,那么其商业寿命至少可以算到2000年。微软的所有后续版本中,磁盘操作系统仍然被保留着。
家族包括MS-DOS、PC-DOS、DR-DOS、PTS-DOS、ROM-DOS、JM-OS等,其中以MS-DOS最为著名。虽然这些系统常被简称为"DOS",但几乎没有系统单纯以"DOS"命名(只有一个毫无关连的1960年代IBM大型主机操作系统以此命名)。此外,有几个和DOS无关、在非x86的微计算机系统上运行的磁盘操作系统在名称中也有 "DOS" 字眼,而且在专门讨论该机器的场合中也会简称为"DOS"(例如:AmigaDOS、AMSDOS、ANDOS、AppleDOS、Atari DOS、Commodore DOS、CSI-DOS、ProDOS、TRS-DOS等),但这些系统和DOS可执行文件以及MS-DOS API并不兼容。
-
当进入该系统时,内部指令可以由系统间接调用。
-
DOS 操作系统用户指令是不区分大小写的。例如:DIR、Dir、dir在DOS中的执行含义是一致的。
批处理文件
批处理,顾名思义就是进行批量的处理。批处理文件是扩展名为·bat 或·cmd的文本文件,包含一条或多条命令,由DOS或Windows系统内嵌的命令解释器来解释运行。
批处理新手入门导读
脚本语言
定义
简介
特点
优缺点
标记语言
标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。与文本相关的其他信息(包括例如文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记(markup)进行标识。
脚本语言如:HTML、XML
脚本语言是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。它的命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。早期的脚本语言经常被称为批量处理语言或工作控制语言。
一个脚本通常是解释运行而非编译。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让程序员快速完成程序的编写工作。
编译型语言如:JavaScript、VBScript、PHP
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些
二、区别如 C、C++
1、标记语言不用于向计算机发出指令,常用于格式化和链接。
2、脚本语言介于标记语言和编程语言之间,脚本语言脚本语言不需要编译,可以直接用,由解释器来负责解释。
3、编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
标记语言与编程语言区别
最简单的理解是, 编程语言有逻辑和行为能力, 後者没有.
编程语言 (programming language)可以例如 c, perl, javascript
标记语言( markup language ), 有 xml, html, xhtml ( xml 和 html 的合体 )你会见到他们都是 "ml" 尾的.
标记语言的存在用来被读取的, 例如 svg 的图档其实就是用 xml 写出来的. 而其本身是没有行为能力的. 在标记语言里你会看到很多 < 和 > 这些钻括号, 这些是用来写出 "层次" 和 "属性" 的. 简言之, 他是被动的
而在 编程语言 里, 你会看到很多 if else for while print ... 这些具有逻辑性和行为能力的指令. 这是主动的.