Bash4.0中文文档解读一

1 总体介绍

1.1 什么是Bash

Bash是一个用于GNU操作系统的shell,也就是命令解释器。

1.2 什么是Shell

shell是一个能执行各种命令的宏处理器。

  • 宏处理是指扩展文本和符号以创建更大的表达式的功能。

Unix shell不仅是一个命令解释器,还是一种编程语言。

2 Shell的基本功能

shell会读取输入并将之分解为一个个单词和运算符,并使用引用规则来决定每个单词和字符的不同含义。然后shell会把这些解析为命令和其他结构,去除一些特定单词的特殊含义,对另外一些进行扩展,根据需要进行重定向,执行指定的命令,等待其退出状态,并让这个状态能用于后续检查或处理。

2.1 Shell操作

1.读取命令

2.根据引用规则对命令做展开,同时进行别名扩展

3.将符号解析为简单或者复杂命令

4.进行各种shell扩展

5.进行必要的重定向,并将其从命令参数列表中去掉

6.执行得到的命令

7.(可选)等待命令结束并收集其退出状态

2.1.1 引用

引用在 shell 中用以去除某些字符或单词的特殊含义。

可以用来禁止对特殊字符的特殊处理,使得保留字不再被认为是保留字,或者禁止参数扩展。

三种引用机制:转义字符、单引用、双引用

2.1.2 转义字符

\

字符描述
\a警告(响铃)
\b退格删除
\e转义字符(不属于ANSI C)
\f走纸换页
\n新行
\r换行
\t(水平)制表符
\v垂直制表符
\ \反斜杠
\ ’单引号
\nn由八进制数nnn(一到三个数字)代表的一个八位字符
\xHH由十六进制数HH(一到两个数字)代表的一个八位字符
\cx一个控制字符CTRL-X
2.1.3 单引用

‘’

2.1…4 双引用

“”

2.2 Shell命令
2.2.1 简单命令

一个简单的shell命令,包括命令本身、加一些参数,用空格分隔。

2.2.2 管道

控制字符| 或者 |&

1.格式

[ time [-p] ] [!]命令一[[|或者|&]]命令二...]

|&是2>&1 | 的简写形式

2.2.3 命令队列

命令队列由一个或者管道通过运算符 ;、&、&&、||连接而成,最后还可以由 ; 、&或者换行符结束

&&和||具有同样的优先级,;和&也是。

与队列

命令一 && 命令二

或队列

命令一 || 命令二
2.2.4 复合命令

Bash提供了循环结构、条件结构、以及将命令分组并将之整体执行的机制。

1.循环结构

  • until
  • 语法格式
until 测试命令; do 命令块; done
  • while

  • 语法格式

while 测试命令; do 命令块; done
  • for
  • 语法格式
for 变量 [in 单词 ]; do 命令块; done
for((表达式一;表达式二;表达式三));do命令块;done

2.条件结构

  • if
  • 语法格式
if   测试命令一      ;then

命令快一;

[elif 测试命令二    ;then

命令快二;]

[else

 其他命令块;]

fi
  • case
  • 语法格式
case  单词  in
[ [(] 模式一 [| 模式二] ...)
命令块
;;]
...
...
...
esac

每个分句都以";;"、";&"、";;&" 结束

;;结尾:匹配第一个模式后就不会再匹配其他模式

;& 结尾:有其他分句就继续执行

;;& 结尾:有其他分句就检查其模式,模式为真就继续执行

  • select
  • 语法格式
select 名称 [in 单词表 ...];do 命令块;done
  • ((…))
  • 语法格式
((算术表达式))

等于 let “表达式”

  • [[…]]
  • 语法格式
[[条件表达式]]

3.命令组合

  • ()
  • 语法格式
(表达式)
  • {}
  • 语法格式
{表达式;}
2.3 Shell函数

赋值语句可以作为内部命令 alias、declare、typeset、export、readonly、local的参数

2.3.1 位置参数

由除了单个0以外的一个或多个数字表示的参数

2.3.2 特殊参数

这些参数只能使用不能赋值

*从1开始的参数 “$ *” ="$1c$2c"

@从1开始的参数 “$ @”="$1c""$2c"…

-连字符

$

!后台执行的命令

0

_ 下划线

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
译者序<br><br>毫无疑问,UNIX/Linux最重要的软件之一就是shell,目前最流行的shell被称为Bash(Bourne Again Shell),几乎所有的Linux和绝大部分的UNIX都可以使用Bash。作为系统与用户之间的交互接口,shell几乎是你在UNIX工作平台上最亲密的朋友,因此,学好shell,是学习Linux/UNIX的的开始,并且它会始终伴随你的工作学习。<br><br>shell是如此地重要,但令人惊奇的是,介绍shell的书没有真正令人满意的。所幸的是,我看到了这本被人称为abs的书,这本书介绍了bash大量的细节和广阔的范围,我遇到的绝大部分的技术问题--无论是我忘记的或是以前没有发现的--都可以在这本书里找到答案。这本使用大量的例子详细地介绍了Bash的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash的所有特性,在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用其他语言的程序员,我能肯定你能在此书用受益。而本书除了介绍BASH的知识之外,也有许多有用的关于Linux/UNIX的知识和其他shell的介绍。<br><br>在看到本书的英文版后,我决定把它翻译出来,在Linuxsir论坛上结识了译者之一杨春敏共同翻译这本书,600多页的书是本大部头的书,我们花了6个月的业余时间才翻译完了。<br><br>关于版权的问题,英文版的作者Mendel Cooper对英文版的版权做了详细的约定,请参考:Appendix Q. Copyright。中文版版权由译者杨春敏和黄毅共同所有,在遵守英文版版权相应条款的条件下,欢迎在保留本书译者名字和版权说明以非盈利的方式自由发布此中文版,以盈利目的的所有行为必须联系英文作者和两位中文译者以获得许可。<br><br>本书得以成稿,我(黄毅)要多谢我的女朋友,本该给予她的时间我用来了翻译,多谢你的理解,你是一个很棒的女朋友!<br><br> 译者 杨春敏 黄毅<br> 2006.5.15<br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值