您的位置:首页 > 运维架构 > Shell

举例说明shell命令的三种特殊格式

2013-02-01 09:44 309 查看
内容提要

1.熟悉Shell及其功能。

2.熟悉Shell的元字符。

3.熟悉命令行格式。

4.学会使用命令帮助。

3.2.1 Shell简介什么是Shell

— Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器)。

— Shell接收用户输入的命令并把它送入内核去执行。

— Shell起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。

Shell在Linux系统中具有极其重要的地位,如图3-5所示。

 

图3-5 Shell在Linux系统中的地位

Shell的功能

Shell最重要的功能是命令解释,从这种意义上说,Shell是一个命令解释器。Linux系统中的所有可执行文件都可以作为Shell命令来执行。Linux系统上可执行文件的分类见表3-2。

表3-2 Linux系统中的可执行文件

类    别

说    明

Linux命令

存放在/bin、/sbin目录下的命令

内置命令

出于效率的考虑,将一些常用命令的解释程序构造在Shell内部

实用程序

存放在/usr/bin、/usr/sbin、/usr/share、/usr/local/bin 等目录下的实用程序或工具

用户程序

用户程序经过编译生成可执行文件后,也可作为Shell命令运行

Shell脚本

由Shell语言编写的批处理文件

图3-6描述了Shell是如何完成命令解释的。

当用户提交了一个命令后,Shell首先判断它是否为内置命令,如果是就通过Shell内部的解释器将其解释为系统功能调用并转交给内核执行;若是外部命令或实用程序就试着在硬盘中查找该命令并将其调入内存,再将其解释为系统功能调用并转交给内核执行。在查找该命令时有两种情况:

1.如果用户给出了命令的路径,Shell就沿着用户给出的路径进行查找,若找到则调入内存,若没找到则输出提示信息。

2.如果用户没有给出命令的路径,Shell就在环境变量PATH所制定的路径中依次查找命令,若找到则调入内存,若没找到则输出提示信息。

 

图3-6 命令解释过程

 提示:

1.内置命令是包含在Shell自身当中的,在编写Shell的时候就已经包含在内了,当用户登录系统后就会在内存中运行一个Shell,由其自身负责解释内置命令。一些基本的命令如cd、exit等都是内置命令。用help命令可以查看内置命令的使用方法。

2.外部命令是存在于文件系统某个目录下的具体的可执行程序,如文件拷贝命令cp,就是在/bin目录下的一个可执行文件。用man或info命令可以查看外部命令的使用方法。外部命令也可以是某些商业或自由软件,如mozilla等。

此外,Shell还具有如下的一些功能:

— 通配符

— 命令补全、别名机制、命令历史

— 重定向

— 管道

— 命令替换

— Shell编程语言

Shell的主要版本

表3-3列出了几种常见的Shell版本。

表3-3 常见的shell版本

版   本

说    明

Bourne Again Shell (bash, bsh的扩展)

bash是大多数Linux系统的默认Shell。bash与bsh完全向后兼容,并且在bsh的基础上增加和增强了很多特性。bash也包含了很多C Shell和Korn Shell的优点。bash有很灵活和强大的编程接口,同时有很友好的用户界面

Korn Shell (ksh)

Korn Shell(ksh)由Dave Korn编写。它是UNIX系统上的标准Shell。另外,在Linux环境下有一个专门为Linux系统编写的Korn Shell的扩展版本,即Public Domain Korn Shell (pdksh)

tcsh (csh的扩展)

是C Shell的扩展。tcsh与csh完全向后兼容,但它包含了更多使用户感觉方便的新特性,其性能上最大的提高是在命令行编辑和历史浏览方面

Shell元字符

在Shell中有一些具有特殊的意义字符,称为Shell元字符(Shell Metacharacters)。若不以特殊方式指明,Shell并不会把它们当做普通文字符使用。

表3-4简单介绍了常用的Shell元字符的含义。

表3-4 常用的shell元字符及含义

Shell元字符

Shell元字符的含义

*

代表任意字符串

?

代表任意字符

/

代表根目录或作为路径间隔符使用

\

转义字符。当命令的参数要用到保留字时,要在保留字前面加上转义字符

\<Enter>

续行符。可以使用续行符将一个命令行分写在多行上

$

变量值置换,如:$PATH表示环境变量PATH的值

'

在'…'中间的字符都会被当做文字处理,指令、文件名、保留字等都不再具有原来的意义

''

在''…''中间的字符会被当做文字处理并允许变量值置换

`

命令替换,置换`…`中命令的执行结果

<

输入重定向字符

>

输出重定向字符

|

管道字符

&

后台执行字符。在一个命令之后加上字符“&”,该命令就会以后台方式执行

;

分割顺序执行的多个命令

( )

在子Shell中执行命令

{ }

在当前Shell中执行命令

!

执行命令历史记录中的命令

~

代表登录用户的宿主目录(自家目录)

3.2.2 命令操作基础目录和文件名的命名规则

在Linux下可以使用长文件或目录名,也可以给目录和文件取任何名字,但必须遵循下列的规则:

— 除了/之外,所有的字符都可以用于目录和文件名。

— 有些字符最好不用,如空格符、制表符、退格符和字符:?,@ # $ & () \ | ;'" < >等。

— 避免使用+、–或.来作为普通文件名的第一个字符。

— 大小写敏感。

— 以“.”开头的文件或目录是隐含的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: