mirror of
https://github.com/oldratlee/translations.git
synced 2026-04-05 11:39:00 +08:00
add bash-3-man
This commit is contained in:
102
bash-3-man/README.md
Normal file
102
bash-3-man/README.md
Normal file
@@ -0,0 +1,102 @@
|
||||
袁乙钧 \<bbbush@163.com\> 提供了`bash 2` `man`的[中文翻译](http://ahei.info/chinese-bash-man.htm),感谢袁乙钧的精致和辛勤的翻译工作。
|
||||
|
||||
本翻译以上面为基础,所做如下:
|
||||
|
||||
1. 更新内容到`bash 3`版本,这是目前生产环境中主流使用的`bash`版本。
|
||||
`bash`的各个版本及其发布时间可以从[`bash`下载页面](http://ftp.gnu.org/gnu/bash/?C=M;O=A)确认。
|
||||
1. 加上内部引用的链接
|
||||
1. 使用`markdown`排版。优先格式方便查看。
|
||||
1. 审校翻译。合理地中文化,不在影响理解的情况下尽量减少英文原文。
|
||||
|
||||
[自己](http://weibo.com/oldratlee)理解粗浅,翻译中不足和不对之处,欢迎建议([提交Issue](https://github.com/quickhack/translations/issues))和指正([Fork后提交代码](https://github.com/quickhack/translations/fork))!
|
||||
|
||||
Bash man
|
||||
===============================
|
||||
|
||||
[.](https://www.behance.net/gallery/7384837/DJ-BASH-Logo-Design)
|
||||
|
||||
目录
|
||||
-------------
|
||||
|
||||
1. [名称(NAME)](overview.md#名称(NAME))
|
||||
1. [概要(SYNOPSIS)](overview.md#概要(SYNOPSIS))
|
||||
1. [版权所有(COPYRIGHT)](overview.md#版权所有(COPYRIGHT))
|
||||
1. [描述(DESCRIPTION)](overview.md#描述(DESCRIPTION))
|
||||
1. [选项(OPTIONS)](overview.md#选项(OPTIONS))
|
||||
1. [参数(ARGUMENTS)](overview.md#参数(ARGUMENTS))
|
||||
1. [启动(INVOCATION)](overview.md#启动(INVOCATION))
|
||||
1. [定义(DEFINITIONS)](overview.md#定义(DEFINITIONS))
|
||||
1. [保留字(RESERVED WORDS)](overview.md#保留字(RESERVED WORDS))
|
||||
1. [`shell`语法](#shell语法)
|
||||
- [Simple Commands 简单命令](#lbAL)
|
||||
- [Pipelines 管道](#lbAM)
|
||||
- [Lists 序列](#lbAN)
|
||||
- [Compound Commands 复合命令](#lbAO)
|
||||
1. [注释(COMMENTS)](#lbAP)
|
||||
1. [引用(QUOTING)](#lbAQ)
|
||||
1. [参数(PARAMETERS)](#lbAR)
|
||||
- [Positional Parameters 位置参数](#lbAS)
|
||||
- [Special Parameters 特殊参数](#lbAT)
|
||||
- [Shell Variables 变量](#lbAU)
|
||||
- [Arrays](#lbAV)
|
||||
1. [扩展(EXPANSION)](#lbAW)
|
||||
- [Brace Expansion](#lbAX)
|
||||
- [Tilde Expansion](#lbAY)
|
||||
- [Parameter Expansion](#lbAZ)
|
||||
- [Command Substitution](#lbBA)
|
||||
- [Arithmetic Expansion](#lbBB)
|
||||
- [Process Substitution](#lbBC)
|
||||
- [Word Splitting](#lbBD)
|
||||
- [Pathname Expansion](#lbBE)
|
||||
- [Quote Removal](#lbBF)
|
||||
1. [重定向(REDIRECTION)](#lbBG)
|
||||
- [Redirecting Input](#lbBH)
|
||||
- [Redirecting Output](#lbBI)
|
||||
- [Appending Redirected Output (添加到重定向后的输出尾部)](#lbBJ)
|
||||
- [Redirecting Standard Output and Standard Error](#lbBK)
|
||||
- [Here Documents](#lbBL)
|
||||
- [Here Strings](#lbBM)
|
||||
- [Duplicating File Descriptors (复制文件描述符)](#lbBN)
|
||||
- [Moving File Descriptors](#lbBO)
|
||||
- [Opening File Descriptors for Reading and Writing](#lbBP)
|
||||
1. [别名(ALIASES)](#lbBQ)
|
||||
1. [函数(FUNCTIONS)](#lbBR)
|
||||
1. [算术求值(ARITHMETIC EVALUATION)](#lbBS)
|
||||
1. [条件表达式(CONDITIONAL EXPRESSIONS)](#lbBT)
|
||||
1. [简单命令扩展(SIMPLE COMMAND EXPANSION)](#lbBU)
|
||||
1. [命令执行(COMMAND EXECUTION)](#lbBV)
|
||||
1. [命令执行环境(COMMAND EXECUTION ENVIRONMENT)](#lbBW)
|
||||
1. [环境(ENVIRONMENT)](#lbBX)
|
||||
1. [退出状态(EXIT STATUS)](#lbBY)
|
||||
1. [信号(SIGNALS)](#lbBZ)
|
||||
1. [作业控制(JOB CONTROL)](#lbCA)
|
||||
1. [提示符(PROMPTING)](#lbCB)
|
||||
1. [readline库(READLINE)](#lbCC)
|
||||
- [Readline Notation](#lbCD)
|
||||
- [Readline Initialization 初始化](#lbCE)
|
||||
- [Readline Key Bindings](#lbCF)
|
||||
- [Readline Variables](#lbCG)
|
||||
- [Readline Conditional Constructs](#lbCH)
|
||||
- [Searching](#lbCI)
|
||||
- [Readline Command Names](#lbCJ)
|
||||
- [Commands for Moving 移动](#lbCK)
|
||||
- [Commands for Manipulating the History 操纵历史行](#lbCL)
|
||||
- [Commands for Changing Text 改变文本](#lbCM)
|
||||
- [Killing and Yanking 剪切和粘贴](#lbCN)
|
||||
- [Numeric Arguments 数值参数](#lbCO)
|
||||
- [Completing 补全](#lbCP)
|
||||
- [Keyboard Macros 宏](#lbCQ)
|
||||
- [Miscellaneous](#lbCR)
|
||||
- [Programmable Completion 可编程补全](#lbCS)
|
||||
1. [历史(HISTORY)](#lbCT)
|
||||
1. [历史扩展(HISTORY EXPANSION)](#lbCU)
|
||||
- [Event Designators](#lbCV)
|
||||
- [Word Designators](#lbCW)
|
||||
- [修饰符 (Modifiers)](#lbCX)
|
||||
1. [`shell`内建命令(SHELL BUILTIN COMMANDS)](buildin-command.md#shell内建命令(SHELL BUILTIN COMMANDS))
|
||||
1. [受限的shell(RESTRICTED SHELL)](#lbCZ)
|
||||
1. [参见(SEE ALSO)](#lbDA)
|
||||
1. [文件(FILES)](#lbDB)
|
||||
1. [作者(AUTHORS)](#lbDC)
|
||||
1. [报告BUGS (BUG REPORTS)](#lbDD)
|
||||
1. [已知`Bug`](#lbDE)
|
||||
0
bash-3-man/buildin-command.md
Normal file
0
bash-3-man/buildin-command.md
Normal file
BIN
bash-3-man/images/bash-chess.png
Normal file
BIN
bash-3-man/images/bash-chess.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
BIN
bash-3-man/images/bash-kiddo.png
Normal file
BIN
bash-3-man/images/bash-kiddo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
BIN
bash-3-man/images/bash-love-heart.png
Normal file
BIN
bash-3-man/images/bash-love-heart.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
BIN
bash-3-man/images/bash.png
Normal file
BIN
bash-3-man/images/bash.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 63 KiB |
187
bash-3-man/overview.md
Normal file
187
bash-3-man/overview.md
Normal file
@@ -0,0 +1,187 @@
|
||||
名称(NAME)
|
||||
=======================
|
||||
|
||||
`bash` - `GNU Bourne-Again SHell`(`GNU` `Bourne`二世`shell`)
|
||||
|
||||
概要(SYNOPSIS)
|
||||
=======================
|
||||
|
||||
```bash
|
||||
bash [options] [file]
|
||||
```
|
||||
|
||||
版权所有(COPYRIGHT)
|
||||
=======================
|
||||
|
||||
`bash`由`Free Software Foundation, Inc`版权所有`1989-2005`。
|
||||
|
||||
描述(DESCRIPTION)
|
||||
=======================
|
||||
|
||||
`bash`是与`sh`兼容的命令语言解释器,可以执行从标准输入或者文件中读取的命令。
|
||||
`bash`也整合了`Korn`和`C` `Shell`(`ksh`和`csh`)中的有用的特性。
|
||||
|
||||
`bash`的目标是成为遵循`IEEE` `POSIX` `Shell`和工具规范(`IEEE`规范`1003.1`)的实现。
|
||||
`bash`可以配置成默认和`POSIX`一致。
|
||||
|
||||
选项(OPTIONS)
|
||||
=======================
|
||||
|
||||
除了在`set`内建命令的文档中讲述的单字符选项之外,`bash`在启动时还解释下列选项:
|
||||
|
||||
- `-c string`
|
||||
如果有`-c`选项,那么命令将从`string`中读取。如果`string`后面有参数,它们会赋值给位置参数 (以`$0`起始) 。
|
||||
- `-i`
|
||||
如果有`-i`选项,`shell`则交互式(`interactive`)执行。
|
||||
- `-l`
|
||||
使得`bash`以登录`shell`(`login shell`)的方式启动
|
||||
(参见下面的[【启动】](overview.md#启动(INVOCATION))一节)。
|
||||
- `-r`
|
||||
如果有`-r`选项,`shell`成为受限的(`restricted`)(参见下面的【受限的`shell`】一节)。
|
||||
- `-s`
|
||||
如果有`-s`选项,或者如果选项处理完以后没有参数剩余,那么从标准输入读取命令。
|
||||
这个选项允许,在启动交互式`shell`时设置位置参数。
|
||||
- `-D`
|
||||
向标准输出打印一个以`$`为前导的,以双引号引用的字符串列表。
|
||||
这是在当前语言环境不是`C`或`POSIX`时,脚本中需要翻译的字符串。
|
||||
这个选项隐含了`-n`选项,不会执行命令。
|
||||
- `[-+]O [shopt_option]`
|
||||
`shopt_option`是一个`shopt`内建命令可接受的选项 (参见下面的【[`shell`内建命令](buildin-command.md#shell内建命令(SHELL BUILTIN COMMANDS))】一节)。
|
||||
如果有`shopt_option`,`-O`将设置那个选项的取值;`+O`取消它。
|
||||
如果没有给出`shopt_option`,`shopt`将在标准输出上打印设为允许的选项的名称和值。
|
||||
如果启动选项是`+O`,输出将以一种可以重用为输入的格式显示。
|
||||
- `--`
|
||||
`--` 标志选项的结束,不再处理后续选项。
|
||||
任何`--`之后的参数将作为文件名和参数对待。参数`-`与此选项等价。
|
||||
|
||||
`bash`也解释一些多字符的选项。这些选项必须置于需要被识别的单字符参数之前才能识别。
|
||||
|
||||
- `--debugger`
|
||||
设置`debugger`配置文件,在`shell`启动前会执行这个文件。
|
||||
- `--dump-po-strings`
|
||||
等价于`-D`,但是输出是可移植对象(`GNU gettext po`)文件格式
|
||||
- `--dump-strings`
|
||||
等价于`-D`
|
||||
- `--help`
|
||||
在标准输出显示用法信息并成功退出
|
||||
- `--init-file file`
|
||||
`--rcfile file`
|
||||
如果`shell`是交互的,执行`file`中的命令,而不是标准的个人初始化文件`~/.bashrc`(参见下面的【启动】一节)
|
||||
- `--login`
|
||||
等价于`-l`
|
||||
- `--noediting`
|
||||
如果`shell`是交互的,不使用`GNU readline`库来读命令行
|
||||
- `--noprofile`
|
||||
不读取系统范围的启动文件`/etc/profile`或者任何个人初始化文件`~/.bash_profile`、`~/.bash_login`或`~/.profile`。
|
||||
默认情况下,`bash`在作为登录`shell`启动时读取这些文件(参见下面的【启动】一节)
|
||||
- `--norc`
|
||||
如果`shell`是交互的,不读取/执行个人初始化文件`~/.bashrc`这个选项在`shell`以`sh`命令启动时是默认启用的
|
||||
- `--posix`
|
||||
如果默认操作与`POSIX 1003.2`标准不同的话,改变`bash`的行为来符合标准(`posix`模式)
|
||||
- `--restricted`
|
||||
`shell`成为受限的(参见下面的【受限的`shell`】一节)
|
||||
- `--verbose`
|
||||
等价于`-v`
|
||||
- `--version`
|
||||
在标准输出显示此`bash`的版本信息并成功退出。
|
||||
|
||||
参数(ARGUMENTS)
|
||||
=======================
|
||||
|
||||
如果选项处理之后仍有参数剩余,并且没有指定`-c`或`-s`选项,第一个参数将假定为一个包含`shell`命令的文件的名字。
|
||||
如果`bash`是以这种方式启动的,`$0`将设置为这个文件的名字,位置参数将设置为剩余的其他参数。
|
||||
`Bash`从这个文件中读取并执行命令,然后退出。
|
||||
`Bash`的退出状态是脚本中执行的最后一个命令的退出状态。
|
||||
如果没有执行命令,退出状态是`0`。
|
||||
尝试的步骤是先试图打开在当前目录中的这个文件,接下来,如果没有找到,`shell`在`PATH`环境变量中的目录中搜索脚本。
|
||||
|
||||
启动(INVOCATION)
|
||||
=======================
|
||||
|
||||
登录`shell`,参数零的第一个字符是`-`,或者启动时指定了`--login`选项的`shell`。
|
||||
|
||||
交互的`shell`,是一个启动时没有指定非选项的参数,并且没有指定`-c`选项,标准输出和标准输入都连接到了终端 (在 isatty(3) 中判定) 的`shell`,或者启动时指定了`-i`选项的`shell`。
|
||||
如果`bash`是交互的,`PS1`环境变量将被设置,并且`$-`包含`i` ,允许一个`shell`脚本或者一个启动文件来检测这一状态。
|
||||
|
||||
下列段落描述了`bash`如何执行它的启动文件。
|
||||
如果这些启动文件中的任一个存在但是不可读取,`bash`将报告一个错误。
|
||||
文件名中的波浪号`~`(tilde) 将像【扩展】一节中`Tilde Expansion`段描述的那样展开。
|
||||
|
||||
当`bash`是作为交互的登录`shell`启动的,或者是一个非交互的`shell`但是指定了`--login`选项,它首先读取并执行`/etc/profile`中的命令,只要那个文件存在。
|
||||
读取那个文件之后,它以如下的顺序查找`~/.bash_profile`、`~/.bash_login`和`~/.profile`,从存在并且可读的第一个文件中读取并执行其中的命令。
|
||||
`--noprofile`选项可以用来在`shell`启动时阻止它这样做。
|
||||
|
||||
当一个登录`shell`退出时,`bash`读取并执行文件`~/.bash_logout`中的命令,只要它存在。
|
||||
|
||||
当一个交互的`shell`但不是登录`shell`启动时,`bash`从文件`~/.bashrc`中读取并执行命令,只要它存在。
|
||||
可以用`--norc`选项来阻止它这样做。
|
||||
`--rcfile file`选项将强制`bash`读取并执行文件`file`中的命令,而不是`~/.bashrc`中的。
|
||||
|
||||
当`bash`以非交互的方式启动时,例如在运行一个`shell`脚本时,它在环境中查找变量`BASH_ENV`,如果它存在则将它的值展开,使用展开的值作为一个文件的名称,读取并执行。
|
||||
`bash`运作的过程就如同执行了下列命令:
|
||||
|
||||
```bash
|
||||
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
|
||||
```
|
||||
|
||||
但是没有使用`PATH`变量的值来搜索那个文件名。
|
||||
|
||||
如果`bash`以名称`sh`启动,它试图模仿`sh`历史版本的启动过程,尽可能地相似,同时也遵循`POSIX`标准。
|
||||
当作为交互式登录`shell`启动时,或者是非交互但使用了`--login`选项启动的时候,
|
||||
它首先尝试读取并执行文件`/etc/profile`和`~/.profile`中的命令。
|
||||
选项`--noprofile`用于避免这种行为.当使用命令`sh`来启动一个交互式的`shell`时,`bash`查找环境变量`ENV`,如果有定义的话就扩展它的值,然后使用扩展后的值作为要读取和执行的文件的名称。
|
||||
由于使用`sh`启动的`shell`不会读取和执行任何其他的启动文件,选项`--rcfile`没有意义。
|
||||
使用名称`sh`启动的非交互的`shell`不会读取任何其他启动文件。
|
||||
当以`sh`启动时,`bash`在读取启动文件之后进入`posix`模式。
|
||||
|
||||
当`bash`以`posix`模式启动时,(和使用`--posix`命令行参数效果相同),它遵循`POSIX`标准。
|
||||
这种模式下,交互式`shell`扩展`ENV`环境变量的值,读取并执行以扩展后值为文件名的配置文件,不会读取其他文件。
|
||||
|
||||
`bash`试着检测它是不是由远程`shell`守护程序,通常为`rshd`启动的。
|
||||
如果`bash`发现它是由`rshd`启动的,它将读取并执行`~/.bashrc`文件中的命令,只要这个文件存在并且可读。
|
||||
如果以`sh`命令启动,它不会这样做。
|
||||
选项`--norc`可以用来阻止这种行为,选项`--rcfile`用来强制读取另一个文件,但是通常`rshd`不会允许它们,或者用它们来启动`shell`。
|
||||
|
||||
如果`shell`是以与真实用户(组)`id`不同的有效用户(组)`id`来启动的,并且没有`-`选项,那么它不会读取启动文件,也不会从环境中继承`shell`函数。
|
||||
环境变量中如果出现`SHELLOPTS`,它将被忽略。
|
||||
有效用户`id`将设置为真实用户`id`。
|
||||
如果启动时给出了`-`选项,那么启动时的行为是类似的,但是不会重置有效用户`id`。
|
||||
|
||||
定义(DEFINITIONS)
|
||||
=======================
|
||||
|
||||
下列定义在文档余下部分中通用.
|
||||
|
||||
- `blank`(空白)
|
||||
一个空格或是`tab`
|
||||
- `word`(词)
|
||||
一个字符序列,`shell`将它们视为一个结构单元. 也称为一个`token`。
|
||||
- `name` (名称)
|
||||
一个只由字母,数字和下划线构成的词,并且以字符或下划线起始. 也称为一个 word identifier标识符.
|
||||
- `metacharacter`(元字符)
|
||||
一个字符, 如果不是引用的话, 将成为词的分隔符. 它是如下字符之一:
|
||||
```bash
|
||||
\ | & ; ( ) < > space tab
|
||||
```
|
||||
- `control operator`(控制操作符)
|
||||
一个 token(标识), 拥有控制功能. 它是如下符号之一:
|
||||
```bash
|
||||
|| & && ; ;; ( ) | <newline>
|
||||
```
|
||||
|
||||
保留字(RESERVED WORDS)
|
||||
=======================
|
||||
|
||||
**保留字** 是对`shell`有特殊意义的词。
|
||||
|
||||
如果
|
||||
|
||||
- 不是在引用中
|
||||
- 并且
|
||||
- 简单命令的起始词或(参见下面【`shell`语法】一节),或者`case`和`for`命令第三个单词
|
||||
|
||||
下列词被识别为保留的:
|
||||
|
||||
```bash
|
||||
! case do done elif else esac fi for function if in select then until while { } time [[ ]]
|
||||
```
|
||||
Reference in New Issue
Block a user