SHELL基础学习必杀技之十三问

 
原创
ChinaUnix 网中人
整理
Lkydeer
整理时间
2007-7-19
联系方式

  
1     简介... 3
2     为何叫做 shell ... 3
3     shell prompt(PS1) Carriage Return(CR) 的关系?... 4
4     别人 echo、你也 echo ,是问 echo 知多少?... 5
5     " "(双引号) ' '(单引号)差在哪?... 7
6     var=valueexport 前后差在哪?... 11
7     exec source 差在哪?... 16
8     ( ) { } 差在哪?... 20
9     $(( )) $( ) 还有${ } 差在哪?... 21
10       $@ $* 差在哪?... 25
11    && || 差在哪?... 27
12       > < 差在哪?... 31
12.1. 31
12.2. 32
12.3. 33
12.4. 34
12.5. 37
13       你要 if 还是 case 呢?... 38
14       for what?  while until 差在哪?... 42
15       [^ ] [! ] 差在哪?... 45

1           简介

ChinaUnix 论坛 shell 版名为网中人的前辈于 2004 年发布的精华贴,最近学习这块内容,觉得很多东西讲的实在透彻,非常感谢前辈网中人,但是还是自己功力不够,很多问题解答不了,不知道有没有 word 或者 pdf 版,自己简单整理了一份,留着慢慢体会,也提供给大家,希望有用,疏漏处请见谅。
 
 

2           为何叫做 shell

在介绍 shell 是甚么东西之前,不妨让我们重新检视使用者与计算机系统的关系:我们知道计算机的运作不能离开硬件,但使用者却无法直接对硬件作驱动,硬件的驱动只能透过一个称为 " 操作系统 (Operating System)" 的软件来控管,事实上,我们每天所谈的 linux ,严格来说只是一个操作系统,我们称之为 " 核心 (kernel)" 。然而,从使用者的角度来说,使用者也没办法直接操作 kernel ,而是透过 kernel " 外壳 " 程序,也就是所谓的 shell ,来与 kernel 沟通。这也正是 kernel shell 的形像命名关系。

   
从技术角度来说, shell 是一个使用者与系统的互动界面 (interface) ,主要是让使用者透过命令行 (command line) 来使用系统以完成工作。
   
因此, shell 的最简单的定义就是 --- 命令解译器 (Command Interpreter)
        *
将使用者的命令翻译给核心处理,
        *
同时,将核心处理结果翻译给使用者。

每次当我们完成系统登入 (log in) ,我们就取得一个互动模式的 shell ,也称为 login shell primary shell 。若从行程 (process) 角度来说,我们在 shell 所下达的命令,均是 shell 所产生的子行程。这现像,我们暂可称之为 fork 。如果是执行脚本 (shell script) 的话,脚本中的命令则是由另外一个非互动模式的子 shell (sub shell) 来执行的。
也就是 primary shell 产生 sub shell 的行程, sub shell 再产生 script 中所有命令的行程。
(
关于行程,我们日后有机会再补充。 )

这里,我们必须知道: kernel shell 是不同的两套软件,而且都是可以被替换的:
        *
不同的操作系统使用不同的 kernel
        *
而在同一个 kernel 之上,也可使用不同的 shell
linux 的预设系统中,通常都可以找到好几种不同的 shell ,且通常会被列于如下档案里: /etc/shells 不同的 shell 有着不同的功能,且也彼此各异、或说 " 大同小异 "
[*]
常见的 shell 主要分为两大主流:
        sh

                burne shell (sh)
                burne again shell (bash)
        csh

                c shell (csh)
                tc shell (tcsh)
                korn shell (ksh)

[*]
大部份的 Linux 系统的预设 shell 都是 bash ,其原因大致如下两点:
        *
自由软件
        *
功能强大
bash
gnu project 最成功的产品之一,自推出以来深受广大 Unix 用户喜爱,
且也逐渐成为不少组织的系统标准。
 

 

你可能感兴趣的:(shell,职场,休闲)