免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: lightspeed

[学习共享] [ SHELL 综合水平测试 ] [复制链接]

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
发表于 2005-01-03 15:13 |显示全部楼层

[ SHELL 综合水平测试 ]

2. 为什么 shell 版中的大部分高手都是玩 Linux 的, 而低手往往是 Sco unix, HP-UX 等其他平台的?

其他平台一般都是跑production机器,搞坏了要出人命的。所以...

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2005-01-03 15:18 |显示全部楼层

[ SHELL 综合水平测试 ]

8.
man bash 應有答案. (如果看得完的話)

13.
以 nested subshell 作關鍵詞來搜吧

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
发表于 2005-01-03 15:29 |显示全部楼层

[ SHELL 综合水平测试 ]

18. 用 shell 程序安装配置一个二进制可执行软件.希望将被安装软件含在 shell 程序中形成一个安装文件,可以吗?

第一感觉:可以

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2005-01-03 15:57 |显示全部楼层

[ SHELL 综合水平测试 ]

19. 可以在一个shell 程序里包含 ksh 及 perl 两种代码吗?

A:可以

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2005-01-03 16:01 |显示全部楼层

[ SHELL 综合水平测试 ]

21. 当有同名的 alias, function, builtin command, external command 时,如何知道并控制其运行顺序?

A: alias,builtin command,function,external command

论坛徽章:
0
发表于 2005-01-03 17:37 |显示全部楼层

[ SHELL 综合水平测试 ]

原帖由 "寂寞烈火" 发表:
21. 当有同名的 alias, function, builtin command, external command 时,如何知道并控制其运行顺序?

A: alias,builtin command,function,external command



这个的应改是 alias, function, builtin command, external command

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2005-01-04 08:56 |显示全部楼层

[ SHELL 综合水平测试 ]

原帖由 "bst" 发表:



这个的应改是 alias, function, builtin command, external command

呵呵,我的写的顺序应该是没有问题的!
P.S:<<UNIX shell 实例精解>>里就这样的顺序!

论坛徽章:
0
发表于 2005-01-04 09:32 |显示全部楼层

[ SHELL 综合水平测试 ]

关于BRE 和ERE,下面是Open Group公布的文法定义:
BRE and Bracket Expression Grammar
%token    ORD_CHAR QUOTED_CHAR DUP_COUNT

%token    BACKREF L_ANCHOR R_ANCHOR

%token    Back_open_paren  Back_close_paren
/*          '\('             '\)'        */

%token    Back_open_brace  Back_close_brace
/*          '\{'             '\}'         */

/* The following tokens are for the Bracket Expression
   grammar common to both REs and EREs. */

%token    COLL_ELEM META_CHAR

%token    Open_equal Equal_close Open_dot Dot_close Open_colon Colon_close
/*           '[='       '=]'        '[.'     '.]'      '[:'       ':]'  */

%token    class_name
/* class_name is a keyword to the LC_CTYPE locale category */
/* (representing a character class) in the current locale  */
/* and is only recognised between [: and :] */

%start    basic_reg_exp
%%

/* --------------------------------------------
   Basic Regular Expression
   --------------------------------------------
*/
basic_reg_exp  :          RE_expression
               | L_ANCHOR
               |                        R_ANCHOR
               | L_ANCHOR               R_ANCHOR
               | L_ANCHOR RE_expression
               |          RE_expression R_ANCHOR
               | L_ANCHOR RE_expression R_ANCHOR
               ;
RE_expression  :               simple_RE
               | RE_expression simple_RE
               ;
simple_RE      : nondupl_RE
               | nondupl_RE RE_dupl_symbol
               ;
nondupl_RE     : one_character_RE
               | Back_open_paren RE_expression Back_close_paren
               | Back_open_paren Back_close_paren
               | BACKREF
               ;
one_character_RE : ORD_CHAR
               | QUOTED_CHAR
               | '.'
               | bracket_expression
               ;
RE_dupl_symbol : '*'
               | Back_open_brace DUP_COUNT               Back_close_brace
               | Back_open_brace DUP_COUNT ','           Back_close_brace
               | Back_open_brace DUP_COUNT ',' DUP_COUNT Back_close_brace
               ;

/* --------------------------------------------
   Bracket Expression
   -------------------------------------------
*/
bracket_expression : '[' matching_list    ']'
               | '[' nonmatching_list ']'
               ;
matching_list  : bracket_list
               ;
nonmatching_list : '^' bracket_list
               ;
bracket_list   : follow_list
               | follow_list '-'
               ;
follow_list    :             expression_term
               | follow_list expression_term
               ;
expression_term : single_expression
               | range_expression
               ;
single_expression : end_range
               | character_class
               | equivalence_class
               ;
range_expression : start_range end_range
               | start_range '-'
               ;
start_range    : end_range '-'
               ;
end_range      : COLL_ELEM
               | collating_symbol
               ;
collating_symbol : Open_dot COLL_ELEM Dot_close
               | Open_dot META_CHAR Dot_close
               ;
equivalence_class : Open_equal COLL_ELEM Equal_close
               ;
character_class : Open_colon class_name Colon_close
               ;

/* --------------------------------------------
   Extended Regular Expression
   --------------------------------------------
*/
extended_reg_exp   :                          ERE_branch
                   | extended_reg_exp '|' ERE_branch
                   ;
ERE_branch         :            ERE_expression
                   | ERE_branch ERE_expression
                   ;
ERE_expression     : one_character_ERE
                   | '^'
                   | '$'
                   | '(' extended_reg_exp ')'
                   | ERE_expression ERE_dupl_symbol
                   ;
one_character_ERE  : ORD_CHAR
                   | QUOTED_CHAR
                   | '.'
                   | bracket_expression
                   ;
ERE_dupl_symbol    : '*'
                   | '+'
                   | '?'
                   | '{' DUP_COUNT               '}'
                   | '{' DUP_COUNT ','           '}'
                   | '{' DUP_COUNT ',' DUP_COUNT '}'
                   ;

可以看出BRE和ERE的几点区别:
1.特殊字符不同(也即意味着除去特殊字符剩下的普通字符也不完全相同)
BRE:
.[\  句点, 左括号和反斜线除了用在括号表达式中, 应当是特殊的. 表达式包含
     '[', 而'['前面不带反斜线且不是括号表达式一部分时, 产生未定义的结果.

*  星号应当是特殊的, 除非当用于:
        A) 括号表达式
        B) 整个BRE的第一个字符(如果有开头的'^', 在其后)
        C) 作为子表达式的第一个字符(如果有开头的'^', 在其后)

^  抑扬符号当如下使用时应当是特殊的:
        A)定位符(anchor)
        B)括号表达式的第一个字符

$  美元符号, 当用作定位符时是特殊的.

ERE:
.[\(  句点, 左括号, 反斜线, 和左圆括号当不用于括号表达式中时应当是特殊的.
      在括号表达式外, 紧跟右圆括号的左圆括号产生未定义的结果.

)     无论在括号表达式内外, 当与前面的左圆括号匹配时, 右圆括号应当是特殊的.

*+?{  星号, 加号, 问号, 和左大括号当不用于括号表达式中时应当是特殊的.

      下面的任何用法产生未定义结果:
        A) 如果这些字符出现在ERE的第一个, 或者紧跟竖线, 抑扬符, 或左
           圆括号
        B) 如果左大括号不是有效的间隔表达式的一部分

|     竖线符号应当是特殊的, 除非用于括号表达式中. 竖线符号出现在ERE的第一
      个或最后, 或者紧跟竖线或左圆括号, 或在右圆括号前面, 将产生未定义的
      结果.

^     当用于下面情况时, 抑扬符应当是特殊的:
        A) 定位符
        B) 括号表达式的第一个字符

$     当用作定位符时, 美元符应当是特殊的.
2.BRE可以使用向后引用
3.字符重复匹配次数语法不同(BRE:\{m,n\} ;ERE:{m,n} )
4.ERE可以使用组合()和交换|

但两者的括号表达式[]同样的

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2005-01-04 09:36 |显示全部楼层

[ SHELL 综合水平测试 ]

23. 怎样使各种 shell 变为 login shell?
chsh -s shell username
or edit /etc/passwd file

论坛徽章:
0
发表于 2005-01-04 09:53 |显示全部楼层

[ SHELL 综合水平测试 ]

所以:RE第二个问题:不是
第三个问题:我想可能是向后引用把
第四个问题:平台兼容性
第五个问题:好像不可以,RE最多可以支持9个向后引用
第六个问题FA和NFA分别指确定的有穷自动机和非确定的有穷自动机;在自动机理论和编译原理中都有详细介绍,最简单的区别就是NFA对同一个字符串输入完全有可能有多种理解方式,而DFA则只有唯一的一种理解方式。这就决定了DFA的效率比NFA高同时构造DFA会比构造NFA复杂.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP