Linux中bash文档翻译
BASH(1)通用命令手册BASH(1)
名称
bash - GNU Bourne-Again SHell
概要
bash [选项] [文件]
版权
Bash是自由软件基金会版权所有(C)1989-2011。
描述
Bash是一种兼容sh的命令语言解释器,它执行从标准输入或文件读取的命令。Bash还包含了有用的功能
Korn和C shell(ksh和csh)。
Bash旨在成为IEEE POSIX规范(IEEE标准1003.1)的Shell和Utilities部分的一致实现。Bash可以配置为
默认情况下,POSIX符合。
OPTIONS
在调用shell时,set builtin命令描述中记录的所有单字符shell选项都可以用作选项。另外,bash
在调用时解释以下选项:
-c string如果存在-c选项,则从字符串中读取命令。如果在字符串后面有参数,则将它们分配给位置参数,从而开始
0美元。
-i如果存在-i选项,则shell是交互式的。
-l使bash行为就像它作为登录shell一样被调用(参见下面的INVOCATION)。
-r如果存在-r选项,则shell将受到限制(请参阅下面的RESTRICTED SHELL)。
-s如果存在-s选项,或者在选项处理后没有参数,则从标准输入读取命令。此选项允许位置
调用交互式shell时要设置的参数。
在标准输出上打印所有以$开头的双引号字符串的-DA列表。这些是在语言翻译时需要进行语言翻译的字符串。
租赁区域设置不是C或POSIX。这意味着-n选项; 没有命令会被执行。
[ - +] O [shopt_option]
shopt_option是内置商店接受的shell选项之一(参见下面的SHELL BUILTIN命令)。如果存在shopt_option,则-O设置该值
选项; + O取消它。如果未提供shopt_option,则shopt接受的shell选项的名称和值将打印在标准输出上。如果
调用选项为+ O,输出以可以重用为输入的格式显示。
- A - 表示选项结束并禁用进一步的选项处理。 - 之后的任何参数都被视为文件名和参数。一个论点 - 是
相当于 - 。
Bash还解释了许多多字符选项。在要识别单字符选项之前,这些选项必须出现在命令行上。
--debugger
安排在shell启动之前执行调试器配置文件。打开扩展调试模式(请参阅shopt的extdebug选项说明
内置于下方)。
自卸宝串
相当于-D,但输出是GNU gettext po(便携式对象)文件格式。
自卸串
相当于-D。
--help在标准输出上显示用法消息并成功退出。
--init-file文件
--rcfile文件
如果shell是交互式的,则从文件而不是标准的个人初始化文件?/ .bashrc执行命令(参见下面的INVOCATION)。
- 登录
相当于-l。
--noediting
当shell是交互式时,不要使用GNU readline库来读取命令行。
--noprofile
不要读取系统范围的启动文件/ etc / profile或任何个人初始化文件?/ .bash_profile,?/ .bash_login或?/ .profile。默认情况下,
当bash作为登录shell调用时,bash会读取这些文件(请参阅下面的INVOCATION)。
--norc如果shell是交互式的,请不要读取和执行个人初始化文件?/ .bashrc。如果以sh调用shell,则默认情况下此选项处于启用状态。
--posix
更改bash的行为,其中默认操作与POSIX标准不同,以匹配标准(posix模式)。
--restricted
外壳受限制(见下面的限制外壳)。
--rpm-要求
生成shell脚本运行所需的文件列表。这意味着'-n'并且受到与编译时错误检查相同的限制
检查; 不解析命令替换,条件表达式和eval内置,因此可能会遗漏某些依赖项。
--verbose
相当于-v。
- 版
在标准输出上显示此bash实例的版本信息并成功退出。
ARGUMENTS
如果在选项处理之后仍然存在参数,并且既未提供-c选项也未提供-s选项,则假定第一个参数是包含shell的文件的名称
命令。如果以这种方式调用bash,则将$ 0设置为文件名,并将位置参数设置为其余参数。Bash读取并执行
来自此文件的命令,然后退出。Bash的退出状态是脚本中执行的最后一个命令的退出状态。如果未执行任何命令,则退出状态为0。
首先尝试在当前目录中打开文件,如果没有找到文件,则shell在PATH中搜索脚本中的目录。
INVOCATION
登录shell是其参数零的第一个字符是 - 或者以–login选项开头的一个。
交互式shell是在没有非选项参数的情况下启动的,没有-c选项,其标准输入和错误都连接到终端(由
isatty(3)),或者以-i选项开头的。如果bash是交互式的,则设置PS1和$ - 包括i,允许shell脚本或启动文件测试此状态。
以下段落描述了bash如何执行其启动文件。如果存在任何文件但无法读取,则bash报告错误。Tildes在文件中扩展
在扩展部分的Tilde扩展下面描述的名称。
当bash作为交互式登录shell或作为具有--login选项的非交互式shell调用时,它首先从文件/ etc / profile中读取并执行命令,如果
该文件存在。读取该文件后,它按顺序查找?/ .bash_profile,?/ .bash_login和?/ .profile,并从第一个文件中读取并执行命令
存在且可读。启动shell以禁止此行为时,可以使用--noprofile选项。
当登录shell退出时,如果文件存在,bash将从文件?/ .bash_logout和/etc/bash.bash_logout读取并执行命令。
当启动不是登录shell的交互式shell时,如果该文件存在,bash将从?/ .bashrc读取并执行命令。这可以通过使用来抑制
--norc选项。--rcfile文件选项将强制bash从文件而不是?/ .bashrc读取和执行命令。
例如,当以非交互方式启动bash以运行shell脚本时,它会在环境中查找变量BASH_ENV,如果它出现在那里则展开其值,并且
使用扩展值作为要读取和执行的文件的名称。Bash的行为就像执行了以下命令一样:
if [-n“$ BASH_ENV”]; 然后 。“$ BASH_ENV”; 科幻
但PATH变量的值不用于搜索文件名。
如果使用名称sh调用bash,它会尝试尽可能接近地模仿sh的历史版本的启动行为,同时符合POSIX标准
好。当作为交互式登录shell或带有--login选项的非交互式shell调用时,它首先尝试从/ 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)或
安全shell守护进程sshd。如果bash确定它以这种方式运行,它会从?/ .bashrc中读取并执行命令,如果该文件存在且可读的话。它会
如果作为sh调用,则不要这样做。--norc选项可用于禁止此行为,--rcfile选项可用于强制读取另一个文件,但rshd不会
通常使用这些选项调用shell或允许指定它们。
如果以有效用户(组)id不等于真实用户(组)id启动shell,并且未提供-p选项,则不读取任何启动文件,shell函数
tions不是从环境继承的,SHELLOPTS,BASHOPTS,CDPATH和GLOBIGNORE变量,如果它们出现在环境中,则被忽略,并且有效
用户ID设置为真实用户ID。如果在调用时提供了-p选项,则启动行为相同,但不会重置有效用户标识。
定义
本文档的其余部分使用以下定义。
空白或空格。
单词由shell视为单个单元的字符序列。也称为令牌。
name仅由字母数字字符和下划线组成的单词,以字母字符或下划线开头。也称为标识符。
元字符
一个字符,当不加引号时,分隔单词。以下之一:
| &; ()<>空格标签
控制操作员
执行控制功能的令牌。它是以下符号之一:
|| &&&; ;; ()| |&
保留字
保留字是对shell具有特殊含义的字。以下单词在未加引号时被识别为保留,并且是简单命令的第一个单词
(参见下面的SHELL GRAMMAR)或案例的第三个词或命令:
!案例做完elif else esac fi for function如果在select中那么直到{{time] [[]]
1
SHELL GRAMMAR
简单的命令
一个简单的命令是一系列可选的变量赋值,后跟空格分隔的单词和重定向,并由控制操作符终止。第一个字
指定要执行的命令,并作为参数零传递。其余的单词作为参数传递给调用的命令。
简单命令的返回值是其退出状态,如果命令由信号n终止,则返回128 + n。
1
管道
管道是由一个控制操作符|分隔的一个或多个命令的序列 或|&。管道的格式是:
[时间[-p]] [!]命令[[|?|&] command2 ...]
命令的标准输出通过管道连接到command2的标准输入。此连接在命令指定的任何重定向之前执行(请参阅
下面的重定向)。如果使用|&,则命令的标准错误通过管道连接到command2的标准输入; 它是2>&1 |的简写。这隐含的重新
在命令指定的任何重定向之后执行标准错误的反转。
除非启用了pipefail选项,否则管道的返回状态是最后一个命令的退出状态。如果启用了pipefail,则管道的返回状态为
以非零状态退出的最后一个(最右边)命令的值,如果所有命令都成功退出,则返回零。如果保留字!在管道之前,退出状态
该流水线是如上所述的退出状态的逻辑否定。shell在返回值之前等待管道中的所有命令终止。
如果时间保留字在管道之前,则在管道终止时报告其执行所消耗的经过时间以及用户和系统时间。-p选项
将输出格式更改为POSIX指定的格式。当shell处于posix模式时,如果下一个标记以“ - ”开头,则它不会将时间识别为保留字。
TIMEFORMAT变量可以设置为格式字符串,指定如何显示定时信息; 请参阅Shell变量下的TIMEFORMAT说明下面。
当shell处于posix模式时,时间可以跟在换行符之后。在这种情况下,shell显示shell及其子级占用的总用户和系统时间。
TIMEFORMAT变量可用于指定时间信息的格式。
管道中的每个命令都作为单独的进程执行(即,在子shell中)。
清单
列表是由一个运算符;,&,&&或||分隔的一个或多个管道的序列,并且可选地以;,&或之一终止。
在这些列表运算符中,&&和|| 具有相同的优先权,其次是; 和&,具有相同的优先权。
一个或多个换行符的序列可以出现在列表而不是分号中以分隔命令。
如果命令由控制操作符&终止,则shell在子shell中在后台执行命令。shell不会等待命令完成,并且
返回状态为0.命令由a分隔; 按顺序执行; shell等待每个命令依次终止。返回状态是退出状态执行的最后一个命令。
AND和OR列表是由&&和||分隔的一个或多个管道的序列 分别控制运营商。AND和OR列表以左关联性执行。
AND列表具有表单
command1 && command2
当且仅当command1返回退出状态为零时,才执行command2。
OR列表具有表单
command1 || 命令2
当且仅当command1返回非零退出状态时才执行command2。AND和OR列表的返回状态是在中执行的最后一个命令的退出状态
名单。
复合命令
复合命令是以下之一:
(list)列表在子shell环境中执行(参见下面的COMMAND EXECUTION ENVIRONMENT)。影响shell环境的变量赋值和内置命令可以
命令完成后不会保持有效。返回状态是列表的退出状态。
{list; }
list只是在当前的shell环境中执行。列表必须以换行符或分号结尾。这称为组命令。返回状态
是列表的退出状态。请注意,与元字符(和)不同,{和}是保留字,必须出现在允许保留字被识别的地方。
识别的。由于它们不会导致单词分隔,因此必须通过空格或其他shell元字符将它们与列表分开。
((表达))
根据ARITHMETIC EVALUATION下面描述的规则评估表达式。如果表达式的值不为零,则返回状态为0;
否则返回状态为1.这与let“expression”完全相同。
[[表达]]
根据条件表达式表达式的求值,返回0或1的状态。表达式由CONDI-下面描述的原色组成 -
TIONAL EXPRESSIONS。不对[[和]]之间的单词执行单词拆分和路径名扩展; 波浪扩展,参数和变量扩展,
执行算术扩展,命令替换,进程替换和引用删除。诸如-f之类的条件运算符必须不加引号才能被识别
作为初选。
与[[,<和>运算符一起使用时,使用当前语言环境按字典顺序排序。
当使用==和!=运算符时,运算符右侧的字符串被视为一个模式,并根据下面描述的模式进行匹配
匹配。如果启用了shell选项nocasematch,则执行匹配而不考虑字母字符的情况。如果是字符串,则返回值为0
匹配(==)或不匹配(!=)模式,否则为1。可以引用模式的任何部分以强制它作为字符串匹配。
可以使用另一个二元运算符=?,其优先级与==和!=相同。使用时,运算符右侧的字符串被视为a
扩展正则表达式并相应地匹配(如在正则表达式(3)中)。
表达式在语法上是不正确的,条件表达式的返回值是2.如果启用了shell选项nocasematch,则执行匹配
关于字母字符的情况。可以引用模式的任何部分以强制它作为字符串匹配。子字符串与括号内的子字符串匹配
正则表达式中的压力保存在数组变量BASH_REMATCH中。索引为0的BASH_REMATCH元素是字符串匹配的部分
整个正则表达式。索引为n的BASH_REMATCH元素是与第n个带括号的子表达式匹配的字符串部分。
可以使用以下运算符组合表达式,按优先级递减顺序列出:
(表达)
返回表达式的值。这可以用于覆盖运算符的正常优先级。
!表达
如果表达式为false,则为True。
expression1 && expression2
如果expression1和expression2都为true,则为True。
expression1 || 表达式2
如果expression1或expression2为true,则为True。
&&和|| 如果expression1的值足以确定整个条件表达式的返回值,则运算符不会计算expression2。
名称[[in [word ...]]; ]列表; DONE
扩展后面的单词列表,生成项目列表。变量名依次设置到该列表的每个元素,并且每次都执行列表。
如果省略in字,for命令对每个设置的位置参数执行一次列表(参见下面的参数)。返回状态是退出状态
执行的最后一个命令。如果后续项目的扩展导致空列表,则不执行任何命令,返回状态为0。
for((expr1; expr2; expr3)); 做清单; DONE
首先,根据算术评估下面描述的规则评估算术表达式expr1。然后算术表达式expr2进行评估
反复进行,直到评估为零。每次expr2计算为非零值时,执行列表并计算算术表达式expr3。如果有的话
表达式被省略,它的行为就好像它的计算结果为1.返回值是执行列表中最后一个命令的退出状态,如果是任何一个,则返回false
表达式无效。
选择名称[在单词]; 做清单; DONE
扩展后面的单词列表,生成项目列表。扩展单词集打印在标准错误上,每个单词前面都有一个数字。如果
在word中省略,打印位置参数(参见下面的参数)。然后显示PS3提示并从标准输入读取一行。如果
line由与显示的单词之一对应的数字组成,然后name的值设置为该单词。如果该行为空,则单词和提示符为
又玩了。如果读取EOF,则命令完成。读取的任何其他值都会将name设置为null。读取的行保存在变量REPLY中。清单是
在每次选择之后执行,直到执行break命令。select的退出状态是列表中执行的最后一个命令的退出状态,如果没有,则为零
mands被执行了。
[[(] pattern [| pattern] ...)列表中的案例单词;; ] ... esac
case命令首先扩展word,并尝试依次使用与路径名扩展相同的匹配规则将其与每个模式匹配(请参阅路径名扩展)
下面)。使用波浪扩展,参数和变量扩展,算术替换,命令替换,过程替换和引用来扩展该词
去除。检查的每个模式都使用波形扩展,参数和变量扩展,算术替换,命令替换和过程替换来扩展。
形式予以。如果启用了shell选项nocasematch,则执行匹配而不考虑字母字符的情况。找到匹配后,相关
执行自选列表。如果;; 使用运算符,在第一个模式匹配后不会尝试后续匹配。使用;代替;; 导致执行
继续与下一组模式相关联的列表。使用;;代替;; 导致shell测试语句中的下一个模式列表(如果有)和
在成功匹配时执行任何关联列表。如果没有模式匹配,则退出状态为零。否则,它是执行的最后一个命令的退出状态
名单。
如果列表; 然后列出; [elif list; 然后列出; ] ... [else list; ] fi
执行if列表。如果其退出状态为零,则执行then列表。否则,每个elif列表依次执行,如果其退出状态为零,则
执行相应的列表并完成命令。否则,执行else列表(如果存在)。退出状态是最后一个退出状态
执行命令,如果没有条件测试,则为零。
而list-1; 做list-2; DONE
直到list-1; 做list-2; DONE
只要列表list-1中的最后一个命令返回退出状态为零,while命令就会连续执行列表list-2。until命令是相同的
到while命令,除了测试被否定; 只要list-1中的最后一个命令返回非零退出状态,就会执行list-2。退出状态
while和until命令是list-2中执行的最后一个命令的退出状态,如果没有执行则返回零。
协进程
coprocess是一个shell命令,前面是coproc保留字。协同进程在子shell中异步执行,就像命令已以&结束一样
控制操作符,在执行的shell和协同进程之间建立双向管道。
协同进程的格式是:
coproc [NAME]命令[重定向]
这将创建一个名为NAME的协同进程。如果未提供NAME,则默认名称为COPROC。如果command是一个简单的命令,则不得提供NAME(见上文); 除此以外,
它被解释为简单命令的第一个单词。执行coproc时,shell会在上下文中创建一个名为NAME的数组变量(请参阅下面的数组)
正在执行的shell。命令的标准输出通过管道连接到执行shell中的文件描述符,该文件描述符分配给NAME [0]。
命令的标准输入通过管道连接到执行shell中的文件描述符,并且该文件描述符被分配给NAME [1]。这个管道建立了
在命令指定的任何重定向之前(请参阅下面的REDIRECTION)。文件描述符可以用作shell命令和使用标准的重定向的参数
单词扩展。为执行协同进程而生成的shell的进程ID可用作变量NAME_PID的值。wait builtin命令可能用于
等待协处理器终止。
协同进程的返回状态是命令的退出状态。
壳函数定义
shell函数是一个被称为简单命令的对象,它使用一组新的位置参数执行复合命令。Shell函数声明为
如下:
name()compound-command [重定向]
函数名[()]复合命令[重定向]
这定义了一个名为name的函数。保留字功能是可选的。如果提供了功能保留字,则括号是可选的。的身体
function是复合命令compound-command(参见上面的Compound命令)。该命令通常是{和}之间的命令列表,但可以是任何命令
在上面的复合命令下列出。只要将name指定为简单命令的名称,就会执行compound-command。任何重定向(请参阅重定向
在执行该功能时执行定义功能时指定的)。除非发生语法错误,否则函数定义的退出状态为零
或者已经存在具有相同名称的只读函数。执行时,函数的退出状态是正文中执行的最后一个命令的退出状态。
评论
在非交互式shell中,或者在内置shopt的interactive_comments选项的交互式shell中(参见下面的SHELL BUILTIN命令),
使用#导致该行以及该行上的所有剩余字符被忽略。未启用interactive_comments选项的交互式shell不允许
评论。默认情况下,interactive_comments选项在交互式shell中处于启用状态。
迪浮科技课程服务承诺:
1、免费重修:
学员缺课或者学校效果不理想,可以免费重修,确保课程内容完全掌握。重修过程中绝对不收取任何费用!
2、单独辅导:
如果学生在学习过程中,因各种原因无法跟班级进度同步,公司安排专家讲师一对一辅导,手把手带你成为IT精英!
3、自由实验:
清默网络有先进完善的实验中心,全天开放,实验机时不限,不断提高动手操作能力!
4、考试辅导:
学员考试前先通过清默内部模拟考试,技术确定达到考试要求并提供考前辅导及考试技巧讲解。
如果模拟考试未能通过,专家讲师会给予建议和辅导,合格后再参加正式考试,确保学员能高分通过认证考试。
5、企业实战项目:
即通过先进的设备完全搭建和企业项目完全一致的网络环境,把学习内容融会贯通并在实际项目中加以应用,以达到学员迅速掌握实际技能并弥补经验不足的目的,让学员的学习内容不再纸上谈兵,理论与实战完全吻合
咨询老师:郭老师
咨询电话:15056089769
咨询Q Q :1027831018
- 上一篇:容器将成为下一个“Linux”
- 下一篇:【Linux基础】常用高级命令