BASH 1
目录
- NAME bash
- 概述(SYNOPSIS)
- 版权所有(COPYRIGHT)
- 描述(DESCRIPTION)
- 选项(OPTIONS)
- 参数(ARGUMENTS) 如果选项处理之后仍有参数剩余,并且没有指定 .B
- 启动(INVOCATION)
- 定义(DEFINITIONS)
- 保留字(
- shell语法(
- 注释(COMMENTS) 在非交互的 shell 中或者使用内建命令 .B shopt 启用了 .B interactive_comments 选项的交互的 shell 中,以 .B # 起始的词使得这个词和所有同一行上所有剩余的字符都被忽略。没有启用 .B interactive_comments 选项的交互式 shell 不允许出现注释。这个选项在交互式 shell 中是默认启用的 (参见下面的 .SM .B
- 引用(QUOTING) 引用
- 参数(PARAMETERS) 一个参数 .I parameter 是一个储存值的实体。它可以是一个名称 .IR name , 一个数字或者是下面 .BR
- 扩展(EXPANSION) 命令行的扩展是在拆分成词之后进行的。有七种类型的扩展: .IR
- 重定向(REDIRECTION) 在命令执行前,它的输入和输出可能被 .I redirected (重定向), 使用一种 shell 可以解释的特殊记法。重定向也可以用于为当前 shell 执行环境 打开和关闭文件。下列重定向操作符可以前置或者放在 .I simple command (简单命令) 之中的任何位置,或者放在 .IR command 之后。重定向是以出现的顺序进行处理的,从左到右。 .PP 下列描述中,如果文件描述符被忽略,并且第一个重定向操作符是 .BR < , 那么重定向指的是标准输入 (文件描述符是 0)。如果重定向操作符的第一个字符是 .BR > , 那么重定向指的是标准输出 (文件描述符是 1)。 .PP 下列描述中,重定向操作符之后的词如果没有特殊说明,都要经过 brace expansion, tilde expansion, parameter expansion, command substitution, arithmetic expansion, quote removal, pathname expansion, 还有 word splitting。如果扩展为多于一个词, .B bash 将报错。 .PP 注意重定向的顺序非常重要。例如,命令 .RS .PP ls
- 别名(ALIASES)
- 函数(FUNCTIONS) 一个 shell 函数,以上面 .SM .BR
- 算术求值(
- 条件表达式(
- 简单命令扩展(
- 命令执行(COMMAND EXECUTION)
- 命令执行环境(COMMAND EXECUTION ENVIRONMENT)
- 环境(ENVIRONMENT) 当一个程序执行时,它被赋予一个字符串数组,成为环境 .IR environment 。 它是一个 名称-值对 (
- 退出状态(
- 信号(SIGNALS) 如果
- 作业控制(
- 提示符(PROMPTING) 在交互执行时, .B bash 在准备好读入一条命令时显示主提示符 .SM .B PS1, 在需要更多的输入来完成一条命令时显示 .SM .B PS2。 .B Bash 允许通过插入一些反斜杠转义的特殊字符来定制这些提示字符串,这些字符被如下解释: .RS .PD 0 .TP .B
- readline库(READLINE) 这是在交互 shell 中处理读取输入的库,除非在 shell 启动时给出了 .B
- 历史(HISTORY) 当启用内建命令 .B set 的 .B
- 历史扩展(
- shell 内建命令(SHELL BUILTIN COMMANDS)
- 受限的shell(RESTRICTED SHELL)
- 参见(
- 文件(FILES)
- 作者(AUTHORS)
- 报告BUGS (BUG REPORTS)
- BUGS .PP 它太大了,并且有点慢。 .PP .B bash 和传统版本的 .BR sh 之间有一些细微的差别,大部分是因为 .SM .B POSIX 规约的要求。 .PP 别名机制在一些应用中会混淆。 .PP Shell 内建命令和函数不可终止/重新开始。 .PP 组合的命令和使用 `a ; b ; c' 形式的命令序列在进程试图暂停时不能很好处理。 当一个进程中止,shell 会立即执行序列中的下一条命令。 也可以将命令的序列放在圆括号中,来强制启动子 shell,这样就可以将它们作为一个单元中止了。 .PP 在
- [中文版维护人]
- [中文版最新更新]
- 《中国linux论坛man手册页翻译计划》:
- 跋
BASH
NAMEæ¦è¿°(SYNOPSIS)
çæææ(COPYRIGHT)
æè¿°(DESCRIPTION)
é项(OPTIONS)
åæ°(ARGUMENTS)
å¯å¨(INVOCATION)
å®ä¹(DEFINITIONS)
ä¿çå("RESERVED WORDS")
shellè¯æ³("SHELL GRAMMAR")
Simple Commands ç®åå½ä»¤
Pipelines 管é
Lists åºå
Compound Commands å¤åå½ä»¤
注é(COMMENTS)
å¼ç¨(QUOTING)
åæ°(PARAMETERS)
Positional Parameters ä½ç½®åæ°
Special Parameters ç¹æ®åæ°
Shell Variables åé
Arrays
æ©å±(EXPANSION)
Brace Expansion
Tilde Expansion
Parameter Expansion
Command Substitution
Arithmetic Expansion
Process Substitution
Word Splitting
Pathname Expansion
Quote Removal
éå®å(REDIRECTION)
Redirecting Input
Redirecting Output
Appending Redirected Output (æ·»å å°éå®ååçè¾åºå°¾é¨)
Redirecting Standard Output and Standard Error
Here Documents
Here Strings
Duplicating File Descriptors (å¤å¶æä»¶æè¿°ç¬¦)
Moving File Descriptors
Opening File Descriptors for Reading and Writing
å«å(ALIASES)
彿°(FUNCTIONS)
ç®æ¯æ±å¼("ARITHMETIC EVALUATION")
æ¡ä»¶è¡¨è¾¾å¼("CONDITIONAL EXPRESSIONS")
ç®åå½ä»¤æ©å±("SIMPLE COMMAND EXPANSION")
å½ä»¤æ§è¡(COMMAND EXECUTION)
å½ä»¤æ§è¡ç¯å¢(COMMAND EXECUTION ENVIRONMENT)
ç¯å¢(ENVIRONMENT)
éåºç¶æ("EXIT STATUS")
ä¿¡å·(SIGNALS)
ä½ä¸æ§å¶("JOB CONTROL")
æç¤ºç¬¦(PROMPTING)
readlineåº(READLINE)
Readline Notation
Readline Initialization åå§å
Readline Key Bindings
Readline Variables
Readline Conditional Constructs
Searching
Readline Command Names
Commands for Moving ç§»å¨
Commands for Manipulating the History æçºµåå²è¡
Commands for Changing Text æ¹åææ¬
Killing and Yanking åªååç²è´´
Numeric Arguments æ°å¼åæ°
Completing è¡¥å¨
Keyboard Macros å®
Miscellaneous
Programmable Completion å¯ç¼ç¨è¡¥å¨
åå²(HISTORY)
å岿©å±("HISTORY EXPANSION")
Event Designators
Word Designators
修饰符 (Modifiers)
shell å建å½ä»¤(SHELL BUILTIN COMMANDS)
åéçshell(RESTRICTED SHELL)
åè§("SEE ALSO")
æä»¶(FILES)
ä½è(AUTHORS)
æ¥åBUGS (BUG REPORTS)
BUGS
[䏿çç»´æ¤äºº]
[ä¸æçææ°æ´æ°]
ãä¸å½linux论åmanæå页翻è¯è®¡åã:
è·
NAME
bash - GNU Bourne-Again SHell (GNU å½ä»¤è§£éç¨åº “Bourneäºä¸”)
æ¦è¿°(SYNOPSIS)
bash [options] [file]
çæææ(COPYRIGHT)
Bash is Copyright (C) 1989-2002 by the Free Software Foundation, Inc.
æè¿°(DESCRIPTION)
Bash æ¯ä¸ä¸ªä¸ sh å¼å®¹çå½ä»¤è§£éç¨åºï¼å¯ä»¥æ§è¡ä»æ åè¾å¥æèæä»¶ä¸- 读åçå½ä»¤ã Bash 乿´åäº Korn å C Shell (ksh å csh) ä¸çä¼ç§ç¹æ§ã
Bash çç®æ æ¯æä¸ºéµå¾ª IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2ï¼å¯ç§»æ¤æä½ç³»ç»è§çº¦ï¼ shell åå·¥å·) çå®ç°ã
é项(OPTIONS)
é¤äºå¨ set å建å½ä»¤çææ¡£ä¸è®²è¿°çåå符é项 (option) ä¹å¤ï¼bash å¨å¯å¨æ¶è¿è§£éä¸åé项ã
|
-c string |
妿æ -c é项ï¼é£ä¹å½ä»¤å°ä» string ä¸è¯»åã妿 string å颿忰 (argument)ï¼å®ä»¬å°ç¨äºç»ä½ç½®åæ° (positional parameterï¼ä»¥ $0 èµ·å§) èµå¼ã | ||
|
-i |
妿æ -i é项ï¼shell å°äº¤äºå°æ§è¡ ( interactive )ã | ||
|
-l |
éé¡¹ä½¿å¾ bash 以类似ç»å½ shell (login shell) çæ¹å¼å¯å¨ (åè§ä¸é¢ç å¯å¨(INVOCATION) ç« è)ã | ||
|
-r |
妿æ -r é项ï¼shell æä¸ºåéç ( restricted ) (åè§ä¸é¢ç åéçshell(RESTRICTED SHELL) ç« è)ã | ||
|
-s |
妿æ -s éé¡¹ï¼æè妿é项å¤çå®ä»¥åï¼æ²¡æåæ°å©ä½ï¼é£ä¹å½ä»¤å°ä»æåè¾å¥è¯»åã è¿ä¸ªé项å许å¨å¯å¨ä¸ä¸ªäº¤äº shell æ¶å¯ä»¥è®¾ç½®ä½ç½®åæ°ã | ||
|
-D |
åæ åè¾åºæå°ä¸ä¸ªä»¥ $ 为å导çï¼ä»¥åå¼å·å¼ç¨çå符串å表ã è¿æ¯å¨å½åè¯è¨ç¯å¢ä¸æ¯ C æ POSIX æ¶ï¼èæ¬ä¸éè¦ç¿»è¯çå符串ã è¿ä¸ªé项éå«äº -n é项ï¼ä¸ä¼æ§è¡å½ä»¤ã |
[-+]O [shopt_option]
shopt_option æ¯ä¸ä¸ª shopt å建å½ä»¤å¯æ¥åçé项 (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è)ã 妿æ shopt_optionï¼-O å°è®¾ç½®é£ä¸ªé项çåå¼ï¼ +O åæ¶å®ã å¦ææ²¡æç»åº shopt_optionï¼shopt å°å¨æ åè¾åºä¸æå°è®¾ä¸ºå许çé项çåç§°åå¼ã 妿å¯å¨éé¡¹æ¯ +Oï¼è¾åºå°ä»¥ä¸ç§å¯ä»¥éç¨ä¸ºè¾å¥çæ ¼å¼æ¾ç¤ºã
|
-- |
-- æ å¿é项çç»æï¼ç¦æ¢å¶ä½çé项å¤çãä»»ä½ -- ä¹åçåæ°å°ä½ä¸ºæä»¶åå忰坹å¾ãåæ° - 䏿¤çä»·ã |
Bash
ä¹è§£éä¸äºå¤åèçé项ãå¨å½ä»¤è¡ä¸ï¼è¿äºé项å¿é¡»ç½®äºéè¦è¢«è¯å«çåå-
ç¬¦åæ°ä¹åã
--dump-po-strings
çä»·äº -Dï¼ä½æ¯è¾åºæ¯ GNU gettext po (å¯ç§»æ¤å¯¹è±¡) æä»¶æ ¼å¼
--dump-strings
çä»·äº -D
|
--help |
卿 åè¾åºæ¾ç¤ºç¨æ³ä¿¡æ¯å¹¶æåéåº |
--init-file file
--rcfile file
妿 shell æ¯äº¤äºçï¼æ§è¡ file ä¸çå½ä»¤ï¼è䏿¯æ åç个人åå§åæä»¶ ˜/.bashrc (åè§ä¸é¢ç å¯å¨(INVOCATION) ç« è)
--login
çä»·äº -l
--noediting
妿 shell æ¯äº¤äºçï¼ä¸ä½¿ç¨ GNU readline åºæ¥è¯»å½ä»¤è¡
--noprofile
ä¸è¯»åç³»ç»èå´çå¯å¨æä»¶ /etc/profile æèä»»ä½ä¸ªäººåå§åæä»¶ ˜/.bash_profile, ˜/.bash_login, æ ˜/.profile ãé»è®¤æåµä¸ï¼ bash å¨ä½ä¸ºç»å½ shell å¯å¨æ¶è¯»åè¿äºæä»¶ (åè§ä¸é¢ç å¯å¨(INVOCATION) ç« è)
|
--norc |
妿 shell æ¯äº¤äºçï¼ä¸è¯»å/æ§è¡ä¸ªäººåå§åæä»¶ ˜/.bashrc è¿ä¸ªéé¡¹å¨ shell 以 sh å½ä»¤å¯å¨æ¶æ¯é»è®¤å¯ç¨ç |
--posix
妿é»è®¤æä½ä¸ POSIX 1003.2 æ åä¸åçè¯ï¼æ¹å bash çè¡ä¸ºæ¥ç¬¦åæ å (posix mode)
--restricted
shell æä¸ºåéç (åè§ä¸é¢ç åéçshell(RESTRICTED SHELL) ç« è)
--rpm-requires
产çä¸ä¸ªä¸ºä½¿èæ¬è¿è¡ï¼éè¦çæä»¶çå表ã è¿ä¸ªé项åå«äº -n é项ã 宿¯ä¸ºäºé¿åè¿è¡ç¼è¯æéè¯¯æ£æµæ¶çéå¶ï¼ï¼ Backticks, [] tests, è¿æ evals ä¸ä¼è¢«è§£éï¼ä¸äºä¾èµå³ç³»å¯è½ä¸¢å¤±
--verbose
çä»·äº -v
--version
卿 åè¾åºæ¾ç¤ºæ¤ bash ççæ¬ä¿¡æ¯å¹¶æåéåºã
åæ°(ARGUMENTS)
妿é项å¤çä¹å仿忰å©ä½ï¼å¹¶ä¸æ²¡ææå® -c æ -s é项ï¼ç¬¬ä¸ä¸ªåæ°å°åå®ä¸ºä¸ä¸ªåå« shell å½ä»¤çæä»¶çååã 妿 bash æ¯ä»¥è¿ç§æ¹å¼å¯å¨çï¼ $0 å°è®¾ç½®ä¸ºè¿ä¸ªæä»¶çåå- ï¼ä½ç½®åæ°å°è®¾ç½®ä¸ºå©ä½çå¶ä»åæ°ã Bash ä»è¿ä¸ªæä»¶ä¸- 读åå¹¶æ§è¡å½ä»¤ï¼ç¶åéåºã Bash çéåºç¶ææ¯èæ¬ä¸æ§è¡çæåä¸ä¸ªå½ä»¤çéåºç¶æã å¦ææ²¡ææ§è¡å½ä»¤ï¼éåºç¶ææ¯0ã å°è¯çæ¥éª¤æ¯åè¯å¾æå¼å¨å½åç®å½ä¸- çè¿ä¸ªæä»¶ï¼æ¥ä¸æ¥ï¼ å¦ææ²¡ææ¾å°ï¼shell å°æç´¢èæ¬ç PATH ç¯å¢åéä¸çè·¯å¾ã
å¯å¨(INVOCATION)
login shell ç»å½ shellï¼åæ°é¶ç第ä¸ä¸ªåç¬¦æ¯ - ï¼æèå¯å¨æ¶æå®äº --login é项ç shellã
interactive 交äºç shellï¼æ¯ä¸ä¸ªå¯å¨æ¶æ²¡ææå®éé项çåæ°ï¼å¹¶ä¸æ²¡ææå® -c éé¡¹ï¼æ åè¾åºåæ åè¾å¥é½è¿æ¥å°äºç»ç«¯ (å¨ isatty(3) ä¸å¤å®) çshellï¼æèå¯å¨æ¶æå®äº -i é项ç shellã妿 bash æ¯äº¤äºçï¼ PS1 ç¯å¢åéå°è¢«è®¾ç½®ï¼å¹¶ä¸ $- åå« i ï¼å许ä¸ä¸ª shell èæ¬æèä¸ä¸ªå¯å¨æä»¶æ¥æ£æµè¿ä¸ç¶æã
ä¸åæ®µè½æè¿°äº bash å¦ä½æ§è¡å®çå¯å¨æä»¶ã妿è¿äºå¯å¨æä»¶ä¸çä»»ä¸ä¸ªå- å¨ä½æ¯ä¸å¯è¯»åï¼ bash å°æ¥åä¸ä¸ªé误ãæä»¶åä¸çæ³¢æµªå· (˜,tilde) å°å EXPANSION ç« èä¸ 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 è¿ä½çè¿ç¨å°±å¦åæ§è¡äºä¸åå½ä»¤ï¼
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
使¯æ²¡æä½¿ç¨ PATH åéç弿¥æç´¢é£ä¸ªæä»¶åã
妿 bash 以åç§° sh å¯å¨ï¼å®è¯å¾æ¨¡ä»¿ (mimic) 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 åå符
ä¸ä¸ªå符,
妿䏿¯å¼ç¨çè¯,
å°æä¸ºè¯çåé符.
宿¯å¦ä¸å符ä¹ä¸:
| & ; ( ) < > space tab
control operator æ§å¶æä½ç¬¦
ä¸ä¸ª
token(æ è¯),
æ¥ææ§å¶åè½.
宿¯å¦ä¸ç¬¦å·ä¹ä¸:
|| & && ; ;; ( ) | <newline>
ä¿çå("RESERVED WORDS")
Reserved words(ä¿çå) æ¯å¯¹ shell æç¹æ®æä¹çè¯. ä¸åè¯è¢«è¯å«ä¸ºä¿çç, 妿䏿¯å¼ç¨, å¹¶ä¸ä¸æ¯ä¸ä¸ªç®åå½ä»¤çèµ·å§è¯ (åè§ä¸é¢ç shellè¯æ³("SHELL GRAMMAR") ), ä¹ä¸æ¯ case æè for å½ä»¤ç第ä¸ä¸ªè¯:
! case do done elif else esac fi for function if in select then until while { } time [[ ]]
shellè¯æ³("SHELL GRAMMAR")
Simple Commands ç®åå½ä»¤
simple command(ç®åå½ä»¤) æ¯(å¯éç)ä¸ç³»ååéèµå¼, ç´§æ¥çæ¯ blank(ç©ºæ ¼) åéçè¯åéå®å, ç¶å以ä¸ä¸ª control operator ç»æ. 第ä¸ä¸ªè¯ææäºè¦æ§è¡çå½ä»¤, å®è¢«ä½ä¸ºç¬¬ 0 ä¸ªåæ°. å¶ä½è¯è¢«ä½ä¸ºè¿ä¸ªå½ä»¤çåæ°.
simple command ç®åå½ä»¤çè¿å弿¯å®çéåºç¶æ, ææ¯ 128+n, 妿å½ä»¤è¢« signal(ä¿¡å·) n ç»æçè¯.
Pipelines 管é
pipeline(管é) æ¯ä¸ä¸ªæå¤ä¸ªå½ä»¤çåºåï¼ç¨å符 | åéã管éçæ ¼å¼æ¯è¿æ ·:
[time [-p]] [ ! ] command [ | command2 ... ]
å½ä»¤ command çæ åè¾åºéè¿ç®¡éè¿æ¥å°å½ä»¤ command2 çæ åè¾å¥ãè¿æ¥æ¯å¨å½ä»¤æå®çä»»ä½éå®åä¹åè¿è¡ç(åè§ä¸é¢ç REDIRECTION éå®å)ã
妿ä¿çå ! ä½ä¸ºç®¡éåç¼ï¼ç®¡éçéåºç¶æå°æ¯æåä¸ä¸ªå½ä»¤çéåºç¶æçé»è¾éå¼ã å¦åï¼ç®¡éçéåºç¶æå°±æ¯æåä¸ä¸ªå½ä»¤çã shell å¨è¿åéåºç¶æå¼ä¹åï¼çå¾ç®¡éä¸- çææå½ä»¤è¿åã
妿ä¿çå time ä½ä¸ºç®¡éåç¼ï¼ç®¡é䏿¢åå°ç»åºæ§è¡ç®¡éèè´¹çç¨æ·åç³»ç»æ¶é´ã é项 -p å°ä½¿è¾åºç¬¦å POSIX æå®çæ ¼å¼ã ç¯å¢åé TIMEFORMAT å¯ä»¥è®¾ç½®ä¸ºä¸ä¸ªæ ¼å¼åç¬¦ä¸²ï¼æå®æ¶é´ä¿¡æ¯åºå½å¦ä½æ¾ç¤ºï¼åè§ä¸é¢ç Shell Variables ç¯å¢åé ä¸ TIMEFORMAT ç讲述ã
管éä¸çæ¯ä¸ªå½ä»¤é½ä½ä¸ºåç¬çè¿ç¨æ¥æ§è¡(å³ï¼å¨ä¸ä¸ªå shell ä¸å¯å¨)ã
Lists åºå
list(åºå)æ¯ä¸ä¸ªæå¤ä¸ªç®¡éï¼ç¨æä½ç¬¦ ;, &, &&, æ ⎪⎪ åéçåºå, å¹¶ä¸å¯ä»¥éæ©ç¨ ;, &, æ <newline>æ°è¡ç¬¦ç»æ.
è¿äºåºåæä½ç¬¦ä¸ï¼ && å ⎪⎪ ä¼å级ç¸åï¼å¶æ¬¡æ¯ ; å &, å®ä»¬çä¼å级æ¯ç¸åçã
åºåä¸å¯ä»¥æä¸ä¸ªæå¤ä¸ªæ°è¡ç¬¦æ¥åéå½ä»¤ï¼è䏿¯ä½¿ç¨åå·åéã
妿ä¸ä¸ªå½ä»¤æ¯ç±æ§å¶æä½ç¬¦ & ç»æç, shell å°å¨åå°çå shell ä¸- æ§è¡è¿ä¸ªå½ä»¤ã shell ä¸ä¼çå¾å½ä»¤æ§è¡ç»æï¼è¿åç¶ææ»æ¯ 0ã以åå· ; åéçå½ä»¤ä¼è¢«é¡ºåºæ§è¡ï¼shell ä¼ç- 徿¯ä¸ªå½ä»¤ä¾æ¬¡ç»æãè¿åç¶ææ¯æåæ§è¡çå½ä»¤çè¿åç¶æã
æ§å¶æä½ç¬¦ && å ⎪⎪ åå«ä»£è¡¨ AND å OR åºåãä¸ä¸ª AND åºåç形弿¯
command1 && command2
command2 åªæå¨ command1 è¿å 0 æ¶æè¢«æ§è¡ã
ä¸ä¸ª OR åºåç形弿¯
command1 ⎪⎪ command2
command2 åªæå¨ command1 è¿åé 0 ç¶ææ¶æè¢«æ§è¡ãAND å OR åºåçè¿åç¶ææ¯åºå䏿忧è¡çå½ä»¤çè¿åç¶æã
Compound Commands å¤åå½ä»¤
compound command(å¤åå½ä»¤) æ¯å¦ä¸æåµä¹ä¸ï¼
|
(list) |
list åºåå°å¨ä¸ä¸ªå shell 䏿§è¡ãåéèµå¼åå½±å shell ç¯å¢åéçå建å½ä»¤å¨å½ä»¤ç»æåä¸ä¼åèµ·ä½ç¨ã è¿å弿¯åºåçè¿åå¼ã |
{ list; }
list åºåå°å¨å½å shell ç¯å¢ä¸æ§è¡ãåºåå¿é¡»ä»¥ä¸ä¸ªæ°è¡ç¬¦æåå·ç»æã è¿ç§åæ³ä¹ç§°ä¸º group command(å½ä»¤ç»)ãè¿å弿¯åºåçè¿åå¼ã注æä¸åå符 ( å ä¸åï¼ { å } æ¯ reserved words(ä¿çå)ï¼å¿é¡»åºç°å¨è½å¤è¯å«ä¿çåçåºåã ç±äºå®ä»¬ä¸ä¼äº§çæè¯(cause a word break)ï¼å®ä»¬ååºåä¹é´å¿é¡»ç¨ç©ºæ ¼åå¼ã
((expression))
è¡¨è¾¾å¼ expression å°è¢«æ±å¼ãæ±å¼è§åå¨ä¸é¢ç ç®æ¯æ±å¼ (ARITHMETIC EVALUATION) ç« èä¸æè¿°ãå¦æè¡¨è¾¾å¼çå¼éé¶ï¼è¿åå¼å°±æ¯ 0ï¼å¦åè¿å弿¯ 1ãè¿ç§åæ³å let "expression" çä»·ã
[[ expression ]]
è¿å 0 æ 1ï¼åå³äºæ¡ä»¶è¡¨è¾¾å¼ expression æ±å¼çæåµã è¡¨è¾¾å¼æ¯ç±ä¸é¢ CONDITIONAL EXPRESSIONS æ¡ä»¶è¡¨è¾¾å¼ ç« èä¸- æè¿°çåè¯(primaries) ç»æã [[ å ]] ä¸- çè¯ä¸ä¼è¿è¡è¯çæååè·¯å¾çæ©å±å¤çï¼ ètilde æ©å±ï¼åæ°ååéæ©å±ï¼ç®æ¯æ©å±ï¼å½ä»¤æ¿æ¢ï¼å½æ°æ¿æ¢åå¼ç¨çå»é¤åé½å°è¿è¡ã
å½ä½¿ç¨ == å != æä½ç¬¦æ¶ï¼æä½ç¬¦å³è¾¹çå- 符串被认为æ¯ä¸ä¸ªæ¨¡å¼ï¼æ ¹æ®ä¸é¢ Pattern Matching(模å¼å¹é) ç« èä¸çè§åè¿è¡å¹éã 妿å¹éåè¿å弿¯ 0ï¼å¦åè¿å 1ãæ¨¡å¼çä»»ä½é¨åå¯ä»¥è¢«å¼ç¨ï¼å¼ºå¶ä½¿å®ä½ä¸ºä¸ä¸ªå- 符串è被å¹éã
表达å¼å¯ä»¥ç¨ä¸åæä½ç¬¦ç»åèµ·æ¥ãæ ¹æ®ä¼å级çéåºååºå¦ä¸ï¼
( expression )
è¿åè¡¨è¾¾å¼ expression çå¼ãæ¬å·å¯ä»¥ç¨æ¥æåæä½ç¬¦çä¼å级ã
! expression
è¿åçï¼å¦æè¡¨è¾¾å¼ expression è¿ååã
expression1 && expression2
è¿åçï¼å¦æè¡¨è¾¾å¼ expression1 å expression2 é½è¿åçã
expression1 || expression2
è¿åçï¼å¦æè¡¨è¾¾å¼ expression1 æè expression2 äºèä¹ä¸è¿åçã
&&(ä¸) å || æä½ç¬¦ä¸ä¼å¯¹è¡¨è¾¾å¼ expression2 æ±å¼ï¼å¦æ expression1 å¯ä»¥å³å®æ´ä¸ªæ¡ä»¶è¡¨è¾¾å¼çè¿åå¼çè¯ã
for name [ in word ] ; do list ; done
in ä¹åçä¸ç³»åè¯ä¼è¢«æ©å±ï¼äº§çä¸ä¸ªé¡¹ç®å表ãåé name è¢«ä¾æ¬¡èµä»¥è¿ä¸ªå表ä¸çæ¯ä¸ªåç´ ï¼ åºå list æ¯æ¬¡é½è¢«æ§è¡ã妿 in word 被忽ç¥ï¼é£ä¹ for å½ä»¤éå 已设置çä½ç½®åæ°(positional parameterï¼åè§ä¸é¢ç PARAMETERS åæ°)ï¼ ä¸ºæ¯ä¸ä¸ªæ§è¡ä¸æ¬¡åºå listã è¿å弿¯æåä¸ä¸ªå½ä»¤çè¿åå¼ã妿 in ä¹åçè¯æ©å±çç»ææ¯ç©ºå表ï¼å°±ä¸ä¼æ§è¡ä»»ä½å½ä»¤ï¼è¿å弿¯ 0ã
for (( expr1 ; expr2 ; expr3 )) ; do list ; done
é¦åï¼ç®æ¯è¡¨è¾¾å¼ expr1 è¢«æ ¹æ®ä¸é¢ ç®æ¯æ±å¼ (ARITHMETIC EVALUATION) ä¸çè§åè¿è¡æ±å¼ã ç¶åç®æ¯è¡¨è¾¾å¼ expr2 è¢«å¾ªç¯æ±å¼ï¼ç´å°å®çäº 0ãæ¯æ¬¡ expr2 ç»æéé¶æ¶ï¼åºå list é½è¢«æ§è¡ï¼ ç®æ¯è¡¨è¾¾å¼ expr3 被æ±å¼ã妿任ä½è¡¨è¾¾å¼è¢«å¿½ç¥ï¼å°è¢«è§ä¸ºæ§è¡ç»ææ¯ 1ã è¿å弿¯åºå list ä¸è¢«æ§è¡çæåä¸ä¸ªå½ä»¤çè¿åå¼ï¼æèæ¯ falseï¼å¦æä»»ä½è¡¨è¾¾å¼éæ³çè¯ã
select name [ in word ] ; do list ; done
in ä¹åçä¸ç³»åè¯ä¼è¢«æ©å±ï¼äº§çä¸ä¸ªé¡¹ç®å表ãè¿ä¸ªæ©å±åçè¯éå被è¾åºå°æåé误ä¸ï¼æ¯ä¸ªåé¢ å ä¸ä¸ä¸ªæ°åã妿 in word 被忽ç¥ï¼å°è¾åºä½ç½®åæ° (åè§ä¸é¢ç PARAMETERS åæ° ç« è)ã PS3 æç¤ºç¬¦å°è¢«æ¾ç¤ºåºæ¥ï¼ç- å¾ä»æ åè¾å¥å¾å°ä¸è¡è¾å¥ã妿 è¾å¥æ¯ä¸ä¸ªæ°å䏿¾ç¤ºä¸- æå¯¹åºçè¯ï¼é£ä¹åé name çå¼å°è®¾ç½®ä¸ºè¿ä¸ªè¯ã妿è¾å¥ä¸ä¸ªç©ºè¡ï¼é£ä¹è¯åæç¤ºç¬¦å°å次æ¾ç¤ºåºæ¥ãå¦æè¯»å¥äºä¸ä¸ª EOFï¼å½ä»¤å°±ç»æã ä»»ä½å¶ä»å¼å°è®¾ç½®åé name 为空ã读å¥çè¡ä¿å- 为åé REPLY. åºå list 卿¯æ¬¡éæ©ä¹åé½ä¼æ§è¡ï¼ç´å°æ§è¡äºä¸ä¸ª break å½ä»¤ã select çéåºç¶ææ¯åºå list ä¸- æ§è¡çæåä¸ä¸ªå½ä»¤çéåºç¶æï¼å¦ææ²¡ææ§è¡å½ä»¤å°±æ¯ 0ã
case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
case å½ä»¤é¦åæ©å± word, ç¶å便¬¡è¯çç¨æ¯ä¸ª pattern æ¥å¹éå®ï¼ 使ç¨ä¸è·¯å¾æ©å±ç¸åçå¹éè§å(åè§ä¸é¢ç Pathname Expansion è·¯å¾æ©å± ç«è)ã妿æ¾å°ä¸ä¸ªå¹éï¼ç¸åºçåºåå°è¢«æ§è¡ãæ¾å°ä¸ä¸ªå¹éä¹åï¼ä¸ä¼åå°è¯å¶åçå¹éã å¦ææ²¡ææ¨¡å¼å¯ä»¥å¹éï¼è¿å弿¯ 0ãå¦åï¼è¿ååºå䏿忧è¡çå½ä»¤çè¿åå¼ã
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
åºå if list 被æ§è¡ã妿éåºç¶ææ¯ 0ï¼then list å°è¢«æ§è¡ãå¦åï¼æ¯ä¸ª elif å°è¢«ä¸æ¬¡æ§è¡ï¼å¦æéåºç¶ææ¯ 0ï¼ç¸åºç then list å°è¢«æ§è¡ï¼å½ä»¤ç»æã å¦åï¼else list å°è¢«æ§è¡ï¼å¦æå- å¨çè¯ã éåºç¶ææ¯æåæ§è¡çå½ä»¤çéåºç¶æï¼æèæ¯ 0ï¼å¦ææææ¡ä»¶é½ä¸æ»¡è¶³ã
while list;
do list; done
until list; do list;
done
while å½ä»¤ä¸æå°æ§è¡åºå do listï¼ç´å°åºå䏿åä¸ä¸ªå½ä»¤è¿å 0ã until å½ä»¤å while å½ä»¤çä»·ï¼é¤äºå¯¹æ¡ä»¶çæµè¯æ°å¥½ç¸åï¼åºå do list æ§è¡ç´å°åºå䏿åä¸ä¸ªå½ä»¤è¿åéé¶ç¶æå¼ã while å until å½ä»¤çéåºç¶ææ¯åºå do list 䏿åä¸ä¸ªå½ä»¤çéåºç¶æï¼ æèæ¯ 0ï¼å¦ææ²¡ææ§è¡ä»»ä½å½ä»¤ã
[ function ] name () { list; }
è¿æ ·å¯ä»¥å®ä¹ä¸ä¸ªå为 name ç彿°ã彿°ä½ body æ¯åå«å¨ { å } ä¹é´çå½ä»¤åºå listã 卿å®å° name ä½ä¸ºä¸ä¸ªå½ä»¤è¿è¡çåºåï¼è¿ä¸ªåºåå°è¢«æ§è¡ã 彿°çéåºç¶ææ¯å½æ°ä½æåæ§è¡çå½ä»¤çéåºç¶æ(åè§ä¸é¢ç FUNCTIONS 彿° ç« è)ã
注é(COMMENTS)
å¨é交äºç shell 䏿è使ç¨å建å½ä»¤ shopt å¯ç¨äº interactive_comments é项ç交äºç shell ä¸ï¼ä»¥ # èµ·å§çè¯ä½¿å¾è¿ä¸ªè¯åææåä¸è¡ä¸ææå©ä½çå- 符é½è¢«å¿½ç¥ã没æå¯ç¨ interactive_comments é项ç交äºå¼ shell ä¸å许åºç°æ³¨éãè¿ä¸ªé项å¨äº¤äºå¼ shell 䏿¯é»è®¤å¯ç¨ç (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è)ã
å¼ç¨(QUOTING)
å¼ç¨ Quoting ç¨æ¥å»æç¹å®å符æè¯çç¹æ®æä¹ãå¼ç¨å¯ä»¥ç¨æ¥ç¦æ¢å¯¹ç¹æ®å- 符çå¤çï¼ é»æ¢ä¿çå被è¯å«ï¼è¿ç¨æ¥é»æ¢åæ°çæ©å±ã
ä¸é¢å¨ DEFINITIONS å®ä¹ ä¸ååºçæ¯ä¸ªåå符 metacharacters å¯¹äº shell é½æç¹æ®æä¹ã妿è¦è¡¨è¾¾å®çæ¬ä¹ï¼å¿é¡»å¼ç¨å®ã
å¨ä½¿ç¨å½ä»¤è¡å岿©å±åè½æ¶ï¼history expansion å符ï¼éå¸¸æ¯ !ï¼å¿é¡»è¢«å¼ç¨ï¼æä¸ä¼è¿è¡å岿©å±ã
æä¸ç§å¼ç¨æºå¶ï¼è½¬ä¹å符 (escape character), åå¼å·ååå¼å·ã
ä¸ä¸ªæªè¢«å¼ç¨çåææ (\) æ¯è½¬ä¹å符 escape characterã å®ä¿çå¶åä¸ä¸ä¸ªå- 符çå颿ä¹ï¼é¤é飿¯ä¸ä¸ªæ°è¡ç¬¦ã 妿 \ åæ°è¡ç¬¦æå¯¹åºç°ï¼å¹¶ä¸åææ èªèº«æ²¡æè¢«å¼ç¨ï¼é£ä¹ \<newline> 被è§ä¸ºç»è¡æ å¿ (æææ¯ï¼å®è¢«ä»è¾å¥æµä¸å é¤å¹¶å¿½ç¥äº)ã
å°å符æ¾å¨åå¼å·ä¹ä¸ï¼å°ä¿çå¼ç¨ä¸ææå符çå- 颿ä¹ãåå¼å·ä¸è½åå«å¨åå¼å·å¼ç¨ä¹ä¸ï¼å³ä½¿åé¢å ä¸äºåææ ã
å°å符æ¾å¨åå¼å·ä¸ï¼åæ ·ä¿çææå符çå颿ä¹ï¼ä¾å¤çæåµæ¯ $, ‘, å \ã å符 $ å ‘ å¨åå¼å·ä¸ä»ç¶å·æç¹æ®æä¹ãåææ åªæå颿¯ä¸ååç¬¦æ¶ææç¹æ®æä¹ï¼ $, ‘, ", \, æ <newline>. åå¼å·å¯ä»¥åå«å¨åå¼å·å¼ç¨ä¸ï¼ä½è¦å¨åé¢å ä¸ä¸ä¸ªåææ ã
ç¹æ®çåæ° * å @ å¨åå¼å·ä¸æç¹æ®æä¹(åè§ä¸é¢ç PARAMETERS åæ° ç« è)ã
å½¢å¼ä¸º $’string’ çè¯ä¼è¢«ç¹æ®å¤çãå®è¢«æ©å±ä¸º stringï¼å¶ä¸- çåææ 转ä¹å符 è¢«æ¿æ¢ä¸º ANSI C æ åä¸è§å®çå符ãåææ 转ä¹åºåï¼å¦æå- å¨çè¯ï¼å°åå¦ä¸è½¬æ¢ï¼
|
\a |
alert (bell) åé | ||
|
\b |
backspace åé | ||
|
\e |
an escape character å符 Esc | ||
|
\f |
form feed è¿çº¸ | ||
|
\n |
new line æ°è¡ç¬¦ | ||
|
\r |
carriage return å车 | ||
|
\t |
horizontal tab æ°´å¹³è·³æ ¼ | ||
|
\v |
vertical tab ç«ç´è·³æ ¼ | ||
|
\\ |
backslash åææ | ||
|
\’ |
single quote åå¼å· | ||
|
\nnn |
ä¸ä¸ªå«æ¯ç¹å符ï¼å®ç弿¯å«è¿å¶å¼ nnn (ä¸å°ä¸ä¸ªæ°å)ã | ||
|
\xHH |
ä¸ä¸ªå«æ¯ç¹å符ï¼å®ç弿¯ååè¿å¶å¼ HH (ä¸å°ä¸¤ä¸ªååè¿å¶æ°å- )ã | ||
|
\cx |
ä¸ä¸ª ctrl-x å符 |
æ©å±ç»ææ¯åå¼å·å¼ç¨çï¼å°±å¥½å $ 符å·ä¸åå¨ä¸æ ·ã
åå¼å·å¼ç¨å符串åé¢å ä¸ä¸ä¸ª $ 符å·å°ä½¿å¾è¿ä¸ªåç¬¦ä¸²è¢«æ ¹æ®å½åè¯- è¨ç¯å¢ (locale) æ¥ç¿»è¯ã 妿å½åè¯è¨ç¯å¢æ¯ C æè POSIXï¼è¿ä¸ªç¬¦å·å°è¢«å¿½ç¥ã 妿è¿ä¸ªå- 符串被翻è¯å¹¶æ¿æ¢äºï¼é£ä¹æ¿æ¢ç»ææ¯åå¼å·å¼ç¨çã
åæ°(PARAMETERS)
ä¸ä¸ªåæ° parameter æ¯ä¸ä¸ªå¨åå¼çå®ä½ãå®å¯ä»¥æ¯ä¸ä¸ªåç§° name, ä¸ä¸ªæ°å- æèæ¯ä¸é¢ Special Parameters ç¹æ®åæ° ç« èä¸ååºçç¹æ®å符ä¹ä¸ãä» shell çè§åº¦æ¥çï¼ä¸ä¸ªåé variable æ¯ä¸ä¸ªç±åç§° name 代表çåæ°ãä¸ä¸ªåéæä¸ä¸ªå¼ value 以åé¶ä¸ªæå¤ä¸ªå±æ§ attibutesã屿§å¯ä»¥ä½¿ç¨å建å½ä»¤ declare æ¥è®¾ç½®(åè§ä¸é¢ shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« èä¸å¯¹ declare çæè¿°)ã
妿ç»ä¸ä¸ªåæ°èµå¼ï¼é£ä¹å®å°±è¢«å®ä¹äºã空å- ç¬¦ä¸²æ¯ææçå¼ã䏿¦ä¸ä¸ªåé被å®ä¹äºï¼å®åªè½ç¨å建å½ä»¤ unset æ¥åæ¶(åè§ä¸é¢ shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è).
ä¸ä¸ªåé variable å¯ä»¥ç¨è¿æ ·çè¯å¥å½¢å¼æ¥èµå¼ï¼
name=[value]
å¦ææ²¡æç»åºå¼ valueï¼ åé就被èµä¸ºç©ºåç¬¦ä¸²ãææå¼ values é½ç»è¿äºæ³¢æµªçº¿æ©å±ï¼åæ°ååéæ©å±ï¼å½ä»¤æ¿æ¢ï¼ç®æ¯æ©å±åå¼ç¨çåé¤(åè§ä¸é¢ç EXPANSION æ©å± ç« è)ã妿åéè®¾ç½®äº integer æ´æ° 屿§ï¼é£ä¹å¼ value å°è¿è¡ç®æ¯æ©å±ï¼å³ä½¿æ²¡æåºç¨ $((...)) æ©å± (åè§ä¸é¢ç Arithmetic Expansion ç®æ¯æ©å± ç« è)ã ä¸ä¼è¿è¡è¯çæåï¼é¤éæ¯ä¸é¢ Special Parameters ç¹æ®åæ° ä¸æå°ç "$@"ã ä¸ä¼è¿è¡è·¯å¾çæ©å±ãèµå¼è¯å¥ä¹åºç°å¨ä¸åå建å½ä»¤ä¸- ï¼ä½ä¸ºå®ä»¬çåæ°ï¼ declare, typeset, export, readonly, å local ã
Positional Parameters ä½ç½®åæ°
ä½ç½®åæ° positional parameter æ¯ä»¥ä¸æå¤ä¸ªæ°å代表çåæ°ï¼é¤äº 0ãä½ç½®åæ°æ¯å¨ shell å¯å¨æ¶ï¼æ ¹æ®å®çåæ°æ¥èµå¼çï¼ ä¹å¯ä»¥ç¨å建å½ä»¤ set æ¥éæ°èµå¼ãä½ç½®åæ°ä¸è½ç¨èµå¼è¯å¥æ¥èµå¼ãå¨ä¸ä¸ª shell 彿°è¢«æ§è¡çæ¶åï¼ä½ç½®åæ°ä¼è¢«ææ¶å°æ¿æ¢æ (åè§ä¸é¢ç FUNCTIONS 彿° ç« è)ã
å½ä½ç½®åæ°ç±ä¸¤ä¸ªä»¥ä¸çæ°åæææ¶ï¼å®å¿é¡»æ¾å¨æ¬å·å (åè§ä¸é¢ç EXPANSION æ©å± ç« è)ã
Special Parameters ç¹æ®åæ°
shell 对ä¸äºåæ°åç¹æ®å¤çãè¿äºåæ°åªè½è¢«å¼ç¨èä¸è½è¢«èµå¼ã
|
* |
æ©å±ä¸ºä½ç½®åæ°ï¼ä» 1 å¼å§ã妿æ©å±åçå¨åå¼å·ä¸- ï¼å®æ©å±ä¸ºä¸ä¸ªè¯ï¼å¼æ¯åä¸ªåæ°ï¼ä»¥ç¹æ®åé IFS ç第ä¸ä¸ªå- 符åéãä¹å°±æ¯è¯´ï¼"$*" çä»·äº "$1c$2c..."ï¼è¿é c æ¯åé IFS ç第ä¸ä¸ªå符ãå¦ææ²¡æè®¾ç½® IFSï¼ é£ä¹åæ°å°ç¨ç©ºæ ¼åéã IFS | ||
|
@ |
æ©å±ä¸ºä½ç½®åæ°ï¼ä» 1 å¼å§ã妿æ©å±åçå¨åå¼å·ä¸- ï¼æ¯ä¸ªåæ°é½å°æ©å±ä¸ºä¸ä¸ªè¯ãä¹å°±æ¯è¯´ï¼ "$@" çä»·äº "$1" "$2" ... 妿ä½ç½®åæ°ä¸åå¨ï¼"$@" å $@ æ©å±ä¸ºç©º (å³ï¼å®ä»¬è¢«å é¤äº)ã | ||
|
# |
æ©å±ä¸ºä½ç½®åæ°ç个æ°ï¼ä»¥åè¿å¶è¡¨ç¤ºã | ||
|
? |
æ©å±ä¸ºæè¿æ§è¡çåå°ç®¡éçç¶æã | ||
|
- |
æ©å±ä¸ºå½åé项æ å¿ãæ å¿æ¯å¨å¯å¨æ¶æä»¥å建å½ä»¤ set æå®çï¼æèæ¯ shell èªèº«è®¾ç½®ç (ä¾å¦é项 -i )ã | ||
|
$ |
æ©å±ä¸º shell çè¿ç¨ IDãå¨ä¸ä¸ª () å shell ä¸ï¼å®æ©å±ä¸ºå½å shell ç è¿ç¨ ID è䏿¯å shell çã | ||
|
! |
æ©å±ä¸ºæè¿ä¸æ¬¡æ§è¡çåå° (弿¥) å½ä»¤çè¿ç¨å·ã | ||
|
0 |
æ©å±ä¸º shell æè shell èæ¬çåç§°ãè¿ä¸ªåéæ¯å¨ shell åå§åæ¶è®¾ç½®çã妿 bash æ¯æ§è¡èæ¬æä»¶æ¶å¯å¨çï¼ $0 å°è®¾ç½®ä¸ºé£ä¸ªæä»¶çåç§°ã妿 bash å¯å¨æ¶çåæ°åå« -cï¼ é£ä¹ $0 被设置为å¯å¨å½ä»¤è¡è¢«æ§è¡åç第ä¸ä¸ªåæ°ï¼å¦ææçè¯ãå¦åï¼å®è¢«è®¾ç½®ä¸ºç¨æ¥å¯å¨ bash çæä»¶åï¼å°±æ¯åæ° 0ã | ||
|
_ |
shell å¯å¨æ¶ï¼è®¾ç½®ä¸º shell æåæ°ä¸è¢«æ§è¡ç shell èæ¬çç»å¯¹è·¯å¾åã ç¶åï¼å¨æ©å±æ¶æ©å±ä¸ºä¸ä¸ä¸ªå½ä»¤çæåä¸ä¸ªåæ°ãå®ä¹è¢«è®¾ç½®ä¸ºè¢«æ§è¡çæ¯ä¸ªå½ä»¤çæä»¶å¨åå¹¶ä¸ è¢«è®¾ç½®å°è¿ä¸ªå½ä»¤æ§è¡çç¯å¢å½ä¸ã彿£æ¥é®ä»¶æ¶ï¼è¿ä¸ªåæ°ä¿åçæ- £å¨æ£æ¥çé®ä»¶æä»¶çåç§°ã |
Shell Variables åé
shell å®ä¹äºä¸ååéï¼
|
BASH |
æ©å±ä¸ºç¨æ¥å¯å¨å½å bash å®ä¾çæä»¶å¨åã |
BASH_VERSINFO
ä¸ä¸ªåªè¯»æ°ç»åéï¼æåä¿åçå½å bash å®ä¾ççæ¬ä¿¡æ¯ãèµäºæ°ç»åç´ ç弿¯å¦ä¸è¿äºï¼
|
BASH_VERSINFO[0] |
ä¸»çæ¬å· (release). |
|||
|
BASH_VERSINFO[1] |
æ¬¡çæ¬å· (version). |
|||
|
BASH_VERSINFO[2] |
è¡¥ä¸çæ¬ |
|||
|
BASH_VERSINFO[3] |
ç¼è¯ä¿¡æ¯ |
|||
|
BASH_VERSINFO[4] |
å叿¶çç¶æ (ä¾å¦, beta1). |
|||
|
BASH_VERSINFO[5] |
MACHTYPE å¹³å°ç±»å |
BASH_VERSION
æ©å±ä¸ºä¸ä¸ªåç¬¦ä¸²ï¼æè¿°äºè¿ä¸ª bash. å®ä¾ççæ¬ã
COMP_CWORD
${COMP_WORDS} çç´¢å¼ï¼æåå½ååæ ä½ç½®æå¨çè¯ã è¿ä¸ªåéåªæå¨è¢«å¯ç¼ç¨è¡¥å¨åè½ (åè§ä¸é¢ç Programmable Completion ç« è) è°ç¨ç shell 彿°ä¸æå¯ç¨ã
COMP_LINE
å½åå½ä»¤è¡ãè¿ä¸ªåéåªæå¨è¢«å½ä»¤è¡¥å¨åè½è°ç¨ç shell 彿°åå¤é¨å½ä»¤ä¸æå¯ç¨ã
COMP_POINT
ç¸å¯¹äºå½åå½ä»¤èµ·å§å¤çå½ååæä½ç½®ã妿å½ååæä½ç½®æ¯å½åå½ä»¤çæ«ç«¯ï¼ å®çå¼å°±å ${#COMP_LINE} ç¸çã è¿ä¸ªåéåªæå¨è¢«å½ä»¤è¡¥å¨åè½è°ç¨ç shell 彿°åå¤é¨å½ä»¤ä¸æå¯ç¨ã
COMP_WORDS
ä¸ä¸ªæ°ç»åé (åè§ä¸é¢ç Arrays(æ°ç»)ä¸è)ï¼ç±å½åå½ä»¤è¡çå个åè¯ææã è¿ä¸ªåéåªæå¨è¢«å½ä»¤è¡¥å¨åè½è°ç¨ç shell 彿°ä¸æå¯ç¨ã
DIRSTACK
ä¸ä¸ªæ°ç»åéï¼åå«å½åç®å½æ çåå®¹ãæ ä¸çç®å½æåç顺åºå°±æ¯ç¨å建å½ä»¤ dirs æ¾ç¤ºæ¶ç顺åºã对è¿ä¸ªæ°ç»åéçæåèµå¼å¯ä»¥ç¨æ¥ä¿®æ¹æ ä¸- å·²æçç®å½ï¼ä½æ¯è¦æ·»å åå é¤ç®å½å°±å¿é¡»ä½¿ç¨ å建å½ä»¤ pushd å popdã 对å®èµå¼ä¸ä¼æ¹åå½åç®å½ãå¦æåæ¶äº DIRSTACK çå®ä¹ï¼å®å°±å¤±å»äºå®çç¹æ®æä¹ï¼å³ä½¿åæ¥éæ°å®ä¹å®ã
|
EUID |
æ©å±ä¸ºå½åç¨æ·çææç¨æ· IDãå®å¨ shell å¯å¨æ¶è®¾ç½®ã宿¯åªè¯»çã |
FUNCNAME
å½åæ§è¡ç shell 彿°åãè¿ä¸ªåéåªæå¨æ§è¡ä¸ä¸ª shell 彿°æ¶åå¨ãå FUNCNAME èµå¼æ²¡æææå¹¶ä¸è¿åä¸ä¸ªé误ãå¦æåæ¶äº FUNCNAME çå®ä¹ï¼å®å°±å¤±å»äºç¹æ®çæä¹ï¼å³ä½¿åæ¥éæ°å®ä¹å®ã
|
GROUPS |
ä¸ä¸ªæ°ç»åéï¼åå«å½åç¨æ·æå±çç»çå表ãå GROUPS èµå¼æ²¡æææå¹¶ä¸è¿åä¸ä¸ªé误ãå¦æåæ¶äº GROUPS çå®ä¹ï¼å®å°±å¤±å»äºç¹æ®çæä¹ï¼å³ä½¿åæ¥éæ°å®ä¹å®ã |
HISTCMD
å½åå½ä»¤çåå²ç¼å·ï¼æèåå²å表ä¸çç´¢å¼ãå¦æåæ¶äº HISTCMD çå®ä¹ï¼å®å°±å¤±å»äºç¹æ®çæä¹ï¼å³ä½¿åæ¥éæ°å®ä¹å®ã
HOSTNAME
èªå¨è®¾ç½®ä¸ºå½åç主æºåã
HOSTTYPE
èªå¨è®¾ç½®ä¸ºä¸ä¸ªå符串ï¼å¯ä¸å°æ è¯çæ£å¨è¿è¡ bash çæºå¨ç±»åãé»è®¤å¼æ¯ç³»ç»ç¸å³çã
|
LINENO |
æ¯æ¬¡å¼ç¨è¿ä¸ªåæ°æ¶ï¼shell å°å®æ¿æ¢ä¸ºä¸ä¸ªæç¤ºå¨èæ¬æå½æ°ä¸- å½åè¡å·çåè¿å¶æ°å(ä» 1 å¼å§)ã 妿䏿¯å¨èæ¬æå½æ°ä¸- ï¼æ¿æ¢å¾å°çå¼ä¸ä¸å®ææä¹ãå¦æåæ¶äº LINENO çå®ä¹ï¼å®å°±å¤±å»äºç¹æ®çæä¹ï¼å³ä½¿åæ¥éæ°å®ä¹å®ã |
MACHTYPE
èªå¨è®¾ç½®ä¸ºä¸ä¸ªå符串ï¼å®æ´çæè¿°äºæ£å¨è¿è¡ bash çç³»ç»ç±»åï¼æ ¼å¼æ¯æ åç GNU cpu-company-system æ ¼å¼ãé»è®¤å¼æ¯ç³»ç»ç¸å³çã
|
OLDPWD |
ä¸ä¸æ¬¡å½ä»¤ cd 设置çå·¥ä½ç®å½ã | ||
|
OPTARG |
å建å½ä»¤ getopts å¤ççæåä¸ä¸ªéé¡¹åæ°å¼ (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è)ã | ||
|
OPTIND |
å建å½ä»¤ getopts å°å¤ççä¸ä¸ä¸ªåæ°çç´¢å¼ (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è)ã | ||
|
OSTYPE |
èªå¨è®¾ç½®çä¸ä¸ªåç¬¦ä¸²ï¼æè¿°äºæ£å¨è¿è¡ bash çæä½ç³»ç»ãé»è®¤å¼æ¯ç³»ç»ç¸å³çã |
PIPESTATUS
ä¸ä¸ªæ°ç»åé (åè§ä¸é¢ç Arrays æ°ç» ç« è)ï¼åå«æè¿æ§è¡çåå°ç®¡éä¸- çè¿ç¨(å¯è½åªåå«ä¸ä¸ªå½ä»¤)çéåºç¶æã
|
PPID |
shell çç¶è¿ç¨çè¿ç¨å·ãè¿ä¸ªå鿝åªè¯»çã | ||
|
PWD |
ç± cd å½ä»¤è®¾ç½®çå½åå·¥ä½ç®å½ã | ||
|
RANDOM |
æ¯æ¬¡å¼ç¨è¿ä¸ªåæ°æ¶ï¼é½ä¼äº§çä¸ä¸ª 0 å° 32767 ä¹é´çéæºæ´æ°ãå¯ä»¥éè¿å RANDOM èµå¼æ¥åå§åéæºæ°åºåãå¦æåæ¶äº RANDOM çå®ä¹ï¼å®å°±å¤±å»äºç¹æ®çæä¹ï¼å³ä½¿åæ¥éæ°å®ä¹å®ã | ||
|
REPLY |
åéçå¼å°ä½ä¸ºå建å½ä»¤ read çè¾å¥ï¼å¦æå½ä»¤æ²¡æåæ°çè¯ã |
SECONDS
æ¯æ¬¡å¼ç¨è¿ä¸ªåæ°æ¶ï¼è¿å shell èªè¿è¡ä»¥æ¥çç§æ°ã妿å SECONDS èµå¼ï¼æ¤å对å®çå¼ç¨å°è¿åèªèµå¼æ¶èµ·çç§æ°å 䏿èµäºçå¼ã妿忶 SECONDS çå®ä¹ï¼å®å°±å¤±å»äºç¹æ®çæä¹ï¼å³ä½¿åæ¥éæ°å®ä¹å®ã
SHELLOPTS
ä¸ä¸ªåå·åéç被å许ç shell é项å表ãåè¡¨ä¸æ¯ä¸ªè¯é½æ¯åç½®å½ä»¤ set ç -o éé¡¹çææåæ°ã SHELLOPTS ä¸åºç°çé项乿¯ set -o æ¾ç¤ºä¸º on çé项ã妿 bash å¯å¨æ¶ä»ç¯å¢ä¸- æ¾å°è¿ä¸ªåéï¼é£ä¹å¨è¯»åä»»ä½éç½®æä»¶ä¹åï¼å表ä¸- çæ¯ä¸ªé项é½å°è¢«è®¾ç½®ãè¿ä¸ªå鿝åªè¯»çã
|
SHLVL |
æ¯æ¬¡å¯å¨ä¸ä¸ª bash çå®ä¾æ¶é½ä¼å¢å ã |
|||
|
UID |
æ©å±ä¸ºå½åç¨æ·ç IDï¼å¨å¯å¨æ¶åå§åãè¿ä¸ªå鿝åªè¯»çã |
ä¸ååé被
shell
使ç¨ãææ¶
bash
ä¼ä¸ºåéèµé»è®¤å¼ï¼è¿äºæåµå¨ä¸é¢ä¼æ åºã
BASH_ENV
妿 bash 卿§è¡ä¸ä¸ª shell èæ¬æ¶è®¾å®äºè¿ä¸ªåéï¼å®çå¼å°è¢«è§£é为ä¸ä¸ªæä»¶åï¼ åå«çåå§å shell ç¨å°çå½ä»¤ï¼å°±å ˜/.bashrc ä¸ä¸æ ·ã BASH_ENV çå¼å¨è¢«è§£é为ä¸ä¸ªæä»¶åä¹åè¦ç»è¿åæ°æ©å±ï¼å½ä»¤æ¿æ¢åç®æ¯æ©å±ãä¸ä¼ä½¿ç¨ PATH æ¥æ¥æ¾ç»ææä»¶åã
|
CDPATH |
å½ä»¤ cd çæç´¢è·¯å¾ãè¿æ¯ä¸ä¸ªåå·åéçç®å½å表ï¼shell ä»ä¸æ¥æ¾ cd å½ä»¤çç®æ ç®å½ãå¯ä»¥æ¯è¿æ ·ï¼ ".:˜:/usr". |
COLUMNS
ç¨å¨å建å½ä»¤ select å½ä¸ï¼ç¨æ¥å¤æè¾åºéæ©å表æ¶çç»ç«¯å®½åº¦ã èªå¨æ ¹æ® SIGWINCH ä¿¡å·æ¥è®¾ç½®ã
COMPREPLY
ä¸ä¸ªæ°ç»åéï¼bash ä»ä¸è¯»åå¯è½çå½ä»¤è¡¥å¨ã 宿¯ç±å½ä»¤è¡¥å¨åè½è°ç¨ç shell 彿°äº§ççã
|
FCEDIT |
å建å½ä»¤ fc é»è®¤çç¼è¾å¨ã |
FIGNORE
ä¸ä¸ªåå·åéçåç¼åå表ï¼å¨è¿è¡æä»¶åè¡¥å¨æ¶è¢«å¿½ç¥ (åè§ä¸é¢ç READLINE ç« è)ãä¸ä¸ªåç¼æ»¡è¶³å¶ä¸- ä¹ä¸çæä»¶å被æé¤å¨å¹éçæä»¶åä¹å¤ãå¯ä»¥æ¯è¿æ ·ï¼ ".o:˜".
GLOBIGNORE
ä¸ä¸ªåå·åéçæ¨¡å¼å表ï¼å®ä¹äºè·¯å¾åæ©å±æ¶è¦å¿½ç¥çæä»¶åéåã 妿ä¸ä¸ªæä»¶åä¸è·¯å¾æ©å±æ¨¡å¼å¹éï¼åæ¶å¹é GLOBIGNORE ä¸- çä¸ä¸ªæ¨¡å¼æ¶ï¼å®è¢«ä»å¹éå表ä¸å é¤ã
HISTCONTROL
å¦æè®¾ç½®ä¸º ignorespace, 以 space å¼å¤´çè¡å°ä¸ä¼æå¥å°åå²å表ä¸ãå¦æè®¾ç½®ä¸º ignoredups, å¹éä¸ä¸æ¬¡åå²è®°å½çè¡å°ä¸ä¼æå¥ã设置为 ignoreboth ä¼ç»åè¿ä¸¤ç§é项ãå¦ææ²¡æå®ä¹ï¼æè设置为å¶ä»å¼ï¼ææè§£éå¨è¯»åçè¡é½å°å- å¥åå²åè¡¨ï¼ ä½è¿è¦ç»è¿ HISTIGNORE å¤çãè¿ä¸ªåéçä½ç¨å¯ä»¥è¢« HISTIGNORE æ¿ä»£ãå¤è¡çç»åå½ä»¤ç第äºåå¶ä½è¡é½ä¸ä¼è¢«æ£æµï¼ä¸ç®¡ HISTCONTROL æ¯ä»ä¹ï¼é½ä¼å å¥å°åå²ä¸ã
HISTFILE
ä¿åå½ä»¤åå²çæä»¶å (åè§ä¸é¢ç HISTORY åå² ç« è)ãé»è®¤å¼æ¯ ˜/.bash_historyã妿忶å®ä¹ï¼å¨äº¤äºå¼ shell éåºæ¶ å½ä»¤åå²å°ä¸ä¼ä¿åã
HISTFILESIZE
å岿件ä¸- åå«çæå¤§è¡æ°ãå½ä¸ºè¿ä¸ªåéèµå¼æ¶ï¼å¦æéè¦çè¯ï¼å岿件å°è¢«æªæ æ¥å®¹çº³ä¸è¶è¿è¿ä¸ªå¼çè¡ãé»è®¤å¼æ¯ 500ãå岿件å¨äº¤äºå¼ shell éåºæ¶ ä¹ä¼è¢«æªæå°è¿ä¸ªå¼ã
HISTIGNORE
ä¸ä¸ªåå·åéçæ¨¡å¼å表ï¼ç¨æ¥å¤æé£ä¸ªå½ä»¤è¡åºå½ä¿åå¨åå²å表ä¸- ãæ¯ä¸ªæ¨¡å¼ é½å®ä½äºè¡é¦ï¼å¿é¡»å¹éæ´è¡ (没æå宿·»å ‘*’)ãå¨ HISTCONTROL æå®çæµè¯ç»æåï¼è¿éçæ¯ä¸ªæ¨¡å¼é½è¦è¢«æµè¯ãé¤äºå¹³å¸¸ç shell 模å¼å¹éåç¬¦ï¼ ‘&’ å¹éä¸ä¸ä¸ªåå²è¡ã‘&’ å¯ä»¥ä½¿ç¨åææ æ¥è½¬ä¹ï¼åææ å¨ å°è¯å¹éä¹åå°è¢«å é¤ãå¤è¡çç»åå½ä»¤ç第äºè¡ä»¥ååç»- è¡é½ä¸ä¼è¢«æµè¯ï¼ä¸ç®¡ HISTIGNORE æ¯ä»ä¹ï¼é½å°å å¥å°åå²ä¸ã
HISTSIZE
å½ä»¤åå²ä¸ä¿åçå岿°é (åè§ä¸é¢ç HISTORY åå² ç« è)ãé»è®¤å¼æ¯ 500ã
|
HOME |
å½åç¨æ·ç个人ç®å½ï¼å建å½ä»¤ cd çé»è®¤åæ°ã卿§è¡æ³¢æµªçº¿æ©å±æ¶ä¹ç¨å°è¿ä¸ªåéã |
HOSTFILE
åå«ä¸ä¸ªæ ¼å¼å /etc/hosts ç¸åçæä»¶åï¼å½ shell éè¦è¡¥å¨ä¸»æºåæ¶è¦è¯»åå®ãshell è¿è¡è¿ç¨ä¸ å¯ä»¥æ¹åå¯è½ç主æºåè¡¥å¨åè¡¨ï¼æ¹åä¹åä¸ä¸æ¬¡éè¦ä¸»æºåè¡¥å¨æ¶ bash ä¼å°æ°æä»¶çå容添å å°æ§å表ä¸ã妿å®ä¹äº HOSTFILE 使¯æ²¡æèµå¼ï¼bash å°å°è¯è¯»å /etc/hosts æä»¶æ¥è·å¾å¯è½ç主æºåè¡¥å¨å表ãå½åæ¶ HOSTFILE çå®ä¹æ¶ï¼ä¸»æºååè¡¨å°æ¸ç©ºã
|
IFS |
åé¨å段åé符 Internal Field Separator ç¨æ¥å¨æ©å±ä¹åè¿è¡åè¯ï¼ä½¿ç¨åé¨å½ä»¤ read å°è¡ååæè¯ãé»è®¤å¼æ¯ ‘‘<space><tab><newline>’’ã |
IGNOREEOF
æ§å¶äº¤äºå¼ shell æ¥åå°å¯ä¸ä¸ä¸ª EOF å- 符æ¶çè¡ä¸ºã妿æå®ä¹ï¼å¼æ¯éè¦å¨ä¸è¡çå¼å§è¿ç»è¾å¥ EOF å- 符ï¼ç´å°å¯ä»¥ä½¿ bash éåºçå符个æ°ã妿è¿ä¸ªåéå- å¨ï¼ä½æ¯å¼ä¸æ¯ä¸ä¸ªæ°åæè没æèµå¼ï¼é»è®¤å¼æ¯ 10ã 妿åéæ²¡æå®ä¹ï¼ EOF æ å¿çè¾å¥çç»æã
INPUTRC
readline çå¯å¨éç½®æä»¶ï¼è䏿¯é»è®¤ç ˜/.inputrc (åè§ä¸é¢ç READLINE ç« è)ã
|
LANG |
ç¨æ¥å³å®æ²¡æç¹å°ç¨ LC_ åéæå®çè¯è¨ç¯å¢é¡¹ã |
|||
|
LC_ALL |
è¿ä¸ªåéè¶è¶äº LANG åææå¶ä»æå®è¯è¨ç¯å¢é¡¹ç LC_ åéã |
LC_COLLATE
è¿ä¸ªåéå³å®äºä¸ºè·¯å¾æ©å±çç»ææåºæ¶çå- æ¯é¡ºåºï¼å³å®äºèå´è¡¨è¾¾å¼çè¡ä¸ºï¼ çä»·ç±»ï¼åè·¯å¾æ©å±ä¸- çå½å¹¶é¡ºåºä»¥å模å¼å¹éã
LC_CTYPE
è¿ä¸ªåéå³å®äºå符çè§£éåè·¯å¾æ©å±ä»¥å模å¼å¹éä¸å符类çè¡ä¸ºã
LC_MESSAGES
è¿ä¸ªåéå³å®äºç¿»è¯ä»¥ $ å导çåå¼å·å符串æ¶çè¯è¨ç¯å¢ã
LC_NUMERIC
è¿ä¸ªåéå³å®äºæ ¼å¼åæ°åæ¶çè¯è¨ç¯å¢åç±»ã
|
LINES |
å建å½ä»¤ select ç¨å®æ¥å¤æè¾åºéæ©å表æ¶çå宽度ã卿¶å° SIGWINCH ä¿¡å·æ¶èªå¨è®¾ç½®ã | ||
|
|
妿è¿ä¸ªåæ°è®¾ç½®ä¸ºä¸ä¸ªæä»¶åï¼å¹¶ä¸æ²¡æè®¾ç½®ç¯å¢åé MAILPATH çè¯ï¼ bash å°å¨è¿ä¸ªæä»¶ä¸éç¥ç¨æ·æé®ä»¶å°è¾¾ã |
MAILCHECK
æå® bash æ£æ¥é®ä»¶çé¢çæ¯å¤å°ï¼ä»¥ç§ä¸ºåä½ãé»è®¤å¼æ¯ 60 ç§ãéè¦æ£æ¥é®ä»¶çæ¶åï¼shell 卿¾ç¤ºæç¤ºç¬¦ä¹åå°è¿è¡æ£æ¥ã 妿忶å®çå®ä¹ï¼æè设置为并é大äºçäºé¶çæ°å¼ï¼shell å°ç¦æ- ¢é®ä»¶æ£æ¥ã
MAILPATH
ä¸ä¸ªåå·åéçæä»¶åå表ï¼ä»ä¸æ£æ¥é®ä»¶ãå½é®ä»¶å°è¾¾æä¸ªç¹æ®æä»¶ä¸-
æ¶ï¼è¾åºçç¹å®æ¶æ¯å¯ä»¥
éè¿å°æä»¶å䏿¶æ¯ä»¥
‘?’
å鿥æå®ã
卿¶æ¯çææ¬ä¸ï¼$_
æ©å±ä¸ºå½åé®ä»¶æä»¶çæä»¶åãä¾å¦ï¼
MAILPATH=’/var/mail/bfox?"You have
mail":˜/shell-mail?"$_ has mail!"’
Bash
为è¿ä¸ªåéæä¾é»è®¤å¼ï¼ä½æ¯å®ä½¿ç¨çç¨æ·é®ä»¶æä»¶çä½ç½®æ¯ç³»ç»ç¸å³ç
(ä¾å¦ï¼/var/mail/$USER)ã
|
OPTERR |
å¦æè®¾ç½®ä¸º 1ï¼ bash æ¾ç¤ºå建å½ä»¤ getopts 产ççéè¯¯æ¶æ¯ (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è)ãæ¯æ¬¡ shell å¯å¨æ¶æèä¸ä¸ª shell èæ¬è¢«æ§è¡æ¶ OPTERR 被åå§å为 1ã | ||
|
PATH |
æç´¢å½ä»¤çè·¯å¾ã宿¯ä¸ä¸ªåå·åå²çç®å½å表ï¼shell ä»ä¸æç´¢å½ä»¤ (åè§ä¸é¢ç å½ä»¤æ§è¡(COMMAND EXECUTION) 段è½)ãé»è®¤çè·¯å¾æ¯ç³»ç»ç¸å³çï¼æ¯ç±å®è£ bash çç³»ç»ç®¡çå设置çãé常å®ç弿¯ ‘‘/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.’’ã |
POSIXLY_CORRECT
妿 bash å¯å¨ç¯å¢ä¸æè¿ä¸ªåéï¼å®å°å¨è¯»åå¯å¨éç½®æä»¶ä¹åè¿å¥ posix modeï¼å°±å¥½åæä¾äº --posix å¯å¨åæ°ä¸æ ·ã妿 shell è¿è¡è¿ç¨ä¸- 设置äºå®ï¼bash å°±å¯ç¨ posix modeï¼å°±å¥½åæ§è¡äº set -o posix å½ä»¤ä¸æ ·ã
PROMPT_COMMAND
妿æå®ä¹ï¼å®çå¼å°ä½ä¸ºä¸ä¸ªå½ä»¤ï¼æ¯æ¬¡æ¾ç¤ºä¸»æç¤ºç¬¦ä¹åé½ä¼æ§è¡ã
|
PS1 |
è¿ä¸ªåæ°çå¼è¢«æ©å± (åè§ä¸é¢ç PROMPTING æç¤ºç¬¦ 段è½)ï¼ç¨ä½ä¸»æç¤ºç¬¦å符串ãé»è®¤å¼æ¯ ‘‘\s-\v\$ ’’ã | ||
|
PS2 |
è¿ä¸ªåæ°çå¼å PS1 ä¸èµ·è¢«æ©å±ï¼ç¨ä½æ¬¡æç¤ºç¬¦å符串ãé»è®¤å¼æ¯ ‘‘> ’’ã | ||
|
PS3 |
è¿ä¸ªåæ°çå¼è¢«ç¨ä½å建å½ä»¤ select çæç¤ºç¬¦ (åè§ä¸é¢ç SHELL GRAMMAR è¯æ³ ç« è)ã | ||
|
PS4 |
è¿ä¸ªåæ°çå¼å PS1 ä¸èµ·è¢«æ©å±ï¼å¨æ§è¡è·è¸ªä¸å¨ bash æ¾ç¤ºæ¯ä¸ªå½ä»¤ä¹åæ¾ç¤ºãéè¦çè¯ï¼ PS4 ç第ä¸ä¸ªå- 符ä¼è¢«å¤å¶å¤æ¬¡ï¼æ¥æç¤º indirection ç屿°ãé»è®¤å¼æ¯ ‘‘+ ’’ã |
TIMEFORMAT
å¨åç¼ time ä¿çåç管éä¸ï¼è¿ä¸ªåæ°çå¼ç¨ä½æ ¼å¼åç¬¦ä¸²ï¼ æå®è®¡æ¶ä¿¡æ¯å¦ä½æ¾ç¤ºãå符 % å¼å¥ç转ä¹åºåï¼è¢«æ©å±ä¸ºæ¶é´å¼ æå¶ä»ä¿¡æ¯ã转ä¹åºååå®ä»¬çå«ä¹å¦ä¸æç¤ºï¼æ¬å·ä¸æ¯å¯éçæåã
|
%% |
ä¸ä¸ªåé¢ä¸ç %ã |
|||
|
%[p][l]R |
ç»åçæ¶é´ï¼ä»¥ç§è®¡ç®ã |
|||
|
%[p][l]U |
CPU å¨ç¨æ·æ¨¡å¼ä¸æ§è¡çç§æ°ã |
|||
|
%[p][l]S |
CPU å¨ç³»ç»æ¨¡å¼ä¸æ§è¡çç§æ°ã |
|||
|
%P |
CPU 使ç¨çï¼ç®æ³æ¯ (%U + %S) / %Rã |
å¯éç p æ¯æå®ç²¾åº¦ (å°æ°ç¹åæ°å使°) çæ°å¼ã å¦ææ¯ 0 å°±ä¸è¾åºå°æ°ç¹æå°æ°å¼ãæå¤æå®å°å°æ°ç¹åä¸ä½ï¼ 妿 p å¤§äº 3 å°±ä¼è¢«æ¹ä¸º 3ãå¦ææ²¡ææå® pï¼é»è®¤ä½¿ç¨ 3ã
å¯éç l æå®äºé¿æ ¼å¼ï¼åå«åéï¼æ ¼å¼æ¯ MMmSS.FFsã p çå¼å³å®äºæ¯ä¸æ¯åå«å°æ°ä½ã
å¦ææ²¡æè®¾ç½®è¿ä¸ªå¼ï¼bash åå®å®ç弿¯ $’\nreal\t%3lR\nuser\t%3lU\nsys%3lS’ã 妿宿¯ç©ºå¼ï¼å°±ä¸ä¼æ¾ç¤ºè®¡æ¶ä¿¡æ¯ãæ¾ç¤ºæ ¼å¼å- ç¬¦ä¸²çæ¶åï¼ä¼å ä¸ ä¸ä¸ªåå¯¼çæ°è¡ç¬¦ã
|
TMOUT |
å¦æè®¾ç½®ä¸ºå¤§äº 0 çå¼ï¼TMOUT 被å½ä½å建å½ä»¤ read çé»è®¤è¶æ¶ ç徿¶é´ã妿çå¾ç»ç«¯è¾å¥æ¶ï¼ TMOUT ç§ä¹åä»ç¶æ²¡æè¾å¥ï¼ select å½ä»¤å°ç»æ¢ãå¨äº¤äºç shell ä¸ï¼å®çå¼è¢«è§£é为æ¾ç¤ºäº 主æç¤ºç¬¦ä¹åçå¾è¾å¥çç§æ°ã妿ç»è¿è¿ä¸ªç§æ°ä¹åä»ç¶æ²¡æè¾å¥ï¼ Bash å°éåºã |
auto_resume
è¿ä¸ªåéæ§å¶äº shell å¦ä½ä¸ç¨æ·åä½ä¸æ§å¶äº¤äºãå¦æè®¾ç½®äºè¿ä¸ªåéï¼ ä¸ä¸ªä¸åå«éå®åçå个è¯çç®åå½ä»¤ï¼å°ä½ä¸ºæ¢å¤è¢«ä¸æçä½ä¸çæç¤ºã ä¸å许åºç°æ¨¡æ£±ä¸¤å¯çæåµï¼å¦ææå¤ä¸ªä½ä¸é½ä»¥è¿ä¸ªè¯èµ·å§ï¼å°æ¢å¤æè¿è¿è¡ çä½ä¸ãå¨è¿ç§æå½¢ä¸ï¼è¢«ä¸æçä½ä¸ç name æ¯ç¨äºå¯å¨å®çå½ä»¤è¡ã妿å¼è®¾ç½®ä¸º exactï¼ ç»åºçå- 符串å¿é¡»ç²¾ç¡®å¹éè¢«ä¸æçä½ä¸åï¼å¦æè®¾ç½®ä¸º substringï¼ ç»åºçå符串éè¦å¹éè¢«ä¸æçä½ä¸åçå串ãå¼ substring çåè½ä¸ä½ä¸æ è¯ç¬¦ %? åè½ç±»ä¼¼ (åè§ä¸é¢ç JOB CONTROL ä½ä¸æ§å¶ ç« è)ãå¦æè®¾ç½®ä¸ºä»»ä½å¶ä»å¼ï¼ç»åºçå符串å¿é¡»æ¯è¢«ä¸æ- çä½ä¸çåç¼ï¼ è¿æ ·åä¸ä½ä¸æ è¯ç¬¦ % åè½ç±»ä¼¼ã
histchars
两å°ä¸ä¸ªåç¬¦ï¼æ§å¶çå岿©å±ååæ®µ (tokenizationï¼åè§ä¸é¢ç HISTORY EXPANSION å岿©å± ç« è)ã第ä¸ä¸ªåç¬¦æ¯ history expansion(å岿©å±) åç¬¦ï¼ è¿ä¸ªå符表æäºå岿©å±çå¼å§ï¼éå¸¸æ¯ ‘!’ã 第äºä¸ªåç¬¦æ¯ quick substitution(å¿«éæ¿æ¢) åç¬¦ï¼ å®æ¯éæ°è¿è¡ä¸æ¬¡è¾å¥çå½ä»¤ï¼ä½å°å½ä»¤ä¸çå- ç¬¦ä¸²æ¿æ¢ä¸ºå¦ä¸ä¸ªçç®åï¼ é»è®¤æ¯ ‘ˆ’ãå¯éç第ä¸ä¸ªå- ç¬¦æ¯æç¤ºå¦æä½ä¸ºä¸ä¸ªè¯çå¼å§ï¼é£ä¹ ä¸è¡ä¸å©ä½å- ç¬¦æ¯æ³¨éãé常è¿ä¸ªåç¬¦æ¯ ‘#’ãå岿³¨éåç¬¦ä½¿å¾ å¯¹ä¸è¡ä¸å©ä½å- 符å¨å岿¿æ¢ä¸è¢«è·³è¿ãå®ä¸ä¸å®ä½¿ shell è§£éå¨å° è¿ä¸è¡çå©ä½é¨åå½ä½æ³¨éã
Arrays
Bash æä¾äºä¸ç»´æ°ç»åéãä»»ä½åéé½å¯ä»¥ä½ä¸ºä¸ä¸ªæ°ç»ï¼å建å½ä»¤ declare å¯ä»¥æ¾å¼å°å®ä¹æ°ç»ãæ°ç»ç大尿²¡æä¸éï¼ä¹æ²¡æéå¶å¨è¿ç»å¯¹æåå¼ç¨å èµå¼æ¶æä»ä¹è¦æ±ãæ°ç»ä»¥æ´æ°ä¸ºä¸æ ï¼ä» 0 å¼å§ã
妿åéèµå¼æ¶ä½¿ç¨è¯æ³ name[subscript]=valueï¼ é£ä¹å°±ä¼èªå¨å建æ°ç»ã subscript 被å½ä½ä¸ä¸ªç®æ¯è¡¨è¾¾å¼ï¼ç»æå¿é¡»æ¯å¤§äºçäº 0 çå¼ãè¦æ¾å¼å°å®ä¹ä¸ä¸ªæ°ç»ï¼ä½¿ç¨ declare -a name (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è)ãä¹å¯ä»¥ç¨ declare -a name[subscript] è¿æ¶ subscript 被忽ç¥ãæ°ç»åéç屿§å¯ä»¥ç¨å建å½ä»¤ declare å readonly æ¥æå®ãæ¯ä¸ªå±æ§å¯¹äºæææ°ç»åç´ é½ææã
æ°ç»èµå¼å¯ä»¥ä½¿ç¨å¤åèµå¼çæ¹å¼ï¼å½¢å¼æ¯ name=(value1 ... valuen)ï¼è¿éæ¯ä¸ª value çå½¢å¼é½æ¯ [subscript]=stringãstring å¿é¡»åºç°ã妿åºç°äºå¯éçæ¬å·å䏿 ï¼å°ä¸ºè¿ä¸ªä¸æ èµå¼ï¼å¦å 被èµå¼çåç´ ç䏿 æ¯è¯å¥ä¸ä¸ä¸æ¬¡èµå¼ç䏿 å ä¸ã䏿 ä» 0 å¼å§ã è¿ä¸ªè¯- æ³ä¹è¢«å建å½ä»¤ declare ææ¥åãåç¬çæ°ç»åç´ å¯ä»¥ç¨ä¸é¢ä»ç»çè¯æ³ name[subscript]=value æ¥èµå¼ã
æ°ç»çä»»ä½åç´ é½å¯ä»¥ç¨ ${name[subscript]} æ¥å¼ç¨ã è±æ¬å·æ¯å¿é¡»çï¼ä»¥é¿ååè·¯å¾æ©å±å²çªã妿 subscript æ¯ @ ææ¯ *ï¼å®æ©å±ä¸º name çæææåã è¿ä¸¤ç§ä¸æ åªæå¨åå¼å·ä¸æä¸åãå¨åå¼å·ä¸- ï¼${name[*]} æ©å±ä¸ºä¸ä¸ªè¯ï¼ ç±æææ°ç»æåçå¼ç»æï¼ç¨ç¹æ®åé IFS ç第ä¸ä¸ªå符åéï¼${name[@]} å° name çæ¯ä¸ªæåæ©å±ä¸ºä¸ä¸ªè¯ã 妿æ°ç»æ²¡ææåï¼${name[@]} æ©å±ä¸ºç©ºä¸²ãè¿ç§ä¸å类似äºç¹æ®åæ° * å @ çæ©å± (åè§ä¸é¢ç Special Parameters 段è½)ã${#name[subscript]} æ©å±ä¸º ${name[subscript]} çé¿åº¦ã妿 subscript æ¯ * æèæ¯ @ï¼æ©å±ç»ææ¯æ°ç»ä¸- åç´ ç个æ°ãå¼ç¨æ²¡æä¸æ æ°ç»åéçä»·äº å¼ç¨åç´ 0ã
å建å½ä»¤ unset ç¨äºéæ¯æ°ç»ãunset name[subscript] å°éæ¯ä¸æ æ¯ subscript çåç´ ã unset name, è¿é name æ¯ä¸ä¸ªæ°ç»ï¼æè unset name[subscript], è¿é subscript æ¯ * æèæ¯ @ï¼å°éæ¯æ´ä¸ªæ°ç»ã
å建å½ä»¤ declare, local, å readonly é½è½æ¥å -a é项ï¼ä»èæå®ä¸ä¸ªæ°ç»ãå建å½ä»¤ read å¯ä»¥æ¥å -a é项ï¼ä»æ åè¾å¥è¯»å¥ä¸åè¯æ¥ä¸ºæ°ç»èµå¼ãå建å½ä»¤ set å declare 使ç¨ä¸ç§å¯ä»¥éç¨ä¸ºè¾å¥çæ ¼å¼æ¥æ¾ç¤ºæ°ç»åç´ ã
æ©å±(EXPANSION)
å½ä»¤è¡çæ©å±æ¯å¨æåæè¯ä¹åè¿è¡çãæä¸ç§ç±»åçæ©å±ï¼ brace expansion(è±æ¬å·æ©å±), tilde expansion(波浪线æ©å±), parameter and variable expansion(åæ°ååéæ©å±), command substitution(å½ä»¤æ¿æ¢), arithmetic expansion(ç®æ¯æ©å±), word splitting(è¯çæå), å pathname expansion(è·¯å¾æ©å±).
æ©å±çé¡ºåºæ¯ï¼brace expansion, tilde expansion, parameter, variable å arithmetic expansion è¿æ command substitution (æç§ä»å·¦å°å³ç顺åº), word splitting, æåæ¯ pathname expansion.
è¿æä¸ç§éå çæ©å±ï¼process subtitution (è¿ç¨æ¿æ¢) åªæå¨æ¯æå® çç³»ç»ä¸ææã
åªæ brace expansion, word splitting, å pathname expansion 卿©å±ååçè¯æ°ä¼åçæ¹åï¼å¶ä»æ©å±æ»æ¯å°ä¸ä¸ªè¯æ©å±ä¸ºä¸ä¸ªè¯ã å¯ä¸çä¾å¤æ¯ä¸é¢æå°ç "$@" å "${name[@]}" (åè§ PARAMETERSåæ°)ã
Brace Expansion
Brace expansion æ¯ä¸ç§å¯è½äº§çä»»æåç¬¦ä¸²çæºå¶ãè¿ç§æºå¶ç±»ä¼¼äº pathname expansion, 使¯å¹¶ä¸éè¦åå¨ç¸åºçæä»¶ã è±æ¬å·æ©å±çæ¨¡å¼æ¯ä¸ä¸ªå¯éç preamble(å导å符), åé¢è·çä¸ç³»åéå·åéçå- 符串ï¼åå«å¨ä¸å¯¹è±æ¬å·ä¸ï¼ åå颿¯ä¸ä¸ªå¯éç postscript(éè¨)ã å导被添å å°è±æ¬å·ä¸çæ¯ä¸ªå符串åé¢ï¼éè¨è¢«éå å°æ¯ä¸ªç»æå符串ä¹åï¼ ä»å·¦å°å³è¿è¡æ©å±ã
è±æ¬å·æ©å±å¯ä»¥åµå¥ãæ©å±å符串çç»ææ²¡ææåºï¼èæ¯ä¿çäºä»å·¦å°å³ç顺åºã ä¾å¦ï¼ a{d,c,b}e æ©å±ä¸º ‘ade ace abe’ã
è±æ¬å·æ©å±æ¯å¨ä»»ä½å¶ä»æ©å±ä¹åè¿è¡çï¼ä»»ä½å¯¹å¶ä»æ©å±æç¹æ®æä¹çå符 é½ä¿çå¨ç»æä¸ã宿¯ä¸¥æ ¼åé¢ä¸çã Bash ä¸ä¼å¯¹æ©å±çä¸ä¸ææè±æ¬å·ä¸- çææ¬åä»»ä½è¯ä¹ä¸çè§£éã
æ£ç¡®çè±æ¬å·æ©å±å¿é¡»å嫿²¡æå¼ç¨çå·¦æ¬å·å峿¬å·ï¼ä»¥åè³å°ä¸ä¸ªæ²¡æ å¼ç¨çéå·ãä»»ä½ä¸æ£ç¡®ç表达å¼é½ä¸ä¼è¢«æ¹åãå¯ä»¥ç¨åææ æ¥å¼ç¨ { æ , æ¥é»æ¢å°å®ä»¬è¯å«ä¸ºè±æ¬å·è¡¨è¾¾å¼çä¸é¨åã 为äºé¿åä¸åæ°æ©å±å²çªï¼å- 符串 ${ ä¸è¢«è®¤ä¸ºææçç»åã
è¿ç§ç»æéå¸¸ç¨æ¥ç®åå符串çå¬å±åç¼è¿æ¯ä¸ä¾ä¸ä¸ºé¿çæåµï¼ä¾å¦ï¼
mkdir /usr/local/src/bash/{old,new,dist,bugs}
æèï¼
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
è±æ¬å·æ©å±å¯¼è´äºä¸åå²çæ¬ç sh çä¸ç¹ä¸å¼å®¹ãå¨å·¦æ¬å·æå³æ¬å·ä½ä¸ºè¯çä¸é¨ååºç°æ¶ï¼ sh ä¸ä¼å¯¹å®ä»¬è¿è¡ç¹æ®å¤çï¼ä¼å¨è¾åºä¸ä¿çå®ä»¬ã Bash å°æ¬å·ä»è±æ¬å·æ©å±ç»æçè¯ä¸å é¤ãä¾å¦ï¼å sh è¾å¥ file{1,2} ä¼å¯¼è´ä¸åçè¾åºãåæ ·çè¾å¥å¨ bash è¿è¡æ©å±ä¹åï¼ä¼è¾åº file1 file2 . 妿éè¦å sh ä¸¥æ ¼å°ä¿æå¼å®¹ï¼éè¦å¨å¯å¨ bash çæ¶åä½¿ç¨ +B éé¡¹ï¼æèä½¿ç¨ set å½ä»¤å ä¸ +B é项æ¥ç¦ç¨è±æ¬å·æ©å± (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è)ã
Tilde Expansion
妿ä¸ä¸ªè¯ä»¥æ²¡æå¼ç¨ç波浪线å符 (‘˜’) å¼å§ï¼ææ å¨ç¬¬ä¸ä¸ªæ²¡æå¼ç¨çæçº¿ (‘/’) ä¹åçå符 (æèæ¯è¿ä¸ªè¯çææåç¬¦ï¼ å¦ææ²¡ææ²¡å¼ç¨çæçº¿çè¯) é½è¢«è®¤ä¸ºæ¯ tilde-prefix(波浪线åç¼)ã 妿 tilde-prefix 䏿²¡æè¢«å¼ç¨çå符ï¼é£ä¹æ³¢æµªçº¿ä¹åçå符串 è¢«è®¤ä¸ºæ¯ login name(ç»å½å)ã妿ç»å½åæ¯ç©ºåç¬¦ä¸²ï¼æ³¢æµªçº¿å° è¢«æ¿æ¢ä¸º shell åæ° HOME çå¼ãå¦ææ²¡æå®ä¹ HOMEï¼ å°æ¿æ¢ä¸ºæ§è¡æ¤ shell çç¨æ·ç个人ç®å½ãå¦åï¼tilde-prefix è¢«æ¿æ¢ä¸º 䏿å®ç»å½åç¸èç³»ç个人ç®å½ã
妿 tilde-prefix æ¯ ‘˜+’ï¼å°ä½¿ç¨ shell åé PWD ç弿¥æ¿æ¢ã妿 tilde-prefix æ¯ ‘˜-’ï¼å¹¶ä¸è®¾ç½®äº shell åé OLDPWD, å°ä½¿ç¨è¿ä¸ªåé弿¥æ¿æ¢ãå¦æå¨ tilde-prefix ä¸ï¼æ³¢æµªçº¿ä¹åçå符串 ç±ä¸ä¸ªæ°å N ç»æï¼åç¼å¯éç ‘+’ æè ‘-’ï¼é£ä¹ tilde-prefix å°è¢«æ¿æ¢ä¸ºç®å½æ ä¸ç¸åºçåç´ ï¼å°±æ¯å° tilde-prefix ä½ä¸ºåæ°æ§è¡å建å½ä»¤ dirs æ¾ç¤ºçç»æã妿 tilde-prefix 䏿³¢æµªçº¿ä¹åçå- 符æ¯ä¸ä¸ªæ°åï¼æ²¡æåç¼ï¼ é£ä¹å°±å宿ä¸ä¸ª ‘+’ã
妿ç»å½åä¸åæ³ï¼æè波浪线æ©å±å¤±è´¥ï¼è¿ä¸ªè¯å°ä¸ä¼ååã
å¨åéèµå¼ä¸ï¼å¯¹äº : æ = ä¹åçå符串ä¼ç«å³æ£æ¥æªå¼ç¨ç tilde-prefixã è¿ç§æåµä¸ï¼ä»ç¶ä¼è¿è¡æ³¢æµªçº¿æ©å±ãå æ- ¤ï¼å¯ä»¥ä½¿ç¨å¸¦æ³¢æµªçº¿çæä»¶åæ¥ä¸º PATH, MAILPATH, å CDPATH èµå¼ï¼shell å°èµäºæ©å±ä¹åçå¼ã
Parameter Expansion
å符 ‘$’ å¼å¥äºåæ°æ©å±ï¼å½ä»¤æ¿æ¢åç®æ¯æ©å±ãè¦æ©å±çåæ°åæç¬¦å· å¯è½åå«å¨è±æ¬å·ä¸ï¼è±æ¬å·å¯éçï¼ä½æ¯å¯ä»¥ä½¿å¾è¦æ©å±çåéä¸ä¼ä¸ç´§éå¶å çå- 符åå¹¶ï¼æä¸ºæ°çåç§°ã
使ç¨è±æ¬å·çæ¶åï¼å¹éç峿¬å·æ¯ç¬¬ä¸ä¸ª
‘}’ï¼å¹¶ä¸å®æ²¡æè¢«åææ å¼ç¨
æåå«å¨ä¸ä¸ªå¼ç¨çå符串ä¸ï¼ä¹æ²¡æåå«å¨ä¸ä¸ªåµå¥çç®æ¯æ©å±ï¼å½ä»¤æ¿æ¢
ææ¯åæ°æ©å±ä¸ã
${parameter}
è¢«æ¿æ¢ä¸º parameter çå¼ã妿 parameter æ¯ä¸ä¸ªä½ç½®åæ°ï¼å¹¶ä¸æ°åå¤äºä¸ä½æ¶ï¼æèå½ç´§é parameter ä¹åæä¸å±äºåç§°ä¸é¨åçå符æ¶ï¼é½å¿é¡»å ä¸è±æ¬å·ã
妿 parameter ç第ä¸ä¸ªå符æ¯ä¸ä¸ªæå¹å·ï¼å°å¼è¿ä¸å±é´æ¥åéã bash 使ç¨ä»¥ parameter çå¶ä½é¨å为åçåéçå¼ä½ä¸ºåéçåç§°ï¼ æ¥ä¸æ¥æ°çåé被æ©å±ï¼å®çå¼ç¨å¨éåçæ¿æ¢å½ä¸ï¼è䏿¯ä½¿ç¨ parameter èªèº«çå¼ãè¿ä¹ç§°ä¸º indirect expansion(é´æ¥æ©å±). ä¾å¤æåµæ¯ä¸é¢è®²å°ç ${!prefix*}ã
ä¸é¢çæ¯ç§æåµä¸ï¼word
é½è¦ç»è¿æ³¢æµªçº¿æ©å±ï¼åæ°æ©å±ï¼å½ä»¤æ¿æ¢å
ç®æ¯æ©å±ã妿ä¸è¿è¡åå符串æ©å±ï¼bash
æµè¯ä¸ä¸ªæ²¡æå®ä¹æå¼ä¸ºç©ºç
åæ°ï¼å¿½ç¥åå·çç»ææ¯åªæµè¯æªå®ä¹çåæ°ã
${parameter:-word}
Use Default Values(使ç¨é»è®¤å¼)ã妿 parameter æªå®ä¹æå¼ä¸ºç©ºï¼å°æ¿æ¢ä¸º word çæ©å±ãå¦åï¼å°æ¿æ¢ä¸º parameter çå¼ã
${parameter:=word}
Assign Default Values(èµé»è®¤å¼)ã妿 parameter æªå®ä¹æå¼ä¸ºç©ºï¼ word çæ©å±å°èµäº parameter. parameter çå¼å°è¢«æ¿æ¢ãä½ç½®åæ°åç¹æ®åæ°ä¸è½ç¨è¿ç§æ¹å¼èµå¼ã
${parameter:?word}
Display Error if Null or Unset(æ¾ç¤ºé误ï¼å¦ææªå®ä¹æå¼ä¸ºç©º)ã妿 parameter æªå®ä¹æå¼ä¸ºç©ºï¼word (æä¸æ¡ä¿¡æ¯ï¼å¦æ word ä¸åå¨) çæ©å±å°åå¥å°æ åé误ï¼shell 妿䏿¯äº¤äºçï¼åå°éåºãå¦åï¼ parameter çå¼å°è¢«æ¿æ¢ã
${parameter:+word}
Use Alternate Value(使ç¨å¯éå¼)ã妿 parameter æªå®ä¹æå¼ä¸ºç©ºï¼ä¸ä¼è¿è¡æ¿æ¢ï¼å¦åå°æ¿æ¢ä¸º word æ©å±åçå¼ã
${parameter:offset}
${parameter:offset:length}
Substring Expansion(åå符串æ©å±)ã æ©å±ä¸ºparameter çæå¤ length 个å符ï¼ä» offset æå®çå符å¼å§ãå¦æå¿½ç¥äº lengthï¼æ©å±ä¸º parameter çååç¬¦ä¸²ï¼ ä» offset æå®çå符串å¼å§ãlength å offset æ¯ç®æ¯è¡¨è¾¾å¼ (åè§ä¸é¢ç ARITHMETIC EVALUATION ç®æ¯æ±å¼ 段è½)ã length å¿é¡»æ¯ä¸ä¸ªå¤§äºçäº 0 çæ°å¼ã妿 offset æ±å¼ç»æå°äº 0ï¼ å¼å°å½ä½ä» parameter çå¼çæ«å°¾ç®èµ·çåç§»éã妿 parameter æ¯ @ï¼ç»ææ¯ length 个ä½ç½®åæ°ï¼ä» offset å¼å§ã 妿 parameter æ¯ä¸ä¸ªæ°ç»åï¼ä»¥ @ æ * ç´¢å¼ï¼ç»ææ¯æ°ç»ç length 个æåï¼ä» ${parameter[offset]} å¼å§ã åå符串ç䏿 æ¯ä» 0 å¼å§çï¼é¤é使ç¨ä½ç½®åæ°æ¶ï¼ä¸æ ä» 1 å¼å§ã
${!prefix*}
æ©å±ä¸ºå称以 prefix å¼å§çåéåï¼ä»¥ç¹æ®åé IFS ç第ä¸ä¸ªå符åéã
${#parameter}
æ¿æ¢ä¸º parameter çå¼çé¿åº¦ (å符æ°ç®)ã妿 parameter æ¯ * æèæ¯ @, æ¿æ¢ç弿¯ä½ç½®åæ°ç个æ°ã妿 parameter æ¯ä¸ä¸ªæ°ç»åï¼ä¸æ æ¯ * æèæ¯ @, æ¿æ¢ç弿¯æ°ç»ä¸åç´ ç个æ°ã
${parameter#word}
${parameter##word}
word 被æ©å±ä¸ºä¸ä¸ªæ¨¡å¼ï¼å°±åè·¯å¾æ©å±ä¸ä¸æ ·ã妿è¿ä¸ªæ¨¡å¼å¹é parameter çå¼çèµ·å§ï¼é£ä¹æ©å±çç»ææ¯å° parameter æ©å±åçå¼ä¸ï¼æç- çå¹é (‘‘#’’ çæåµ) æèæé¿çå¹é (‘‘##’’çæåµ) å é¤çç»æã妿 parameter æ¯ @ æèæ¯ *, 忍¡å¼å 餿ä½å°ä¾æ¬¡æ½ç¨äºæ¯ä¸ªä½ç½®åæ°ï¼æåæ©å±ä¸ºç»æçå表ã妿 parameter æ¯ä¸ä¸ªæ°ç»åéï¼ä¸æ æ¯ @ æèæ¯ *, 模å¼å é¤å°ä¾æ¬¡æ½ç¨äºæ°ç»ä¸çæ¯ä¸ªæåï¼æåæ©å±ä¸ºç»æçå表ã
${parameter%word}
${parameter%%word}
word 被æ©å±ä¸ºä¸ä¸ªæ¨¡å¼ï¼å°±åè·¯å¾æ©å±ä¸ä¸æ ·ã妿è¿ä¸ªæ¨¡å¼å¹é parameter æ©å±åçå¼çå°¾é¨ï¼é£ä¹æ©å±çç»ææ¯å° parameter æ©å±åçå¼ä¸- ï¼æççå¹é (‘‘%’’ çæåµ) æèæé¿çå¹é (‘‘%%’’çæåµ) å é¤çç»æã妿 parameter æ¯ @ æèæ¯ *, 忍¡å¼å 餿ä½å°ä¾æ¬¡æ½ç¨äºæ¯ä¸ªä½ç½®åæ°ï¼æåæ©å±ä¸ºç»æçå表ã妿 parameter æ¯ä¸ä¸ªæ°ç»åéï¼ä¸æ æ¯ @ æèæ¯ *, 模å¼å é¤å°ä¾æ¬¡æ½ç¨äºæ°ç»ä¸çæ¯ä¸ªæåï¼æåæ©å±ä¸ºç»æçå表ã
${parameter/pattern/string}
${parameter//pattern/string}
patterm 被æ©å±ä¸ºä¸ä¸ªæ¨¡å¼ï¼å°±åè·¯å¾æ©å±ä¸ä¸æ ·ãparameter 被æ©å±ï¼å¶å¼ä¸æé¿çå¹é pattern çåå®¹è¢«æ¿æ¢ä¸º stringã å¨ç¬¬ä¸ç§å½¢å¼ä¸ï¼åªæç¬¬ä¸ä¸ªå¹éè¢«æ¿æ¢ã第äºç§å½¢å¼ä½¿å¾ pattern 䏿æå¹éé½è¢«æ¿æ¢ä¸º stringã 妿 pattern 以 # å¼å§ï¼å®å¿é¡»å¹é parameter æ©å±å å¼çé¦é¨ã妿 pattern 以 % å¼å§ï¼å®å¿é¡»å¹é parameter æ©å±åå¼çå°¾é¨ã妿 string æ¯ç©ºå¼ï¼pattern çå¹éé½å°è¢«å é¤ï¼ pattern ä¹åç / å°è¢«å¿½ç¥ã妿 parameter æ¯ @ æèæ¯ *, åæ¿æ¢æä½å°ä¾æ¬¡æ½ç¨äºæ¯ä¸ªä½ç½®åæ°ï¼æåæ©å±ä¸ºç»æçå表ã妿 parameter æ¯ä¸ä¸ªæ°ç»åéï¼ä¸æ æ¯ @ æèæ¯ *, 模å¼å é¤å°ä¾æ¬¡æ½ç¨äºæ°ç»ä¸çæ¯ä¸ªæåï¼æåæ©å±ä¸ºç»æçå表ã
Command Substitution
å½ä»¤æ¿æ¢ (Command substitution) å许以å½ä»¤çè¾åºæ¿æ¢å½ä»¤åãæ ä¸¤ç§å½¢å¼ï¼
$(command)
è¿æ
‘command‘
Bash è¿è¡æ©å±çæ¥éª¤æ¯æ§è¡ commandï¼ä»¥å®çæ åè¾åºæ¿æ¢å®ï¼å¹¶ä¸å°ææåç»ç æ°è¡ç¬¦å é¤ãååµçæ°è¡ç¬¦ä¸ä¼å é¤ï¼ä½æ¯å®ä»¬å¯è½ä¼å¨è¯çæåä¸è¢«å é¤ã å½ä»¤æ¿æ¢ $(cat file) å¯ä»¥ç¨ç价使¯æ´å¿«çæ¹æ³ $(< file) 代æ¿ã
å½ä½¿ç¨æ§å¼çåå¼å· ("‘‘") æ¿æ¢å½¢å¼æ¶ï¼åææ åªæå¶å颿ä¹ï¼é¤é å颿¯ $, ‘, æèæ¯ \. 第ä¸ä¸ªå颿²¡æåææ çåå¼å·å°ç»æå½ä»¤æ¿æ¢ãå½ä½¿ç¨ $(command) 形弿¶ï¼æ¬å·ä¸ææåç¬¦ç»æäºæ´ä¸ªå½ä»¤ï¼æ²¡æè¢«ç¹æ®å¤ççå符ã
å½ä»¤æ¿æ¢å¯ä»¥åµå¥ãè¦å¨ä½¿ç¨åå¼å·å½¢å¼æ¶åµå¥ï¼å¯ä»¥ç¨åææ æ¥è½¬ä¹åå±ç åå¼å·ã
å¦ææ¿æ¢åçå¨åå¼å·ä¹ä¸ï¼ç»æå°ä¸è¿è¡è¯çæååè·¯å¾æ©å±ã
Arithmetic Expansion
ç®æ¯æ©å±åè®¸ç®æ¯è¡¨è¾¾å¼çæ±å¼åç»æçæ¿æ¢ãç®æ¯æ©å±çæ ¼å¼æ¯ï¼
$((expression))
è¡¨è¾¾å¼ expression 被è§ä¸ºå¦åå¨åå¼å·ä¹ä¸ä¸æ ·ï¼ä½æ¯æ¬å·ä¸- çåå¼å·ä¸ä¼è¢«ç¹æ®å¤çã 表达å¼ä¸ææè¯é½ç»è¿äºåæ°æ©å±ï¼å- 符串æ©å±ï¼å½ä»¤æ¿æ¢åå¼ç¨çå é¤ã ç®æ¯æ¿æ¢å¯ä»¥åµå¥ã
æ±å¼æ ¹æ®ä¸é¢ ç®æ¯æ±å¼ (ARITHMETIC EVALUATION) ç« èä¸- ååºçè§åè¿è¡ãå¦æè¡¨è¾¾å¼ expression éæ³ï¼ bash è¾åºé误æç¤ºæ¶æ¯ï¼ä¸ä¼è¿è¡æ¿æ¢ã
Process Substitution
Process substitution (è¿ç¨æ¿æ¢) åªæå¨æ¯æå½å管é (FIFOs)ï¼ æèæ¯æä½¿ç¨ /dev/fd æ¹å¼ä¸ºæå¼çæä»¶å½åçç³»ç»ä¸æå¯ç¨ã å®ç形弿¯ <(list) æèæ¯ >(list)ã è¿ç¨ list è¿è¡æ¶çè¾å¥æè¾åºè¢«è¿æ¥å°ä¸ä¸ª FIFO æè /dev/fd ä¸- çæä»¶ãæä»¶çåç§°ä½ä¸ºä¸ä¸ªåæ°è¢«ä¼ éå°å½åå½ä»¤ï¼ä½ä¸ºæ©å±çç»æã å¦æä½¿ç¨ >(list) å½¢å¼ï¼åæä»¶åå¥ç¸å½äºä¸º list æä¾è¾å¥ãå¦æä½¿ç¨ <(list) å½¢å¼ï¼å¯ä»¥è¯»ä½ä¸ºåæ°ä¼ é çæä»¶æ¥è·å¾ list çè¾åºã
妿å¯è½çè¯ï¼è¿ç¨æ¿æ¢æ¯ä¸åæ°ååéæ©å±ï¼å½ä»¤æ¿æ¢åç®æ¯æ©å±åæ¶åççã
Word Splitting
shell æ£æµä¸å¨åå¼å·å¼ç¨ä¸åççåæ°æ©å±ï¼å½ä»¤æ¿æ¢åç®æ¯æ©å±çç»æï¼ è¿è¡ word splitting(è¯çæå)ã
shell å° IFS çæ¯ä¸ªå符é½ä½ä¸ºå®çç¬¦ï¼æ ¹æ®è¿äºå- 符æ¥å°å¶ä»æ©å±çç»æåæè¯ã妿 IFS 没æå®ä¹ï¼æèå®ç弿¯é»è®¤ç <space><tab><newline>, é£ä¹ IFS å符çä»»ä½åºåé½å°ä½ä¸ºåçä¹ç¨ã妿 IFS ç弿¯é»è®¤ä¹å¤çå¼ï¼é£ä¹è¯å¼å¤´åç»å°¾ç空ç½å符 space å tab é½å°è¢«å¿½ç¥ï¼åªè¦ç©ºç½åç¬¦å¨ IFS çå¼ä¹å (å³ï¼ IFS åå«ç©ºç½å符)ã ä»»ä½å¨ IFS ä¹ä¸ä½æ¯ä¸æ¯ IFS 空ç½çå符ï¼ä»¥åä»»ä½ç¸é»ç IFS 空ç½å- 符ï¼å°å段åé弿¥ã IFS 空ç½å符çåºåä¹è¢«ä½ä¸ºåç符ã妿 IFS ç弿¯ç©ºï¼ä¸ä¼åçè¯çæåã
æ¾å¼ç»åºç空å¼åæ° ("" æ ’’) å°è¢«ä¿çã éå«ç空å¼åæ°ï¼æ¥èªäºç©ºå¼çåæ°æ©å±ï¼å¦ææ²¡æå¼ç¨åå°è¢«å é¤ã å¦æç©ºå¼çåæ°å¨åå¼å·å¼ç¨ä¸æ©å±ï¼ç»ææ¯ç©ºå¼çåæ°ï¼å°è¢«ä¿çã
注æå¦ææ²¡æåçæ©å±ï¼ä¸ä¼è¿è¡è¯çæåã
Pathname Expansion
è¯çæåä¹åï¼é¤éè®¾ç½®è¿ -f éé¡¹ï¼ bash æç´¢æ¯ä¸ªè¯ï¼å¯»æ¾å符 *, ?, å [. 妿æ¾å°äºå¶ä¸ä¹ä¸ï¼é£ä¹è¿ä¸ªè¯è¢«å½ä½ä¸ä¸ª pattern(模å¼)ï¼ è¢«æ¿æ¢ä¸ºå¹éè¿ä¸ªæ¨¡å¼çæä»¶åä»¥åæ¯é¡ºåºæåçå表ãå¦ææ²¡ææ¾å°å¹éçæä»¶åï¼ å¹¶ä¸ shell ç¦ç¨äº nullglob é项ï¼è¿ä¸ªè¯å°ä¸åçååãå¦æè®¾ç½®äº nullglob é项并䏿²¡ææ¾å°å¹éï¼è¿ä¸ªè¯å°è¢«å é¤ã妿å¯ç¨äº nocaseglob é项ï¼å¹éæ¶å°ä¸èè忝ç大å°åã彿¨¡å¼ç¨ä½è·¯å¾åæ©å±æ¶ï¼å符 ‘‘.’’ 妿å¨ä¸ä¸ªåç§°çå¼å§æèç´§éä¸ä¸ªææä¹åï¼é£ä¹å®å¿é¡»è¢«æ¾å¼å°å¹éï¼é¤éè®¾ç½®äº dotglob shell é项ãå½å¹éä¸ä¸ªè·¯å¾åæ¶ï¼ææ 符å¿é¡»è¢«æ¾å¼å°å¹éãå¶ä»æåµä¸ï¼å符 ‘‘.’’ ä¸ä¼è¢«ç¹æ®å¯¹å¾ãåè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ä¸å¯¹ shopt çä»ç»ï¼å¶ä¸æ shell é项 nocaseglob, nullglob, å dotglob çæè¿°ã
ç¯å¢åé GLOBIGNORE å¯ä»¥ç¨æ¥éå¶å¹é pattern çæä»¶åéåãå¦æè®¾ç½®äº GLOBIGNOREï¼ æ¯ä¸ªå¹éçæä»¶å妿å¹é GLOBIGNORE ä¸- ä»»ä½ä¸ä¸ªæ¨¡å¼çè¯å°ä»å¹éçå表ä¸å é¤ãæä»¶å ‘‘.’’ å ‘‘..’’ æ»æ¯è¢«å¿½ç¥ï¼å³ä½¿è®¾ç½®äº GLOBIGNOREã 使¯ï¼è®¾ç½® GLOBIGNORE åå¯ç¨ shell é项 dotglob æææ¯ç¸åçï¼å æ¤ææå¶ä»ä»¥ ‘‘.’’ å¼å¤´çæä»¶åå°è¢«å¹éãè¦å¾å°åæ¥çè¡ä¸º (å¿½ç¥ææä»¥ ‘‘.’’ å¼å¤´çæä»¶å)ï¼å¯ä»¥å° ‘‘.*’’ æ·»å 为 GLOBIGNORE çæ¨¡å¼ä¹ä¸ãé项 dotglob 被ç¦ç¨ï¼å¦æ GLOBIGNORE 没æå®ä¹æ¶ã
Pattern Matching
任使¨¡å¼ä¸åºç°çå符ï¼é¤äºä¸é¢æè¿°çç¹æ®æ¨¡å¼å符å¤ï¼é½å¹é宿¬èº«ã 模å¼ä¸ä¸è½åºç° NUL å符ã妿è¦å¹éåé¢ä¸çç¹æ®æ¨¡å¼å符ï¼å®å¿é¡»è¢«å¼ç¨ã
ç¹æ®æ¨¡å¼å符æä¸è¿°æä¹ï¼
|
* |
å¹éä»»ä½å符串åå«ç©ºä¸²ã | ||
|
? |
å¹éä»»ä½å个å符ã | ||
|
[...] |
å¹éæåå«çä»»ä½å符ä¹ä¸ãç¨ä¸ä¸ªè¿å符 (‘-’) åéçä¸å¯¹åç¬¦æææ¯ä¸ä¸ª range expression (èå´è¡¨è¾¾å¼)ï¼ ä»»ä½æå¨å®ä»¬ä¹é´çå- 符ï¼åå«å®ä»¬ï¼é½è¢«å¹éã æåºä½¿ç¨å½åè¯è¨ç¯å¢çå符顺åºåå符éã妿 [ ä¹åç第ä¸ä¸ªå符æ¯ä¸ä¸ª ! ææ¯ä¸ä¸ª ˆ é£ä¹ä»»ä½ä¸åå«å¨åçå- 符å°è¢«å¹éãèå´è¡¨è¾¾å¼ä¸å符çé¡ºåºæ¯ç±å½åè¯è¨ç¯å¢ åç¯å¢åé LC_COLLATE çå¼ (å¦æè®¾ç½®äºçè¯) å³å®çãä¸ä¸ª - åªæä½ä¸ºéåä¸- 第ä¸ä¸ªææåä¸ä¸ªåç¬¦æ¶æè½è¢«å¹éãä¸ä¸ª ] åªææ¯éåä¸ç¬¬ä¸ä¸ªå- ç¬¦æ¶æè½è¢«å¹éã |
å¨
[ å ]
ä¸ï¼character classes
(å符类)
å¯ä»¥ç¨
[:class:]
è¿æ ·çè¯æ³æ¥æå®ï¼è¿é
class æ¯å¨ POSIX.2
æ åä¸å®ä¹çä¸åç±»åä¹ä¸:
alnum alpha ascii blank cntrl digit graph lower print punct
space upper word xdigit
ä¸ä¸ªå符类å¹éä»»ä½å±äºè¿ä¸ç±»çå符ãword
å符类å¹éåæ¯ï¼æ°ååå-
符 _ã
å¨ [ å ] ä¸ï¼å¯ä»¥ç¨ [=c=] è¿æ ·çè¯æ³æ¥æå® equivalence class (ç- ä»·ç±»)ãå®å¹éä¸å符 c æç¸åå½å¹¶æå¼ (collation weightï¼ç±å½å è¯- è¨ç¯å¢å®ä¹) çå符ã
å¨ [ å ] ä¸ï¼è¯æ³ [.symbol.] å¹éå½å¹¶ç¬¦å· (collating symbol) symbolã
å¦æä½¿ç¨å建å½ä»¤ shopt å¯ç¨äº shell é项 extglobï¼ å°è¯å«å¦å¤å ç§æ¨¡å¼å¹éæä½ç¬¦ãä¸é¢çæè¿°ä¸ï¼pattern-list æ¯ä¸ä¸ª æå¤ä¸ªæ¨¡å¼ä»¥ | åéçå表ãå¤åçæ¨¡å¼å¯ä»¥ä½¿ç¨ä¸ä¸ªæå¤ä¸ªä¸åç å- æ¨¡å¼æé åºæ¥ï¼
?(pattern-list)
å¹éæç»æ¨¡å¼é¶æ¬¡æä¸æ¬¡åºç°
*(pattern-list)
å¹éæç»æ¨¡å¼é¶æ¬¡æå¤æ¬¡åºç°
+(pattern-list)
å¹éæç»æ¨¡å¼ä¸æ¬¡æå¤æ¬¡åºç°
@(pattern-list)
åç¡®å¹éæç»æ¨¡å¼ä¹ä¸
!(pattern-list)
ä»»ä½é¤äºå¹éæç»æ¨¡å¼ä¹ä¸çå串
Quote Removal
ç»è¿åé¢çæ©å±ä¹åï¼æææªå¼ç¨çå符 \, ’, 以åå¹¶éä¸è¿°æ©å±ç»æçå符 " é½è¢«å é¤ã
éå®å(REDIRECTION)
å¨å½ä»¤æ§è¡åï¼å®çè¾å¥åè¾åºå¯è½è¢« redirected (éå®å)ï¼ ä½¿ç¨ä¸ç§ shell å¯ä»¥è§£éçç¹æ®è®°æ³ãéå®åä¹å¯ä»¥ç¨äºä¸ºå½å shell æ§è¡ç¯å¢ æå¼åå³é- æä»¶ãä¸åéå®åæä½ç¬¦å¯ä»¥åç½®æèæ¾å¨ simple command (ç®åå½ä»¤) ä¹ä¸- çä»»ä½ä½ç½®ï¼æèæ¾å¨ command ä¹åãéå®åæ¯ä»¥åºç°ç顺åºè¿è¡å¤ççï¼ä»å·¦å°å³ã
ä¸åæè¿°ä¸ï¼å¦ææä»¶æè¿°ç¬¦è¢«å¿½ç¥ï¼å¹¶ä¸ç¬¬ä¸ä¸ªéå®åæä½ç¬¦æ¯ <, é£ä¹éå®åæçæ¯æ åè¾å¥ (æä»¶æè¿°ç¬¦æ¯ 0)ã妿éå®åæä½ç¬¦ç第ä¸ä¸ªåç¬¦æ¯ >, é£ä¹éå®åæçæ¯æ åè¾åº (æä»¶æè¿°ç¬¦æ¯ 1)ã
ä¸åæè¿°ä¸ï¼éå®åæä½ç¬¦ä¹åçè¯å¦ææ²¡æç¹æ®è¯´æï¼é½è¦ç»è¿ brace expansion, tilde expansion, parameter expansion, command substitution, arithmetic expansion, quote removal, pathname expansion, è¿æ word splittingã妿æ©å±ä¸ºå¤äºä¸ä¸ªè¯ï¼ bash å°æ¥éã
注æéå®åç顺åºé常éè¦ãä¾å¦ï¼å½ä»¤
ls > dirlist 2>&1
å°æ åè¾åºåæ åé误éå®åå°æä»¶ dirlist, èå½ä»¤
ls 2>&1 > dirlist
åªä¼å°æ åè¾åºéå®åå°æä»¶ dirlist, å ä¸ºå¨æ åè¾åºè¢«éå®åå°æä»¶ dirlist ä¸ä¹åï¼æ åé误被å¤å¶ä¸ºæ åè¾åºã
ä¸äºæä»¶åå¨éå®åä¸è¢« bash ç¹æ®å¤çï¼å¦ä¸è¡¨æç¤ºï¼
/dev/fd/fd
妿 fd æ¯ä¸ä¸ªåæ³çæ´æ°ï¼æä»¶æè¿°ç¬¦ fd å°è¢«å¤å¶ã
/dev/stdin
æä»¶æè¿°ç¬¦ 0 被å¤å¶ã
/dev/stdout
æä»¶æè¿°ç¬¦ 1 被å¤å¶ã
/dev/stderr
æä»¶æè¿°ç¬¦ 2 被å¤å¶ã
/dev/tcp/host/port
妿 host æ¯ä¸ä¸ªåæ³ç主æºåæ Internet å°åï¼å¹¶ä¸ port æ¯ ä¸ä¸ªæ´æ°ç«¯å£å·ææå¡åï¼bash è¯å¾å»ºç«ä¸ç¸åºç socket (奿¥å) ç TCP è¿æ¥ã
/dev/udp/host/port
妿 host æ¯ä¸ä¸ªåæ³ç主æºåæ Internet å°åï¼å¹¶ä¸ port æ¯ ä¸ä¸ªæ´æ°ç«¯å£å·ææå¡åï¼bash è¯å¾å»ºç«ä¸ç¸åºç socket (奿¥å) ç UDP è¿æ¥ã
æå¼æå建æä»¶é误å°å¯¼è´éå®ååºéã
Redirecting Input
éå®åè¾å¥ä½¿å¾ä»¥ word æ©å±ç»æä¸ºåçæä»¶è¢«æå¼å¹¶éè¿æä»¶æè¿°ç¬¦ n 读åï¼å¦ææ²¡ææå® n é£ä¹å°±ä½ä¸ºæ åè¾å¥ (æä»¶æè¿°ç¬¦ä¸º 0) 读åã
éå®åè¾å¥çä¸è¬å½¢å¼æ¯ï¼
[n]<word
Redirecting Output
éå®åè¾åºä½¿å¾ä»¥ word æ©å±ç»æä¸ºåçæä»¶è¢«æå¼å¹¶éè¿æä»¶æè¿°ç¬¦ n åå¥ï¼å¦ææ²¡ææå® n é£ä¹å°±ä½ä¸ºæ åè¾åº (æä»¶æè¿°ç¬¦ä¸º 1) åå¥ã
éå®åçä¸è¬å½¢å¼æ¯ï¼
[n]>word
妿éå®åæä½ç¬¦æ¯ >ï¼ å¹¶ä¸å¯ç¨äºå建å½ä»¤ set ç noclobber é项ï¼é£ä¹å¦æ word æ©å±åå¾å°çæä»¶ååå¨å¹¶ä¸æ¯ä¸ä¸ªæ®éçæä»¶ï¼ éå®åå°å¤±è´¥ã妿éå®åæä½ç¬¦æ¯ >|, æèéå®åæä½ç¬¦æ¯ > 并䏿²¡æå¯ç¨å建å½ä»¤ set ç noclobber é项ï¼é£ä¹å³ä½¿ word å¾åºçæä»¶ååå¨ï¼ä¹ä¼å°è¯è¿è¡éå®åã
Appending Redirected Output (æ·»å å°éå®ååçè¾åºå°¾é¨)
è¿ç§æ¹å¼çè¾åºéå®å使å¾ä»¥ word æ©å±ç»æä¸ºåçæä»¶è¢«æå¼å¹¶éè¿æä»¶æè¿°ç¬¦ n ä»å°¾é¨æ·»å ãå¦ææ²¡ææå® n å°±ä½¿ç¨æ åè¾åº (æä»¶æè¿°ç¬¦ 1)ã妿æä»¶ä¸å- å¨ï¼å®å°è¢«å建ã
éå®åçä¸è¬å½¢å¼æ¯ï¼
[n]>>word
Redirecting Standard Output and Standard Error
Bash å许使ç¨è¿ç§ç»æå°æ åè¾åºåæ åé误 (æä»¶æè¿°ç¬¦ 1 å 2) éå®åå°ä»¥ word æ©å±ç»æä¸ºåçæä»¶ä¸ã
æä¸¤ç§éå®åæ åè¾åº/æ åé误çå½¢å¼ï¼
&>word
è¿æ
>&word
两ç§å½¢å¼ä¸ï¼æ¨è使ç¨ç¬¬ä¸ç§ãå®ä¸
>word 2>&1
å¨è¯ä¹ä¸çä»·ã
Here Documents
è¿ç§éå®åä½¿å¾ shell ä»å½åæºæä»¶è¯»åè¾å¥ï¼ç´å°éå°ä»åå« word çä¸è¡ (并䏿²¡æå°¾é¨ç©ºç½ï¼trailing blanks) 为æ¢ãç´å°è¿ä¸ç¹çææè¡è¢«ç¨ä½ å½ä»¤çæ åè¾å¥ã
here-document çæ ¼å¼æ¯ï¼
<<[-]word
here-document
delimiter
ä¸ä¼å¯¹ word è¿è¡ parameter expansion, command substitution, arithmetic expansion, æè pathname expansionã妿 word ä¸ä»»ä½å符æ¯å¼ç¨çï¼ delimiter å°æ¯å¯¹ word è¿è¡å¼ç¨å é¤çç»æï¼here-document ä¸- çè¡ä¸ä¼è¢«æ©å±ã妿 word 没æè¢«å¼ç¨ï¼here-documnet ä¸çææè¡é½è¦ç»è¿ parameter expansion, command substitution, å arithmetic expansionã å¨åä¸ç§æåµä¸ï¼å符åºå \<newline> 被忽ç¥ï¼å¿é¡»ç¨ \ æ¥å¼ç¨å符 \, $, å ‘.
妿éå®åæä½ç¬¦æ¯ <<-, é£ä¹ææå导ç tab å符é½è¢«ä»è¾å¥è¡ååå« delimiter çè¡ä¸å é¤ãè¿æ ·ä½¿å¾ shell èæ¬ä¸ç here-document å¯ä»¥è¢«æ´å¥½å°ç¼©è¿ã
Here Strings
here-document çåç§ï¼å½¢å¼æ¯
<<<word
word 被æ©å±ï¼æä¾ç»å½ä»¤ä½ä¸ºæ åè¾å¥ã
Duplicating File Descriptors (å¤å¶æä»¶æè¿°ç¬¦)
éå®åæä½ç¬¦
[n]<&word
ç¨äºå¤å¶æä»¶æè¿°ç¬¦ã妿 word æ©å±ä¸ºä¸ä¸ªæå¤ä¸ªæ°åï¼ n 代表çæä»¶æè¿°ç¬¦å°æä¸ºé£ä¸ªæä»¶æè¿°ç¬¦çå¤å¶ã妿 word ä¸çæ°å- å¹¶æªæå®ä¸ä¸ªè¢«ç¨äºè¯»åçæä»¶æè¿°ç¬¦ï¼å°äº§çä¸ä¸ªéå®åé误ã妿 word æ©å±ä¸º -, æä»¶æè¿°ç¬¦ n å°è¢«å³éãå¦ææ²¡ææå® nï¼ å°ä½¿ç¨æ åè¾å¥ (æä»¶æè¿°ç¬¦ 0)ã
类似çï¼æä½ç¬¦
[n]>&word
ç¨äºå¤å¶è¾åºæä»¶æè¿°ç¬¦ãå¦ææ²¡ææå® nï¼ å°ä½¿ç¨æ åè¾åº (æä»¶æè¿°ç¬¦ 1)ã妿 word ä¸çæ°å- å¹¶æªæå®ä¸ä¸ªè¢«ç¨äºè¾åºçæä»¶æè¿°ç¬¦ï¼å°äº§çä¸ä¸ªéå®åé误ã ç¹æ®æåµä¸ï¼å¦æå¿½ç¥äº nï¼å¹¶ä¸ word å¹¶éæ©å±ä¸ºä¸ä¸ªæå¤ä¸ªæ°åï¼ æ åè¾åºåæ åé误å°è¢«éå®åï¼ååé¢æè¿°ç䏿 ·ã
Moving File Descriptors
éå®åæä½ç¬¦
[n]<&digit-
å°æä»¶æè¿°ç¬¦ digit ç§»å¨ä¸ºæä»¶æè¿°ç¬¦ n, ææ åè¾å¥ (æä»¶æè¿°ç¬¦ 0)ï¼å¦ææ²¡ææå® n çè¯ã digit å¤å¶ä¸º n ä¹å就被å³éäºã
类似çï¼éå®åæä½ç¬¦
[n]>&digit-
å°æä»¶æè¿°ç¬¦ digit ç§»å¨ä¸ºæä»¶æè¿°ç¬¦ n, ææ åè¾åº (æä»¶æè¿°ç¬¦ 1)ï¼å¦ææ²¡ææå® n çè¯ã
Opening File Descriptors for Reading and Writing
éå®åæä½ç¬¦
[n]<>word
使å¾ä»¥ word æ©å±ç»æä¸ºåçæä»¶è¢«æå¼ï¼éè¿æä»¶æè¿°ç¬¦ n è¿è¡è¯»åãå¦ææ²¡ææå® n é£ä¹å°±ä½¿ç¨æä»¶æè¿°ç¬¦ 0ã妿æä»¶ä¸å- å¨ï¼å®å°è¢«å建ã
å«å(ALIASES)
Aliases (å«åæºå¶) å许å°ä¸ä¸ªè¯æ¥æ¿æ¢ä¸ºä¸ä¸ªå符串ï¼å¦æå®æ¯ ä¸ä¸ªç®åå½ä»¤ç第ä¸ä¸ªè¯çè¯ãshell è®°å½çä¸ä¸ªå«åå表ï¼å¯ä»¥ä½¿ç¨ å建å½ä»¤ alias å unalias æ¥å®ä¹ååæ¶ (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è)ãæ¯ä¸ªå½ä»¤ç第ä¸ä¸ªè¯ï¼å¦ææ²¡æå¼ç¨ï¼é½å°è¢«æ£æ¥æ¯å¦æ¯ä¸ä¸ªå«åã 妿æ¯ï¼è¿ä¸ªè¯å°è¢«å®ææä»£çææ¬æ¿æ¢ãå«ååæ¿æ¢çææ¬å¯ä»¥åå«ä»»ä½ææ ç shell è¾å¥ï¼åå«ä¸é¢ååºç metacharacters (åå符) ï¼ç¹æ®æåµæ¯å«åä¸ä¸è½åå« =ãæ¿æ¢ææ¬ç第ä¸ä¸ªè¯ä¹è¢«æ£æ¥æ¯å¦ æ¯å«åï¼ä½æ¯å¦æå®ä¸è¢«æ¿æ¢çå«åç¸åï¼å°±ä¸ä¼åæ¿æ¢ç¬¬äºæ¬¡ãè¿æå³çå¯ä»¥ç¨ ls ä½ä¸º ls -F çå«åï¼ bash ä¸ä¼éå½å°å±å¼æ¿æ¢ææ¬ã妿å«åçæåä¸ä¸ªåç¬¦æ¯ blank, é£ä¹å½ä»¤ä¸å«åä¹åçä¸ä¸ä¸ªè¯ä¹å°è¢«æ£æ¥æ¯å¦è½è¿è¡å«åå±å¼ã
å«åå¯ä»¥ä½¿ç¨ alias å½ä»¤æ¥å建æåä¸¾åºæ¥ï¼ä½¿ç¨ unalias å½ä»¤æ¥å é¤ã
卿¿æ¢ææ¬ä¸æ²¡æåæ°æºå¶ã妿éè¦åæ°ï¼åºå½ä½¿ç¨ shell 彿° (åè§ä¸é¢ç FUNCTIONS (彿°) 段è½)ã
妿 shell 䏿¯äº¤äºçï¼å«åå°ä¸ä¼å±å¼ï¼é¤é使ç¨å建å½ä»¤ shopt è®¾ç½®äº expand_aliases é项ã
å³äºå«åçå®ä¹å使ç¨ä¸çè§åæ¯è¾æ··ä¹±ã Bash 卿§è¡ä¸è¡ä¸- çä»»ä½å½ä»¤ä¹åï¼æ»æ¯è¯»å¥è³å°å®æ´ä¸è¡çè¾å¥ã å«åå¨å½ä»¤è¢«è¯»åæ¶å±å¼ï¼è䏿¯å¨æ§è¡çæ¶åãå æ¤ï¼å«åå®ä¹å¦æ åå¦ä¸ä¸ªå½ä»¤å¨åä¸è¡ï¼é£ä¹ä¸ä¼èµ·ä½ç¨ï¼é¤é读å¥äºä¸ä¸è¡ã å«åå®ä¹ä¹åï¼åä¸è¡ä¸çå½ä»¤ä¸ä¼åæ°çå«åå½±åãè¿ç§è¡ä¸º å¨å½æ°æ§è¡æ¶å- å¨äºè®®ï¼å 为å«åæ¿æ¢æ¯å¨å½æ°å®ä¹è¢«è¯»åæ¶åççï¼ è䏿¯å½æ°è¢«æ§è¡çæ¶åï¼å ä¸ºå½æ°å®ä¹æ¬èº«æ¯ä¸ä¸ªå¤åå½ä»¤ãç»æï¼ å¨å½æ°ä¸- å®ä¹çå«ååªæå½è¿ä¸ªå½æ°æ§è¡å®æä¼çæã为äºä¿é©èµ·è§ï¼ åºå½æ»æ¯å°å«åå®ä¹æ¾å¨åç¬çä¸è¡ï¼ä¸å¨å¤åå½ä»¤ä¸ä½¿ç¨ aliasã
ä¸ç®¡ä»ä¹æåµä¸ï¼å«åé½è¢« shell 彿°è¶è¶ (be superseded)ã
彿°(FUNCTIONS)
ä¸ä¸ª shell 彿°ï¼ä»¥ä¸é¢ SHELL GRAMMAR ä¸æè¿°çæ¹æ³å®ä¹ï¼ä¿å- çä¸ç³»åçå½ä»¤ï¼çå¾ç¨åæ§è¡ã å½ shell 彿°åä½ä¸ºä¸ä¸ªç®åå½ä»¤åä½¿ç¨æ¶ï¼è¿ä¸ªå½æ°åå³èçå½ä»¤çåºå 被æ§è¡ã彿°å¨å½å shell çä¸ä¸æç¯å¢ä¸æ§è¡ï¼ä¸ä¼å建æ°çè¿ç¨æ¥ è§£éå®ä»¬ (è¿ä¸ shell èæ¬çæ§è¡å½¢æäºå¯¹æ¯)ã彿§è¡å½æ°æ¶ï¼å½æ° çåæ°æä¸ºæ§è¡è¿ç¨ä¸- çä½ç½®åæ° (positional parameters)ãç¹æ®åæ° # è¢«æ´æ°ä»¥åæ è¿ä¸ªååãä½ç½®åæ° 0 ä¸ä¼æ¹åã彿°æ§è¡æ¶ï¼ FUNCNAME åéè¢«è®¾ç½®ä¸ºå½æ°çåç§°ã彿°åå®çè°ç¨èå¨ shell æ§è¡ç¯å¢çææ å¶ä»æ¹é¢é½æ¯ä¸æ ·çï¼ç¹æ®æåµæ¯ DEBUG é·é± (åè§ä¸é¢å¯¹åå»ºå½æ° trap çæè¿°ï¼å¨ shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« èä¸) ä¸ä¼è¢«ç»§æ¿ï¼é¤é彿°è®¾ç½®äº trace 屿§ (åè§ä¸é¢å¯¹åå»ºå½æ° declare çæè¿°)ã
彿°ä¸çå±é¨åéå¯ä»¥ä½¿ç¨å建å½ä»¤ local æ¥å£°æãé常æåµä¸ï¼åéåå®ä»¬çå¼å¨å½æ°åå®çè°ç¨èä¹é´æ¯å±äº«çã
妿彿°ä¸æ§è¡äºå建å½ä»¤ returnï¼ é£ä¹å½æ°ç»æï¼æ§è¡ä»å½æ°è°ç¨ä¹åçä¸ä¸ä¸ªå½ä»¤å¼å§ã 彿°ç»æåï¼ä½ç½®åæ°çå¼ä»¥åç¹æ®åæ° # é½å°é置为å®ä»¬å¨å½æ°æ§è¡åçå¼ã
彿°ååå®ä¹å¯ä»¥ä½¿ç¨å建å½ä»¤ declare æ typeset å ä¸ -f åæ°æ¥ååºãå¦æå¨ declare æ typeset å½ä»¤ä¸ä½¿ç¨ -F é项å°åªååºå½æ°åã彿°å¯ä»¥ä½¿ç¨å建å½ä»¤ export å ä¸ -f 忰坼åºï¼ä½¿å¾å shell ä¸å®ä»¬è¢«èªå¨å®ä¹ã
彿°å¯ä»¥æ¯éå½çã对äºéå½è°ç¨çæ¬¡æ°æ²¡æç¡¬æ§éå¶ã
ç®æ¯æ±å¼("ARITHMETIC EVALUATION")
å¨ä¸å®çç¯å¢ä¸ï¼shell
å许è¿è¡ç®æ¯è¡¨è¾¾å¼çæ±å¼
(åè§å建å½ä»¤
let å Arithmetic Expansion
(ç®æ¯è¡¨è¾¾å¼))ã
æ±å¼ä½¿ç¨åºå®å®½åº¦çæ´æ°ï¼ä¸æ£æ¥æ¯å¦æº¢åºï¼ä½æ¯è¢«é¶é¤ä¼è¢«æè·ï¼æè®°ä¸ºé误ã
æä½æ°åå¶ä¼å级åèåç¨åº¦ä¸
C
è¯è¨ä¸ç¸åãä¸åæä½æ°çå表æç§ç¸å
ä¼å级çæä½æ°å¶çº§å«æ¥åç»ãååºç级å«é¡ºåºæ¯ä¼å级éåçã
id++ id--
åéèªå¢/èªå (å¨å)
++id --id
åéèªå¢/èªå (å¨å)
|
- + |
(åç®ç) åè´/忣 |
|||
|
! ˜ |
é»è¾åä½åå |
|||
|
** |
ä¹å¹ |
|||
|
* / % |
ä¹ï¼é¤ï¼åä½ |
|||
|
+ - |
å ï¼å |
|||
|
<< >> |
å·¦/å³ä½ç§» |
<= >= < >
æ¯è¾
|
== != |
ç¸ç/ä¸ç |
|||
|
& |
ä½ä¸ (AND) |
|||
|
ˆ |
ä½å¼æ (exclusive OR) |
|||
|
| |
使 (OR) |
|||
|
&& |
é»è¾ä¸ (AND) |
|||
|
|| |
é»è¾æ (OR) |
expr?expr:expr
æ¡ä»¶æ±å¼
= *= /= %= += -= <<= >>= &= ˆ= |=
èµå¼
expr1 , expr2
éå·è¡¨è¾¾å¼
shell åéå¯ä»¥ä½ä¸ºæä½æ°ï¼å¨è¡¨è¾¾å¼æ±å¼ä¹åä¼è¿è¡åæ°æ©å±ã å¨è¡¨è¾¾å¼ä¸- ï¼å¯ä»¥ç¨åç§°å¼ç¨ shell åéï¼ä¸å¿ä½¿ç¨åæ°æ©å±çè¯æ³ã åé被å¼ç¨æ¶ï¼å¶å¼è¢«ä½ä¸ºç®æ¯è¡¨è¾¾å¼æ¥æ±å¼ã shell åéç¨äºè¡¨è¾¾å¼ä¸- æ¶ï¼ä¸å¿å¯ç¨æ´æ°å±æ§ã
以 0 为å导ç常é被å½ä½å«è¿å¶æ°ï¼ä»¥ 0x æ 0X ä½ä¸ºåå¯¼è¡¨ææ¯ååè¿å¶ã å¶ä»æåµä¸ï¼æ°åç形弿¯ [base#]nï¼è¿é base æ¯ä¸ä¸ª 2 å° 64 çåè¿å¶æ°å¼ï¼ä½ä¸ºæ°åçåºæ°ï¼n æ¯å¨è¿ä¸ªåºæ°ä¸æ°åçå¼ã å¦æå¿½ç¥äº base#ï¼å°ä»¥ 10 ä¸ºåºæ°ãå¤§äº 10 çæ°å便¬¡ä»¥å°ååæ¯ï¼ å¤§å忝ï¼@ å _ 表示ã妿 base å°äºæçäº 36ï¼å¨è¡¨ç¤º 10 ä¸ 35 ä¹é´ çæ°åæ¶å°å忝å大åå- æ¯å¯ä»¥äºæ¢ã
æä½ç¬¦æ ¹æ®ä¼å级顺åºè¿è¡æ±å¼ã忬å·ä¸çå表达å¼è¢«æåæ±å¼ï¼å¯è½ä¼ è¶è¶ä¸é¢çä¼å级è§åã
æ¡ä»¶è¡¨è¾¾å¼("CONDITIONAL EXPRESSIONS")
æ¡ä»¶è¡¨è¾¾å¼ç¨äº
[[
å¤åå½ä»¤ä»¥åå建å½ä»¤
test å [ ä¸ï¼
ç¨æ¥æµè¯æä»¶å±æ§ï¼è¿è¡å-
符串åç®æ¯æ¯è¾ã表达å¼ä½¿ç¨ä¸é¢çåç®æäºè¿å¶æä½æé ã
妿ææä½çä»»ä½
file
åæ°ç形弿¯
/dev/fd/nï¼é£ä¹å°æ£æ¥
æä»¶æè¿°ç¬¦
nã妿ææä½ç
file åæ°æ¯
/dev/stdinï¼ /dev/stdout
æè /dev/stderr
ä¹ä¸ï¼å°å嫿£æ¥æä»¶æè¿°ç¬¦
0ï¼1 å 2ã
-a file
妿 file åå¨å为çã
-b file
妿 file åå¨ä¸ä¸ºå设å¤å为çã
-c file
妿 file åå¨ä¸ä¸ºå符设å¤å为çã
-d file
妿 file åå¨ä¸æ¯ä¸ä¸ªç®å½å为çã
-e file
妿 file åå¨å为çã
-f file
妿 file åå¨ä¸ä¸ºæ®éæä»¶å为çã
-g file
妿 file åå¨ä¸æ¯è®¾ç½®ç»IDç (sgid) å为çã
-h file
妿 file åå¨ä¸ä¸ºç¬¦å·é¾æ¥å为çã
-k file
妿 file åå¨ä¸è®¾ç½®äº ‘‘sticky’’ ä½ (ç²æ»ä½) å为çã
-p file
妿 file åå¨ä¸æ¯ä¸ä¸ªå½å管é (FIFO) å为çã
-r file
妿 file åå¨ä¸å¯è¯»å为çã
-s file
妿 file åå¨ä¸å¤§å°å¤§äºé¶å为çã
|
-t fd |
妿æä»¶æè¿°ç¬¦ fd æ¯æå¼çä¸å¯¹åºä¸ä¸ªç»ç«¯å为çã |
-u file
妿 file åå¨ä¸æ¯è®¾ç½®ç¨æ·IDç (suid) å为çã
-w file
妿 file åå¨ä¸å¯åå为çã
-x file
妿 file åå¨ä¸å¯æ§è¡å为çã
-O file
妿 file åå¨ä¸ä¸ºææç¨æ·IDææ¥æå为çã
-G file
妿 file åå¨ä¸ä¸ºææç»IDææ¥æå为çã
-L file
妿 file åå¨ä¸ä¸ºç¬¦å·é¾æ¥å为çã
-S file
妿 file åå¨ä¸ä¸ºå¥æ¥åå为çã
-N file
妿 file åå¨ä¸ä¸æ¬¡è¯»åå被修æ¹è¿å为çã
file1 -nt file2
妿 file1 æ¯ file2 è¦æ° (æ ¹æ®ä¿®æ¹æ¥æ)ï¼æè 妿 file1 åå¨è file2 ä¸åå¨ï¼å为çã
file1 -ot file2
妿 file1 æ¯ file2 æ´æ§ï¼æè 妿 file1 ä¸åå¨è file2 åå¨ï¼å为çã
file1 -ef file2
妿 file1 å file2 æçæ¯ç¸åç设å¤å inode å·å为çã
-o optname
妿å¯ç¨äº shell é项 optname å为çãåè§ä¸é¢å¯¹å建å½ä»¤ set ç -o é项çæè¿°ä¸çé项å表ã
-z string
妿 string çé¿åº¦ä¸º 0 å为çã
-n string
|
string |
妿 string çé¿åº¦é 0 å为çã |
string1 == string2
妿å符串ç¸çå为çã= å¯ä»¥ç¨äºä½¿ç¨ == çåºåæ¥å¼å®¹ POSIX è§èã
string1 != string2
妿å符串ä¸ç¸çå为çã
string1 < string2
妿 string1 å¨å½åè¯è¨ç¯å¢çåå¸é¡ºåºä¸æå¨ string2 ä¹åå为çã
string1 > string2
妿 string1 å¨å½åè¯è¨ç¯å¢çåå¸é¡ºåºä¸æå¨ string2 ä¹åå为çã
arg1 OP arg2
OP æ¯ -eq, -ne, -lt, -le, -gt, æ -ge ä¹ä¸ãè¿äºç®æ¯äºè¿å¶æä½è¿åçï¼å¦æ arg1 ä¸ arg2 å嫿¯ ç¸çï¼ä¸ç- ï¼å°äºï¼å°äºæçäºï¼å¤§äºï¼å¤§äºæçäºå³ç³»ã Arg1 å arg2 å¯ä»¥æ¯æ- £/è´æ´æ°ã
ç®åå½ä»¤æ©å±("SIMPLE COMMAND EXPANSION")
彿§è¡ä¸ä¸ªç®åå½ä»¤æ¶ï¼shell è¿è¡ä¸åæ©å±ï¼èµå¼åéå®åï¼ä»å·¦å°å³ã
|
1. |
è§£é卿 记为ä¸åéèµå¼ (å¨å½ä»¤åä¹åç) åéå®åæå³çè¯è¢«ä¿åçå¾éåå¤çã | ||
|
2. |
å¹¶éåéèµå¼æéå®åçè¯è¢«æ©å±ã妿æ©å±åä»ç¶æè¯ä¿ç䏿¥ï¼ç¬¬ä¸ä¸ªè¯è¢« ä½ä¸ºå½ä»¤åï¼å¶ä½è¯æ¯åæ°ã | ||
|
3. |
éå®åæç§ä¸é¢ REDIRECTION ä¸è®²å°çè§åè¿è¡ã | ||
|
4. |
æ¯ä¸ªåéèµå¼ä¸ = ä¹åçææ¬å¨èµäºåéä¹åè¦ç»è¿æ³¢æµªçº¿æ©å±ï¼ åæ°æ©å±ï¼å½ä»¤æ¿æ¢ï¼ç®æ¯æ©å±åå¼ç¨å é¤ã |
å¦ææ²¡æå¾å°å½ä»¤åï¼åéèµå¼å½±åå½å shell ç¯å¢ãå¦åï¼åé被å å¥ è¢«æ§è¡çå½ä»¤çç¯å¢ä¸ï¼ä¸å½±åå½å shell ç¯å¢ã妿任ä½èµå¼å¨ä½è¯å¾ 为åªè¯»åéèµå¼ï¼å°å¯¼è´åºéï¼å½ä»¤ä»¥éé¶ç¶æå¼éåºã
å¦ææ²¡æå¾å°å½ä»¤åï¼éå®åä»ä¼è¿è¡ï¼ä½æ¯ä¸å½±åå½å shell ç¯å¢ã éå®ååºéå°ä½¿å½ä»¤ä»¥éé¶ç¶æå¼éåºã
妿æ©å±åæå½ä»¤åä¿ç䏿¥ï¼é£ä¹æ§è¡è¿ç¨å¦ä¸æç¤ºãå¦åï¼å½ä»¤éåºã 妿å¨ä»»ä½æ©å±ä¸åå«å½ä»¤æ¿æ¢ï¼é£ä¹æ´ä¸ªå½ä»¤çéåºç¶ææ¯æåä¸ä¸ªå½ä»¤ æ¿æ¢çéåºç¶æãå¦ææ²¡æè¿è¡å½ä»¤æ¿æ¢ï¼å½ä»¤ä»¥ç¶æé¶éåºã
å½ä»¤æ§è¡(COMMAND EXECUTION)
å½ä»¤è¢«æå为è¯ä¹åï¼å¦æç»ææ¯ä¸ä¸ªç®åå½ä»¤åå¯éçåæ°å表ï¼å°æ§è¡ ä¸é¢çæä½ã
妿å½ä»¤å䏿²¡æææ ï¼shell è¯å¾å®ä½å½ä»¤ä½ç½®ã妿åå¨ååç shell 彿°ï¼å½æ°å°è¢«æ§è¡ï¼åä¸é¢ FUNCTIONS ä¸- 讲å°ç䏿 ·ã妿åç§°ä¸æ¯ä¸ä¸ªå½æ°ï¼shell ä» å建å½ä»¤ä¸æç´¢å®ã妿æ¾å° 对åºå½ä»¤ï¼å®å°è¢«æ§è¡ã
妿åç§°æ¢ä¸æ¯ shell 彿°ä¹ä¸æ¯ä¸ä¸ªå建å½ä»¤ï¼å¹¶ä¸æ²¡æå嫿æ ï¼ bash æç´¢ PATH çæ¯ä¸ªæåï¼æ¥æ¾å«ææ¤æä»¶å (坿§è¡æä»¶) çç®å½ã Bash ä½¿ç¨æ£å表æ¥å¨å坿§è¡æä»¶çå¨è·¯å¾ (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ä¸ç hashã åªæå¨æ£åè¡¨ä¸æ²¡ææ¾å°æ¤å½ä»¤ï¼æå¯¹ PATH è¿è¡å®æ´çæç´¢ã妿æç´¢ä¸æåï¼shell è¾åºéè¯¯æ¶æ¯ï¼è¿åéåºç¶æ 127ã
妿æç´¢æåï¼æèå½ä»¤ä¸åå«ä¸ä¸ªæå¤ä¸ªææ ï¼shell å¨åç¬çæ§è¡ç¯å¢ä¸ æ§è¡è¿ä¸ªç¨åºãåæ° 0 被设置为æç»åç§°ï¼å½ä»¤çå¶ä»åæ°è¢«è®¾ç½®ä¸ºæç»çåæ°ï¼ å¦ææçè¯ã
妿æ§è¡å¤±è´¥ï¼å 为æä»¶ä¸æ¯å¯æ§è¡æ ¼å¼ï¼å¹¶ä¸æ- ¤æä»¶ä¸æ¯ç®å½ï¼å°±åå®å®æ¯ ä¸ä¸ª shell script (èæ¬)ï¼ä¸ä¸ªåå« shell å½ä»¤çæä»¶ãæ¤æ¶å°åµå (spawn) åºä¸ä¸ªå shell æ¥æ§è¡å®ãå shell éæ°åå§åèªèº«ï¼ææå°±å¥½åæ¯ æ§è¡äºä¸ä¸ªæ°ç shell æ¥å¤çèæ¬ä¸æ ·ï¼ä½æ¯ç¶ shell ä¿åçå½ä»¤ä½ç½®ä»ç¶è¢« ä¿ç (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ä¸ç hash)ã
妿ç¨åºæ¯ä»¥ #! å¼å¤´çæä»¶ï¼é£ä¹ç¬¬ä¸è¡çå¶ä½é¨åæå®äºè¿ä¸ªç¨åºçè§£éå¨ã shell æ§è¡æå®çè§£éå¨ï¼å¦ææä½ç³»ç»ä¸ä¼èªè¡å¤çè¿ç§å¯æ§è¡æä»¶æ ¼å¼çè¯ã è§£éå¨çåæ°ç±ä¸é¢ä¸é¨åç»æï¼ç¨åºç¬¬ä¸è¡ä¸è§£éå¨åç§°ä¹åçå¯éçä¸ä¸ªåæ°ï¼ ç¨åºçåç§°ï¼å½ä»¤è¡åæ°ï¼å¦ææçè¯ã
å½ä»¤æ§è¡ç¯å¢(COMMAND EXECUTION ENVIRONMENT)
shell æ execution environment (æ§è¡ç¯å¢) çæ¦å¿µï¼ç±ä¸ååå®¹ç»æï¼
|
• |
shell å¯å¨æ¶ç»§æ¿çæå¼çæä»¶ï¼ä¾å¦å¨å建å½ä»¤ exec ä¸ä½¿ç¨éå®å ä¿®æ¹çç»æ | ||
|
• |
å½åå·¥ä½ç®å½ï¼ä½¿ç¨ cdï¼pushd æè popd è®¾ç½®ï¼ææ¯ç± shell å¨å¯å¨æ¶ç»§æ¿å¾å° | ||
|
• |
æä»¶åå»ºæ¨¡å¼æ©ç ï¼ä½¿ç¨ umask è®¾ç½®ææ¯ä» shell çç¶è¿ç¨ä¸- ç»§æ¿å¾å° | ||
|
• |
å½åé·é±ï¼ç¨ trap 设置 | ||
|
• |
shell åæ°ï¼ä½¿ç¨åéèµå¼æè set è®¾ç½®ï¼æèæ¯ä»ç¶è¿ç¨çç¯å¢ä¸- ç»§æ¿å¾å° | ||
|
• |
shell 彿°ï¼å¨æ§è¡ä¸å®ä¹æèæ¯ä»ç¶è¿ç¨çç¯å¢ä¸ç»§æ¿å¾å° | ||
|
• |
设为å许çé项ï¼å¨æ§è¡æ¶è®¾ç½® (è¦ä¹æ¯é»è®¤å许çï¼è¦ä¹æ¯å½ä»¤è¡ç»åºç) æèæ¯ ç¨ set 设置 | ||
|
• |
ç¨ shopt 设为å许çé项 | ||
|
• |
ç¨ alias å®ä¹ç shell å«å | ||
|
• |
åç§è¿ç¨å·ï¼åå«åå°ä½ä¸çè¿ç¨å·ï¼$$ çå¼ï¼ä»¥å $PPID çå¼ |
å½å¹¶é shell 彿°æåç½®å½ä»¤çç®åå½ä»¤æ§è¡æ¶ï¼å®å¨ä¸ä¸ªç±ä¸è¿°åå®¹ç»æç åç¬çæ§è¡ç¯å¢ä¸å¯å¨ãé¤éå¦å¤è¯´æï¼å¼é½æ¯ä» shell ä¸ç»§æ¿çã
|
• |
shell æå¼çæä»¶ï¼å ä¸å¯¹å½ä»¤ä½¿ç¨éå®åä¿®æ¹åæ·»å çæä»¶ | ||
|
• |
å½åå·¥ä½ç®å½ | ||
|
• |
æä»¶åå»ºæ¨¡å¼æ©ç | ||
|
• |
æ è®°ä¸ºå¯¼åº (export) ç shell åéï¼ä»¥åä¼ éå°ç¯å¢ä¸- 为è¿ä¸ªå½ä»¤å¯¼åºçåé | ||
|
• |
shell ææçé·é±è¢«éç½®ä¸ºä» shell çç¶è¿ç¨ä¸ç»§æ¿çå¼ï¼shell 忽ç¥çé·é± ä¹è¢«å¿½ç¥ |
å¨åç¬çç¯å¢ä¸å¯å¨çå½ä»¤ä¸è½å½±å shell çæ§è¡ç¯å¢ã
å½ä»¤æ¿æ¢å弿¥å½ä»¤é½å¨å shell ç¯å¢ä¸æ§è¡ãå shell ç¯å¢æ¯åæ shell ç¯å¢çèµå¼ï¼ä½ shell ææçé·é±è¢«é置为 shell å¯å¨æ¶ä»ç¶è¿ç¨ä¸ç»§æ¿çå¼ã ä½ä¸ºç®¡éä¸é¨åæ¥æ§è¡çå建å½ä»¤ä¹å¨ä¸ä¸ªå shell ç¯å¢ä¸æ§è¡ã对å shell ç¯å¢æä½ä¿®æ¹ä¸è½å½±åå°åæ shell çæ§è¡ç¯å¢ã
妿å½ä»¤å颿¯ & 并䏿²¡æå¯ç¨ä½ä¸æ§å¶ï¼å½ä»¤çé»è®¤æ åè¾å¥å°æ¯ç©ºæä»¶ /dev/nullãå¦åï¼è¢«æ§è¡çå½ä»¤ä»è°ç¨å®ç shell ä¸ç»§æ¿è¢«éå®åä¿®æ¹ç æä»¶æè¿°ç¬¦ã
ç¯å¢(ENVIRONMENT)
å½ä¸ä¸ªç¨åºæ§è¡æ¶ï¼å®è¢«èµäºä¸ä¸ªå符串æ°ç»ï¼æä¸ºç¯å¢ environmentã 宿¯ä¸ä¸ª åç§°-å¼å¯¹ (name-value) çå表ï¼å½¢å¼æ¯ name=value.
shell æä¾äºå¤ç§æä½ç¯å¢çæ¹æ³ãå¯å¨æ¶ï¼shell æ«æèªèº«çç¯å¢ï¼ä¸ºæ¯ä¸ªæ¾å° çååå建ä¸ä¸ªåæ°ï¼èªå¨å°å°å®æ 记为 export (åå- è¿ç¨å¯¼åºç)ã被æ§è¡çå½ä»¤ç»§æ¿äºè¿ä¸ªç¯å¢ã export å declare -x å½ä»¤åè®¸åæ°å彿°è¢«å å¥å°ç¯å¢ä¸æä»ç¯å¢ä¸å é¤ã妿ç¯å¢ä¸åæ°çå¼ è¢«ä¿®æ¹ï¼æ°å¼æä¸ºç¯å¢çä¸é¨åï¼æ¿æ¢äºæ§å¼ãææè¢«æ§è¡çå½ä»¤ç»§æ¿çç¯å¢ åå« shell çåå§ç¯å¢ (å¯è½å¼è¢«ä¿®æ¹è¿)ï¼åå»è¢« unset å½ä»¤å é¤çï¼å ä¸éè¿ export å declare -x å½ä»¤æ·»å çé¨åã
å¯ä»¥å¨ä»»ä½ simple command æå½æ°çç¯å¢ä¸- è®¾å®ææ¶ææçåæ°ï¼åªè¦å°åæ°èµå¼æ¾å¨å½ä»¤åé¢å°±å¯ä»¥äºï¼ åè§ä¸é¢ PARAMETERS çæè¿°ãè¿äºèµå¼è¯å¥åªå¨è¿ä¸ªå½ä»¤çç¯å¢ä¸ææã
å¦æè®¾ç½®äºå建å½ä»¤ set ç -k éé¡¹ï¼ ææç åéèµå¼é½å°æ¾å°å½ä»¤çç¯å¢ä¸- ï¼ä¸ä»æ¯å¨å½ä»¤ååé¢çé£äºã
å½ bash æ§è¡ä¸ä¸ªå¤é¨å½ä»¤æ¶ï¼åé _ 被设置为å½ä»¤çæä»¶å¨åï¼ç¶åè¢«ä¼ éå°å½ä»¤çç¯å¢ä¹ä¸ã
éåºç¶æ("EXIT STATUS")
ä» shell çè§åº¦çï¼ä¸ä¸ªå½ä»¤éåºç¶ææ¯ 0 æå³çæåéåºã éåºç¶ææ¯ 0 表ææåãéé¶ç¶æå¼è¡¨æå¤±è´¥ãå½å½ä»¤æ¶å° fatal signal N éåºæ¶ï¼bash ä½¿ç¨ 128+N ä½ä¸ºå®çéåºç¶æã
å¦ææ²¡ææ¾å°å½ä»¤ï¼ä¸ºæ§è¡å®èå建çåè¿ç¨è¿å 127ã妿æ¾å°äºå½ä»¤ä½æ¯ æä»¶ä¸å¯æ§è¡ï¼è¿åç¶ææ¯ 126ã
妿å½ä»¤ç±äºæ©å±æéå®åé误è失败ï¼éåºç¶æå¤§äºé¶ã
shell å建å½ä»¤å¦ææåè¿å 0(true)ï¼æ§è¡æ¶åºéåè¿åéé¶ (false)ã ææå建å½ä»¤è¿å 2 æ¥æç¤ºä¸æ£ç¡®çç¨æ³ã
Bash èªèº«è¿åæåæ§è¡çå½ä»¤çéåºç¶æï¼é¤éåçäºè¯æ³éè¯¯ï¼ è¿æ¶å®è¿åéé¶å¼ãåè§ä¸é¢çå建å½ä»¤ exitã
ä¿¡å·(SIGNALS)
妿 bash æ¯äº¤äºçï¼æ²¡æè®¾å®ä»»ä½é·é±ï¼å®å¿½ç¥ SIGTERM (è¿æ · kill 0 ä¸ä¼ææäº¤äºç shell)ã SIGINT 被æè·å¹¶å¤ç (ä»è使å建å½ä»¤ wait å¯ä»¥ä¸- æ)ã卿ææåµä¸ï¼ bash å¿½ç¥ SIGQUITã 妿æ£å¨ä½¿ç¨ä½ä¸æ§å¶ï¼ bash å¿½ç¥ SIGTTIN, SIGTTOU, å SIGTSTP.
bash å¼å§çå¹¶è¡ä½ä¸çä¿¡å·å¤ç奿é½è®¾ç½®ä¸º shell ä»ç¶è¿ç¨ä¸ç»§æ¿ çå¼ã妿䏿¯æ£å¨ä½¿ç¨ä½ä¸æ§å¶ï¼å¼æ¥å½ä»¤è¿å¿½ç¥ SIGINT å SIGQUIT ã ä½ä¸ºå½ä»¤æ¿æ¢ç»æè¿è¡çå½ä»¤å¿½ç¥é®ç产ççä½ä¸æ§å¶ä¿¡å· SIGTTIN, SIGTTOU, å SIGTSTP.
妿æ¶å°ä¿¡å· SIGHUPï¼ shell é»è®¤éåºãå¨éåºåï¼äº¤äºç shell åææä½ä¸ï¼è¿è¡çæåæ¢çï¼åé SIGHUP ä¿¡å·ãshell å忢çä½ä¸ååº SIGCONT ä¿¡å·æ¥ä¿è¯å®ä»¬ä¼æ¶å° SIGHUP. è¦é»æ¢ shell åç¹å®çä½ä¸åéä¿¡å·ï¼åºå½ä½¿ç¨å建å½ä»¤ disown å°ä½ä¸ä»ä½ä¸è¡¨ä¸å é¤ (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è) æèä½¿ç¨ disown -h æ¥æ è®°ä¸ºä¸æ¥å SIGHUPã
å¦æä½¿ç¨ shopt è®¾ç½®äº shell é项 huponexitï¼ å¨äº¤äºçç»å½ shell éåºæ¶ bash åææä½ä¸ååº SIGHUP ä¿¡å·ã
å½ bash çå¾å½ä»¤æ§è¡ç»ææ¶ï¼å¦ææ¶å°å·²è®¾ç½®äºé·é±çä¿¡å·ï¼é·é± (trap) å°ä¸ä¼æ§è¡ï¼ç´å°å½ä»¤ç»æã å½ bash éè¿å建å½ä»¤ wait çå¾å¼æ- ¥å½ä»¤æ¶ï¼å¦ææ¶å°å·²è®¾ç½® äºé·é±çä¿¡å·ï¼å°ä½¿å¾å建å½ä»¤ wait ç«å³ä»¥å¤§äº 128 çç¶æå¼è¿åã æ¥çï¼é·é±å°ç«å³è¢«æ§è¡ã
ä½ä¸æ§å¶("JOB CONTROL")
Job control (ä½ä¸æ§å¶) æçæ¯å¯ä»¥éæ©åæ¢ (suspendï¼æèµ·) è¿ç¨æ§è¡ï¼å¹¶ä¸ å¯ä»¥å¨ä¹åç»§ç» (resumeï¼æ¢å¤) æ§è¡çè½åãç¨æ·ä¸è¬å¨äº¤äºç人æºçé¢ ä¸- 使ç¨è¿ç§åè½ãç颿¯ç±ç³»ç»çç»ç«¯é©±å¨å bash å±åæä¾çã
shell å°æ¯ä¸ªç®¡éåéç»ä¸ä¸ª ä½ä¸(job)ã å®ä¿å- ä¸ä¸ªå½åè¿è¡çä½ä¸è¡¨ï¼å¯ä»¥ç¨ jobs å½ä»¤æ¥ååºãå½ bash å¯å¨ä¸ä¸ªå¼æ- ¥çä½ä¸æ¶ (backgroundï¼åå°æ§è¡)ï¼ å®è¾åºè¿æ ·çä¸è¡ï¼
[1] 25647
表æè¿ä¸ªä½ä¸çä½ä¸å·æ¯ 1ï¼ä¸ä½ä¸ç¸å³è¿ç管é䏿åä¸ä¸ªè¿ç¨ç è¿ç¨IDæ¯ 15647ã管é䏿æè¿ç¨é½æ¯åä¸ä¸ªä½ä¸çæåã Bash ä½¿ç¨ ä½ä¸(job) æ¦å¿µä½ä¸ºä½ä¸æ§å¶çåºç¡ã
为ç®åä½ä¸æ§å¶çç¨æ·çé¢çå®ç°ï¼æä½ç³»ç»è´è´£ç®¡ç“å½åç»ç«¯çè¿ç¨ç»” (current terminal process group ID) çæ¦å¿µãè¿ä¸ªè¿ç¨ç»çæå (è¿ç¨ç» ID æ¯å½åç»ç«¯è¿ç¨ç» ID çè¿ç¨) å¯ä»¥æ¶å°é®ç产ççä¿¡å·ï¼ä¾å¦ SIGINT. è¿äºè¿ç¨è¢«ç§°ä¸º foreground(åå°ç)ã Background (åå°ç) è¿ç¨æ¯é£äºè¿ç¨ç» ID ä¸ç»ç«¯ä¸åçè¿ç¨ï¼è¿äºè¿ç¨ä¸ä¼æ¶å°é®ç产ççä¿¡å·ã åªæåå°è¿ç¨å¯ä»¥ä»ç»ç«¯è¯»æåç»ç«¯åãåå°è¿ç¨è¯å¾è¯»/åç»ç«¯æ¶ï¼å°æ¶å°ç»ç«¯é©±å¨ç¨åºåéç SIGTTIN (SIGTTOU) ä¿¡å·ãè¿ä¸ªä¿¡å·å¦ææ²¡æå 以ææï¼å°æèµ·è¿ä¸ªè¿ç¨ã
妿 bash è¿è¡å¶ä¸çæä½ç³»ç»æ¯æä½ä¸æ§å¶ï¼ bash ä¼åå«ä½¿ç¨å®ç设æ½ãå¨ä¸ä¸ªè¿ç¨æ£å¨è¿è¡çæ¶åé®å¥ suspend æèµ· å符 (éå¸¸æ¯ ˆZ, Control-Z) å°ä½¿è¿ä¸ªè¿ç¨æåï¼å°æ§å¶æè¿ç» bash. è¾å¥ delayed suspend , å»¶æ¶æèµ· å符 (éå¸¸æ¯ ˆY, Control-Y) å°ä½¿è¿ä¸ªè¿ç¨å¨è¯å¾ä»ç»ç«¯è¯»åè¾å¥æ¶æåï¼å°æ§å¶æè¿ç» bash. ç¨æ·æ¥ä¸æ¥å¯ä»¥æ§å¶æ¤ä½ä¸çç¶æï¼ä½¿ç¨ bg å½ä»¤ä½¿å®å¨åå°ç»§ç»è¿è¡ï¼ fg å½ä»¤ä½¿å®å¨åå°ç»§ç»è¿è¡ï¼æ kill å½ä»¤å°å®ææ»ãˆZ ä¼ç«å³èµ·ä½ç¨ï¼å¹¶ä¸è¿æä½¿çå¾ä¸ç (pending) è¾åºåè¾å¥è¢«å¿½ç¥çéå å¯ä½ç¨ã
æå¾å¤æ¹æ³æ¥æä»£ shell ä¸çä½ä¸ãå符 % å¯ä»¥å¼å¥ä½ä¸åãç¼å·ä¸º n çä½ä¸å¯ä»¥ç¨ %n ç形弿¥æä»£ãä½ä¸ä¹å¯ä»¥ç¨å¯å¨å®çåç§°çåç¼ï¼æèå½ä»¤è¡ä¸- çååç¬¦ä¸²æ¥æä»£ãä¾å¦ï¼ %ce æä»£ä¸ä¸ªæåç ce ä½ä¸ã妿åç¼å¹éå¤äºä¸ä¸ªä½ä¸ï¼ bash æ¥éãå¦ä¸æ¹é¢ï¼ä½¿ç¨ %?ce, å¯ä»¥æä»£ä»»ä½å½ä»¤è¡ä¸åå«å符串 ce çä½ä¸ã妿åå- 符串å¹éå¤äºä¸ä¸ªä½ä¸ï¼ bash æ¥éãç¬¦å· %% å %+ æä»£ shell æä¹ä¸ç current jobï¼å½åä½ä¸ï¼ ä¹å°±æ¯åå°è¢«æåçæåä¸ä¸ªä½ä¸ï¼æèæ¯å¨åå°å¯å¨çä½ä¸ã previous job ï¼åä¸ä½ä¸ å¯ä»¥ä½¿ç¨ %- æ¥æä»£ã卿å³ä½ä¸çè¾åºä¿¡æ¯ä¸ (ä¾å¦ï¼å½ä»¤ jobs çè¾åº)ï¼å½åä½ä¸æ»æ¯è¢«æ 记为 +, åä¸ä½ä¸æ 记为 -.
ç®åå°ç»åºä½ä¸åï¼å¯ä»¥ç¨æ¥æå®æ¾å°åå°ï¼ %1 æ¯ ‘‘fg %1’’ çåä¹è¯ï¼å°ä½ä¸ 1 ä»åå°æ¾å°åå°ã类似çï¼ ‘‘%1 &’’ å¨åå°æ¢å¤ä½ä¸ 1ï¼ä¸ ‘‘bg %1’’ çä»·ã
å½æä¸ªä½ä¸æ¹åç¶ææ¶ï¼shell ç«å³å¯ä»¥å¾ç¥ãéå¸¸ï¼ bash ç- å¾ç´å°è¦è¾åºä¸ä¸ªæç¤ºç¬¦æ¶ï¼æä¼æ¥åä½ä¸çç¶æååï¼ä»èä¸ä¼ææå¶ä»è¾åºã 妿å¯ç¨äºå建å½ä»¤ set ç -b éé¡¹ï¼ bash å°ç«å³æ¥åè¿äºååã对 SIGCHLD ä¿¡å·çé·é±å°å¨æ¯ä¸ªåè¿ç¨éåºæ¶æ§è¡ã
妿å¨ä½ä¸æåæ¶è¯å¾éåº bashï¼ shell æå°ä¸æ¡è¦åæ¶æ¯ãå½ä»¤ jobs å¯è½è¢«ç¨æ¥æ£æ¥ä½ä¸çç¶æã妿忬¡è¯å¾éåºï¼ä¸é´æ²¡æå¶ä»å½ä»¤ï¼shell ä¸ä¼æå° å¶ä»è¦åï¼æåçä½ä¸å°ç»æ¢ã
æç¤ºç¬¦(PROMPTING)
å¨äº¤äºæ§è¡æ¶ï¼ bash å¨åå¤å¥½è¯»å¥ä¸æ¡å½ä»¤æ¶æ¾ç¤ºä¸»æç¤ºç¬¦ PS1ï¼ å¨éè¦æ´å¤çè¾å¥æ¥å®æä¸æ¡å½ä»¤æ¶æ¾ç¤º PS2ã Bash å许éè¿æå¥ä¸äºåææ è½¬ä¹çç¹æ®å符æ¥å®å¶è¿äºæç¤ºå符串ï¼è¿äºå- 符被å¦ä¸è§£éï¼
|
\a |
ä¸ä¸ª ASCII åéå符 (07) |
|||
|
\d |
æ¥æï¼æ ¼å¼æ¯ "ææ æä»½ æ¥" (ä¾å¦ï¼"Tue May 26") |
\D{format}
format è¢«ä¼ éç» strftime(3)ï¼ç»æè¢«æå¥å°æç¤ºå符串ä¸ï¼ 空ç format å°ä½¿ç¨è¯è¨ç¯å¢ç¹å®çæ¶é´æ ¼å¼ãè±æ¬å·æ¯å¿éç
|
\e |
ä¸ä¸ª ASCII 转ä¹å符 (033) |
|||
|
\h |
主æºåï¼ç¬¬ä¸ä¸ª ‘.’ ä¹åçé¨å |
|||
|
\H |
主æºå |
|||
|
\j |
shell å½å管ççä½ä¸æ°é |
|||
|
\l |
shell çç»ç«¯è®¾å¤åçåºæ¬é¨å |
|||
|
\n |
æ°è¡ç¬¦ |
|||
|
\r |
å车 |
|||
|
\s |
shell çåç§°ï¼ $0 çåºæ¬é¨å (æåä¸ä¸ªææ åé¢çé¨å) |
|||
|
\t |
å½åæ¶é´ï¼éç¨ 24å°æ¶å¶ç HH:MM:SS æ ¼å¼ |
|||
|
\T |
å½åæ¶é´ï¼éç¨ 12å°æ¶å¶ç HH:MM:SS æ ¼å¼ |
|||
|
\@ |
å½åæ¶é´ï¼éç¨ 12å°æ¶å¶ä¸å/ä¸å (am/pm) æ ¼å¼ |
|||
|
\A |
å½åæ¶é´ï¼éç¨ 24å°æ¶å¶ä¸å/ä¸åæ ¼å¼ |
|||
|
\u |
å½åç¨æ·çç¨æ·å the username of the current user |
|||
|
\v |
bash ççæ¬ (ä¾å¦ï¼2.00) |
|||
|
\V |
bash çåè¡ç¼å·ï¼çæ¬å·å è¡¥ä¸çº§å« (ä¾å¦ï¼2.00.0) |
|||
|
\w |
å½åå·¥ä½ç®å½ |
|||
|
\W |
å½åå·¥ä½ç®å½çåºæ¬é¨å |
|||
|
\! |
æ¤å½ä»¤çåå²ç¼å· |
|||
|
\# |
æ¤å½ä»¤çå½ä»¤ç¼å· |
|||
|
\$ |
å¦æææ UID æ¯ 0ï¼å°±æ¯ #, å¶ä»æåµä¸æ¯ $ |
|||
|
\nnn |
对åºå«è¿å¶æ° nnn çå符 |
|||
|
\\ |
ä¸ä¸ªåææ |
|||
|
\[ |
ä¸ä¸ªä¸å¯æå°å符åºåçå¼å§ï¼å¯ä»¥ç¨äºå¨æç¤ºç¬¦ä¸- åµå¥ç»ç«¯æ§å¶åºå |
|||
|
\] |
ä¸ä¸ªä¸å¯æå°å符åºåçç»æ |
å½ä»¤ç¼å·ååå²ç¼å·é常æ¯ä¸åçï¼åå²ç¼å·æ¯å½ä»¤å¨åå²å表ä¸çä½ç½®ï¼å¯è½ åå«ä»å岿件䏿¢å¤çå½ä»¤ (åè§ä¸é¢ç HISTORY åå² ç« è)ï¼èå½ä»¤ç¼å·æ¯å½å shell ä¼è¯ä¸æ§è¡çå½ä»¤åºåä¸ï¼å½ä»¤çä½ç½®ã å- 符串被解ç ä¹åï¼å®å°è¿è¡æ©å±ï¼è¦ç»è¿ parameter expansion, command substitution, arithmetic expansion å quote removal, æåè¦ç»è¿ shell é项 promptvars å¤ç (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« èä¸ï¼å¯¹å½ä»¤ shopt çæè¿°)ã
readlineåº(READLINE)
è¿æ¯å¨äº¤äº shell ä¸å¤ç读åè¾å¥çåºï¼é¤éå¨ shell å¯å¨æ¶ç»åºäº --noediting é项ãé»è®¤æåµä¸ï¼è¡ç¼è¾å½ä»¤ç±»ä¼¼äº emacs ä¸- çé£äºãä¹å¯ä»¥ä½¿ç¨ vi æ ·å¼çè¡ç¼è¾çé¢ã è¦å¨ shell è¿è¡ä¹åå³é- è¡ç¼è¾ï¼ä½¿ç¨åç½®å½ä»¤ set ç +o emacs æ +o vi é项 (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è)ã
Readline Notation
å¨è¿ä¸ªå°èä¸ï¼å°ä½¿ç¨ emacs æ ·å¼çè®°æ³æ¥è¡¨è¿°æé®ãCtrl é®è®°ä¸º C-keyï¼ ä¾å¦ï¼C-n æææ¯ Ctrl-Nã类似çï¼ meta é®è®°ä¸º M-keyï¼å æ¤ M-x æå³ç Meta-xã(卿²¡æ meta é®çé®çä¸ï¼M-x æææ¯ ESC-xï¼ä¹å°±æ¯è¯´ï¼æä¸ Esc é®ï¼ç¶åæ x é®ãè¿ä½¿å¾ Esc æä¸º meta prefixãM-C-x çç»åæææ¯ Esc-Ctrl-xï¼ ä¹å°±æ¯æ Esc é®ï¼ç¶åæä½ Ctrl é®ï¼åæ¶æ x é®ã)
readline å½ä»¤å¯ä»¥ææ°åç åæ°(arguments)ï¼ ä¸è¬ä½ä¸ºéå¤ç计æ°ãæäºæ¶åï¼å®æ¯éè¦åæ°çæ è®°ãç»ååæ¹è¿è¡çå½ä»¤ (ä¾å¦ï¼kill-line) ä¼ éè´æ°åæ°ï¼å°ä½¿å¾å½ä»¤ååæ¹åè¿è¡ã ä¸é¢çå½ä»¤å¦ææ¥ååæ°æ¶çè¡ä¸ºä¸æ¤ä¸åï¼å°å¦è¡è¯´æã
å½å½ä»¤è¢«æè¿°ä¸ºåªå (killing) ææ¬æ¶ï¼è¢«å é¤çææ¬è¢«ä¿åï¼çå¾å°æ¥ä½¿ç¨ (ç²è´´ï¼yanking)ã被åªåçææ¬ä¿åå¨ kill ring ä¸ãè¿ç»çåªåä½¿å¾ ææ¬è¢«ä¾æ¬¡å å¥å°ä¸ä¸ªååä¸ï¼å¯ä»¥ä¸æ¬¡è¢«ç²è´´ãä¸åªåææ¬çå½ä»¤å° kill ring ä¸çææ¬å离ã
Readline Initialization åå§å
readline å¯ä»¥éè¿å°å½ä»¤æ¾å¥åå§åæä»¶ (inputrc æä»¶) æ¥å®å¶ã æä»¶åä»åé INPUTRC çå¼ä¸è·åãå¦ææ²¡æè®¾ç½®è¿ä¸ªåéï¼é»è®¤æ¯ ˜/.inputrc. å½ä½¿ç¨ readline åºçç¨åºå¯å¨æ¶ï¼å°è¯»ååå§åæä»¶ï¼æé®å³èååéå°è¢«è®¾ç½®ã readline åå§åæä»¶ä¸åªå许æå¾å°çåºæ¬æé ã 空è¡è¢«å¿½ç¥ã以 # å¼å§çè¡æ¯æ³¨éã以 $ å¼å§çè¡æç¤ºäºææ¡ä»¶çæé ã å¶ä»è¡è¡¨ç¤ºæé®å³èååé设置ã
é»è®¤çæé®å³èå¯ä»¥ä½¿ç¨ inputrc æä»¶æ¹åãå¶ä»ä½¿ç¨è¿ä¸ªåºçç¨åºå¯ä»¥æ·»å å®ä»¬èªå·±çå½ä»¤åå³èã
ä¾å¦ï¼å°
M-Control-u: universal-argument
æ
C-Meta-u: universal-argument
æ¾å¥ inputrc å°ä½¿å¾ M-C-u æ§è¡ readline å½ä»¤ universal-argument.
å¯ä»¥è¯å«ä¸åå符ç符å·åç§°ï¼ RUBOUT, DEL, ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACE, å TAB.
å¨å½ä»¤åä¹å¤ï¼readline åè®¸å°æé®ä¸ä¸ä¸ªå- 符串å³èï¼å½æä¸è¿ä¸ªé®æ¶ï¼å°æå¥è¿ä¸ªå符串 (ä¸ä¸ªå®ï¼macro)ã
Readline Key Bindings
inputrc æä»¶ä¸çæ§å¶æé®å³èçè¯- æ³é常ç®åãéè¦çå容æ¯å½ä»¤åæå®ï¼ä»¥åå®åºå½å³èå°çæé®åºåã åç§°å¯ä»¥ä»¥ä¸¤ç§æ¹å¼æå®ï¼ä¸ä¸ªæé®ç符å·åç§°ï¼å¯è½å¸¦æ Meta- æ Control- åç¼ï¼æèæ¯ä¸ä¸ªæé®åºåã
å½ä½¿ç¨ keyname:function-name æ macro 形弿¶ï¼ keyname æ¯æé®ä»¥è±ææ¼åçåç§°ãä¾å¦ï¼
Control-u:
universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
å¨ä¸è¿°ä¾åä¸ï¼ C-u 被å³èå°å½æ° universal-argument, M-DEL 被å³èå°å½æ° backward-kill-word, è C-o 被å³è为è¿è¡å³è¾¹ç»åºçå® (æææ¯ï¼å°åè¡ä¸æå¥ ‘‘> output’’ )ã
å¨ç¬¬äºç§å½¢å¼ä¸ï¼"keyseq":function-name æ macroï¼ keyseq ä¸åäºä¸é¢ç keynameï¼ è¡¨ç¤ºæ´ä¸ªæé®åºåçå符串å¯ä»¥éè¿å°æé®åºåæ¾å¨åå¼å·å¼ç¨ä¸- æ¥æå®ã å¯ä»¥ä½¿ç¨ä¸äº GNU Emacs æ ·å¼çæé®åºåï¼å¦ä¸ä¾æç¤ºï¼ä½æ¯ä¸ä¼è¯å«æé®ç符å·åç§°ã
"\C-u":
universal-argument
"\C-x\C-r": re-read-init-file
"\e[11˜": "Function Key 1"
å¨ä¸è¿°ä¾åä¸ï¼ C-u 被å䏿¬¡å³èå°å½æ° universal-argument. C-x C-r 被å³èå°å½æ° re-read-init-file, è ESC [ 1 1 ˜ 被å³è为æå¥ææ¬ ‘‘Function Key 1’’.
GNU Emacs æ ·å¼ç转ä¹åºåçå¨é为ï¼
|
\C- |
Ctrl åç¼ |
|||
|
\M- |
Meta åç¼ |
|||
|
\e |
ä¸ä¸ª Esc å符 |
|||
|
\\ |
åææ |
|||
|
\" |
åé¢ä¸ç " |
|||
|
\’ |
åé¢ä¸ç ’ |
é¤äº GNU Emacs æ ·å¼ç转ä¹åºåï¼è¿æä¸ç³»ååææ 转ä¹åºåå¯ç¨ï¼
|
\a |
åé | ||
|
\b |
åé | ||
|
\d |
å é¤ | ||
|
\f |
è¿çº¸ | ||
|
\n |
æ°è¡ç¬¦ | ||
|
\r |
å车 | ||
|
\t |
æ°´å¹³è·³æ ¼ | ||
|
\v |
ç«ç´è·³æ ¼ | ||
|
\nnn |
ä¸ä¸ªå«æ¯ç¹å符ï¼å®ç弿¯å«è¿å¶å¼ nnn (ä¸å°ä¸ä¸ªå«è¿å¶æ°å- )ã | ||
|
\xHH |
ä¸ä¸ªå«æ¯ç¹å符ï¼å®ç弿¯ååè¿å¶å¼ HH (ä¸å°ä¸¤ä¸ªååè¿å¶æ°å- )ã |
è¾å¥å®çææ¬æ¶ï¼å¿é¡»ä½¿ç¨åå¼å·æåå¼å·å¼ç¨æ¥è¡¨ææ¯å®çå®ä¹ã 没æå¼ç¨çææ¬è¢«å½ä½å½æ°åãå¨å®çå®ä¹ä½ä¸ï¼ä¸è¿°åææ è½¬ä¹è¢«æ©å±ã åææ å°å¼ç¨å®ææ¬ä¸ææå¶ä»å符ï¼åæ¬ " å ’ã
Bash å许使ç¨å建å½ä»¤ bind æ¥æ¾ç¤ºåä¿®æ¹å½å readline æé®å³èãå¨äº¤äºä½¿ç¨ä¸å¯ä»¥ç¨å建å½ä»¤ set ç -o é项忢å°ç¼è¾æ¨¡å¼ (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è)ã
Readline Variables
readline åå«é¢å¤çå¯ç¨äºå®å¶å®çè¡ä¸ºçåéãå¯ä»¥å¨ inputrc æä»¶ä¸- 设置åéï¼ä½¿ç¨å¦ä¸å½¢å¼çè¯å¥ï¼
set variable-name value
é¤éå¦å¤è¯´æï¼readline
åéç弿»æ¯
On æ Offã
åéåå®ä»¬çé»è®¤å¼æ¯ï¼
bell-style (audible)
æ§å¶äºå½ readline éè¦é¸£ç»ç«¯åéæ¶çå¨ä½ãå¦æè®¾ç½®ä¸º noneï¼ readline ä¸ä¼é¸£éãå¦æè®¾ç½®ä¸º visibleï¼readline 使ç¨å¯è§çåéï¼å¦æå¯ç¨çè¯ã å¦æè®¾ç½®ä¸º audibleï¼readline è¯ç鸣ç»ç«¯åéã
comment-begin (‘‘#’’)
è¿ä¸ªåç¬¦ä¸²å¨æ§è¡ readline å½ä»¤ insert-comment æ¶è¢«æå¥ãè¿ä¸ªå½ä»¤å¨ emacs 模å¼ä¸è¢«å³è为 M-#ï¼ å¨ vi 模å¼ä¸æ¯ #ã
completion-ignore-case (Off)
å¦æè®¾ç½®ä¸º Onï¼readline è¿è¡å¤§å°å䏿æçæä»¶åå¹éåè¡¥å¨ã
completion-query-items (100)
è¿ä¸ªåéå³å®ç使¶åç¨æ·è¯¢é®ï¼æ¯å¦æ¥çç±å½ä»¤ possible-completions 产ççå¯è½çè¡¥å¨æ°éã å®å¯ä»¥è®¾ä¸ºä»»ä½å¤§äºæçäº 0 çå¼ã妿å¯è½çè¡¥å¨æ°éå¤§äºæçäºè¿ä¸ªåéçå¼ï¼ ç¨æ·å°è¢«æç¤ºæ¯å¦æ¿ææ¥çå®ä»¬ï¼å¦åå°ç´æ¥å¨ç»ç«¯ä¸ååºå®ä»¬ã
convert-meta (On)
å¦æè®¾ç½®ä¸º Onï¼readline å°æè®¾ç½®äºæé«ä½çå符转æ¢ä¸º ASCII æé®åºåï¼æ¹æ³æ¯ å»æç¬¬å«ä½ï¼åç¼ä¸ä¸ªè½¬ä¹å符 (å®éä¸ï¼ä½¿ç¨ Esc ä½ä¸ºè½¬ä¹ç¬¦ meta prefix)ã
disable-completion (Off)
å¦æè®¾ç½®ä¸º Onï¼readline å°ç¦æ¢è¯çè¡¥å¨ãè¡¥å¨å- 符å°è¢«æå¥å°è¡ä¸ï¼å°±å¥½åå®ä»¬è¢« æ å°ä¸º self-insertã
editing-mode (emacs)
æ§å¶ readline çæé®å³èéåä¸ emacs è¿æ¯ vi ç¸ä¼¼ã editing-mode å¯ä»¥è®¾ç½®ä¸º emacs æ viã
enable-keypad (Off)
å¦æè®¾ç½®ä¸º On ï¼readline å¨è°ç¨æ¶å°è¯å¾å¯ç¨è¾å©é®çã ä¸äºç³»ç»éè¦è®¾ç½®è¿ä¸ªæ¥å¯ç¨æ¹åé®ã
expand-tilde (Off)
å¦æè®¾ç½®ä¸º Onï¼readline è¯å¾è¿è¡è¯çè¡¥å¨æ¶ä¼è¿è¡æ³¢æµªçº¿æ©å±ã
history-preserve-point
å¦æè®¾ç½®ä¸º Onï¼åå²ä»£ç è¯çå¨ previous-history æ next-history ååçæ¯ä¸ªåå²è¡çç¸åä½ç½®ä¸å ç¹ã
horizontal-scroll-mode (Off)
å¦æè®¾ç½®ä¸º Onï¼å°ä½¿å¾ readline 使ç¨åè¡æ¥æ¾ç¤ºï¼å¦æå®æ¯å±å¹å®½åº¦è¦é¿ï¼å°±å¨ åä¸çå±å¹è¡ä¸æ°´å¹³æ»å¨è¾å¥è¡ï¼è䏿¯èªå¨åç»å°æ°è¡ã
input-meta (Off)
å¦æè®¾ç½®ä¸º Onï¼readline å°åè®¸å«æ¯ç¹è¾å¥ (ä¹å°±æ¯è¯´ï¼å®ä¸ä¼å°å®è¯»å¥çåç¬¦ä¸æé«ä½å é¤)ï¼ ä¸ç®¡å®è½æ¯æä»ä¹æ ·çç»ç«¯è¦æ±ãåç§° meta-flag 䏿¤åéåä¹ã
isearch-terminators (‘‘C-[C-J’’)
ç¨äºç»æ¢å¢éçæç´¢ï¼ä¸åå°å符å½ä½å½ä»¤æ§è¡çå符串ã 妿è¿ä¸ªåéæ²¡æèµå¼ï¼å符串 Esc å C-J å°ç»æ¢å¢éçæç´¢ã
keymap (emacs)
设置å½å readline é®çæ å°ãææçé®çæ å°åç§°æ¯ emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-commandï¼è¿æ vi-insertã vi çä»·äº vi-command; emacs çä»·äº emacs-standardãé»è®¤å¼æ¯ emacs; editing-mode çå¼ä¹ä¼å½±åé»è®¤çé®çæ å°ã
mark-directories (On)
å¦æè®¾ç½®ä¸º Onï¼è¡¥å¨çç®å½å伿·»å ä¸ä¸ªææ ã
mark-modified-lines (Off)
å¦æè®¾ç½®ä¸º Onï¼å·²è¢«ä¿®æ¹çåå²è¡å°æ¾ç¤ºä¸ºåç¼ä¸ä¸ªæå· (*)ã
mark-symlinked-directories (Off)
å¦æè®¾ç½®ä¸º Onï¼è¡¥å¨çåç§°å¦ææ¯å°ç®å½ç符å·é¾æ¥ï¼åå°æ·»å ä¸ä¸ªææ (ä¸ mark-directories çå¼åæ ·å¤ç)ã
match-hidden-files (On)
è¿ä¸ªåéï¼å¦æè®¾ç½®ä¸º Onï¼å°ä½¿å¾ readline å¨è¿è¡æä»¶åè¡¥å¨æ¶ï¼å¹é以 ‘.’ å¼å¤´çæä»¶ (éèæä»¶)ï¼ é¤éç¨æ·å¨è¦è¡¥å¨çæä»¶åä¸ç»åºäºåå¯¼ç ‘.’ã
output-meta (Off)
å¦æè®¾ç½®ä¸º Onï¼readline å°ç´æ¥æ¾ç¤ºè®¾ç½®äºç¬¬å«ä½çå- 符ï¼è䏿¯è½¬å为ä¸ä¸ªå¸¦ meta åç¼ç转ä¹åºåã
page-completions (On)
å¦æè®¾ç½®ä¸º Onï¼readline å°ä½¿ç¨å建ç类似 more çå页ç¨åºï¼ æ¥æ¯æ¬¡æ¾ç¤ºä¸å±å¯è½çè¡¥å¨ã
print-completions-horizontally (Off)
å¦æè®¾ç½®ä¸º Onï¼readline å°å¹éçè¡¥å¨æå- æ¯è¡¨é¡ºåºæåºï¼ç¶åæ°´å¹³æåæ¾ç¤ºåºæ¥ï¼ è䏿¯å¨å±å¹ä¸ç«ç´æåæ¾ç¤ºã
show-all-if-ambiguous (Off)
è¿å°è°æ´è¡¥å¨å½æ°çé»è®¤è¡ä¸ºãå¦æè®¾ç½®ä¸º on, æ¥æå¤äºä¸ä¸ªå¯è½çè¡¥å¨çè¯å°ç«å³ååºææå¹éï¼è䏿¯é¸£åéã
visible-stats (Off)
å¦æè®¾ç½®ä¸º Onï¼å¨ååºå¯è½çè¡¥å¨æ¶ï¼å°å¨æä»¶åå颿·»å ä¸ä¸ªè¡¨ç¤ºæä»¶ç±»åçå- ç¬¦ï¼ æä»¶ç±»åç± stat(2) æ¥åã
Readline Conditional Constructs
readline å®ç°äºä¸ç§åè½ï¼æ¬è´¨ä¸ä¸ C é¢å¤çå¨è¿è¡æ¡ä»¶ç¼è¯çåè½ç±»ä¼¼ï¼ åè®¸æ ¹æ®æµè¯çç»æè¿è¡é®çå³èååé设置ãå¶ä¸ä½¿ç¨äºåç§è§£é卿令ã
|
$if |
$if ç»æåè®¸æ ¹æ®ç¼è¾æ¨¡å¼ï¼æ£å¨ä½¿ç¨çç»ç«¯ï¼ä½¿ç¨ readline çåºç¨ç¨åºæ¥è®¾å®æé®å³èã æµè¯çææ¬åæ¬ä¸è¡ï¼ç´å°è¡å°¾ï¼ä¸å¿ç¨å- 符æ¥é离å®ã |
mode
|
$if ç»æç mode= å½¢å¼ç¨äºæµè¯ readline å¤äº emacs è¿æ¯ vi 模å¼ã è¿å¯ä»¥ä¸å½ä»¤ set keymap ç»å使ç¨ï¼ä¾å¦ï¼è®¾ç½® emacs-standard å emacs-ctlx é®çæ å°ï¼ä»å½ readline 以 emacs 模å¼å¯å¨ã | |||
|
term |
term= å½¢å¼ç¨äºåå«ä¸ç»ç«¯ç¸å³çæé®å³èï¼ä¹è®¸æ¯å°æé®åºåè¾åºä¸ç»ç«¯çåè½é®ç¸å³èã çå· = å³è¾¹çè¯è¢«åç»ç«¯çå¨åååç§°ä¸ç¬¬ä¸ä¸ª - åé¢çä¸é¨åç¸æ¯è¾ã ä¾å¦ï¼å许 sun åæ¶å¹é sun å sun-cmdã |
application
application ç»æç¨äºåå«åºç¨ç¨åºç¸å³çè®¾ç½®ãæ¯ä¸ªä½¿ç¨ readline çç¨åºé½è®¾ç½® application nameï¼ åå§åæä»¶å¯ä»¥æµè¯å®çå¼ãå®å¯ç¨äºå°ä¸ä¸ªæé®åºåä¸å¯¹ç¹å®çç¨åºæç¨çåè½ç¸å³èã ä¾å¦ï¼ä¸åå½ä»¤æ·»å äºä¸ä¸ªæé®åºåï¼ç¨ä»¥å¼ç¨ bash ä¸- å½åçè¯æåä¸ä¸ªè¯
$if Bash
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endif
|
$endif |
ä¸ä¾ä¸çè¿ä¸ªå½ä»¤ï¼ç»æäºä¸ä¸ª $if å½ä»¤ã |
|||
|
$else |
妿æµè¯å¤±è´¥ï¼$if æä»¤ä¸è¿ä¸ªåæ¯çå½ä»¤å°è¢«æ§è¡ã |
$include
è¿ä¸ªæä»¤ä½¿ç¨å个æä»¶åä½ä¸ºåæ°ï¼ä»æä»¶ä¸- 读åå½ä»¤åæé®å³èãä¾å¦ï¼ä¸åæä»¤ å°è¯»å /etc/inputrcï¼
$include /etc/inputrc
Searching
readline æä¾äºä»å½ä»¤åå²ä¸æç´¢åå«ç»å®å符串çè¡çå½ä»¤ (åè§ä¸é¢ç HISTORY åå² ç« è)ãæä¸¤ç§æç´¢æ¨¡å¼ï¼ incremental å non-incremental.
å¢éçæç´¢å¨ç¨æ·ç»æè¾å¥æç´¢å符串æ¶å¼å§ãå¨æç´¢åç¬¦ä¸²çæ¯ä¸ªå- 符被è¾å¥çåæ¶ï¼ readline æ¾ç¤ºä¸å·²è¾å¥çå符串å¹éçä¸ä¸ä¸ªå岿¡ç®ã å¢éçæç´¢åªè¦æ±è¾å¥è½æ¾å°ææçå岿¡ç®æéçé£ä¹å¤å符ã isearch-terminators åéä¸çåç¬¦ç¨æ¥ç»æ¢ä¸æ¬¡å¢éçæç´¢ã妿 è¿ä¸ªåéæ²¡æè¢«èµå¼ï¼Esc å Ctrl-J å- 符串å°ç»æä¸æ¬¡å¢éçæç´¢ã Ctrl-G å°åæ¶ä¸æ¬¡å¢éçæç´¢ï¼æ¢å¤åå§çè¡ãå½æç´¢ç»æ¢æ¶ï¼åå«æç´¢å符串 çå岿¡ç®æä¸ºå½åè¡ã
è¦ä»åå²åè¡¨ä¸æ¾å°å¶ä»å¹éçæ¡ç®ï¼éå½å°é®å¥ Ctrl-S æ Ctrl-Rã è¿æ ·å°å¨åå²ä¸åå/ååæç´¢ä¸ä¸ä¸ªå¹éå·²è¾å¥çæç´¢åç¬¦ä¸²çæ¡ç®ã å¶ä»å³èå°æä¸ª readline å½ä»¤çæé®åºåå°ç»æ¢æç´¢å¹¶æ§è¡å³èçå½ä»¤ã ä¾å¦ï¼newline å°ç»æ¢æç´¢ï¼æ¥åå½åè¡ï¼ä»èæ§è¡åå²å表ä¸çå½ä»¤ã
readline å¯ä»¥è®°ä½ä¸æ¬¡å¢éæç´¢çå符串ã妿é®å¥ä¸¤æ¬¡ Ctrl-Rï¼ä¸é´æ²¡æ è¾å¥ä»»ä½å符æ¥å®ä¹ä¸ä¸ªæ°çæç´¢å符串ï¼é£ä¹å°ä½¿ç¨å·²è®°ä½çæç´¢å- 符串ã
éå¢éçæç´¢å°æ´ä¸ªæç´¢å符串读å¥ï¼ç¶åæå¼å§æç´¢å¹éçå岿¡ç®ã æç´¢å- 符串å¯ä»¥ç±ç¨æ·è¾å¥ï¼æèæ¯å½åè¡çå容çä¸é¨åã
Readline Command Names
ä¸é¢ååºçæ¯å½ä»¤çå称以åé»è®¤æåµä¸å®ä»¬å³èçæé®åºåã å½ä»¤åç§°å¦ææ²¡æå¯¹åºçæé®åºåï¼é£ä¹é»è®¤æ¯æ²¡æå³èçãå¨ä¸åæè¿°ä¸ï¼ ç¹ (point) æå½ååæ ä½ç½®ï¼æ è®° (mark) æå½ä»¤ set-mark ä¿åçåæ ä½ç½®ãpoint å mark ä¹é´çææ¬è¢«ç§°ä¸ºèå´ (region)ã
Commands for Moving ç§»å¨
beginning-of-line (C-a)
ç§»å¨å°å½åè¡çå¼å§ã
end-of-line (C-e)
ç§»å¨å°å½åè¡çç»å°¾ã
forward-char (C-f)
ååç§»å¨ä¸åã
backward-char (C-b)
ååç§»å¨ä¸åã
forward-word (M-f)
ååç§»å¨å°ä¸ä¸è¯å°¾ãè¯ç±å符 (忝忰å) ç»æã
backward-word (M-b)
ååç§»å¨å°å½åæä¸ä¸è¯é¦ã
clear-screen (C-l)
æ¸é¤å±å¹ï¼ä¿çå½åè¡å¨å±å¹é¡¶ç«¯ãæåæ°æ¶ï¼å·æ°å½åè¡ï¼ä¸æ¸å±ã
redraw-current-line
å·æ°å½åè¡ã
Commands for Manipulating the History æçºµåå²è¡
accept-line (Newline, Return)
æ¥åè¿ä¸è¡ï¼ä¸ç®¡åæ å¨ä»ä¹ä½ç½®ã妿è¡é空ï¼å°æ ¹æ®åé HISTCONTROL çç¶æå å¥å°åå²å表ä¸- ãå¦æè¡æ¯ä¿®æ¹è¿çåå²è¡ï¼å°æ¢å¤è¯¥åå²è¡å°åå§ç¶æã
previous-history (C-p)
ä»åå²å表ä¸åå¾åä¸ä¸ªå½ä»¤ï¼ä»å表ä¸ååç§»å¨ã
next-history (C-n)
ä»åå²å表ä¸åå¾åä¸ä¸ªå½ä»¤ï¼ä»å表ä¸ååç§»å¨ã
beginning-of-history (M-<)
ç§»å¨å°åå²ä¸ç第ä¸è¡ã
end-of-history (M->)
ç§»å¨å°è¾å¥åå²è¡çæ«å°¾ï¼ä¹å°±æ¯å½åè¾å¥çè¡çæ«å°¾ã
reverse-search-history (C-r)
ä»å½åè¡å¼å§ååæç´¢ï¼æç§éè¦å¨åå²ä¸å“且移å¨ãè¿æ¯ä¸ä¸ªå¢éçæç´¢ã
forward-search-history (C-s)
ä»å½åè¡å¼å§ååæç´¢ï¼æç§éè¦å¨åå²ä¸å“且移å¨ãè¿æ¯ä¸ä¸ªå¢éçæç´¢ã
non-incremental-reverse-search-history (M-p)
ä»å½åè¡å¼å§ååï¼ä½¿ç¨éå¢éæç´¢æ¥æ¥æ¾ç¨æ·ç»åºçå符串ã
non-incremental-forward-search-history (M-n)
ä»å½åè¡å¼å§ååï¼ä½¿ç¨éå¢éæç´¢æ¥æ¥æ¾ç¨æ·ç»åºçå符串ã
history-search-forward
ä»å½åè¡å¼å§ååæç´¢åå²ï¼æ¥æ¾ä»å½åè¡é¦å° point ä¹é´çå符串ã è¿æ¯ä¸ä¸ªéå¢éçæç´¢ã
history-search-backward
ä»å½åè¡å¼å§ååæç´¢åå²ï¼æ¥æ¾ä»å½åè¡é¦å° point ä¹é´çå符串ã è¿æ¯ä¸ä¸ªéå¢éçæç´¢ã
yank-nth-arg (M-C-y)
å°åä¸ä¸ªå½ä»¤ç第ä¸ä¸ªåæ° (é常æ¯ä¸ä¸è¡ç第äºä¸ªè¯) æå¥å° point ä½ç½®ãæåæ° n æ¶ï¼å°åä¸ä¸ªå½ä»¤ç第 n ä¸ªè¯ (åä¸ä¸ªå½ä»¤ä¸çè¯ä» 0 å¼å§è®¡æ°) æå¥å° point ä½ç½®ãè´æ°åæ°åæå¥åä¸ä¸ªå½ä»¤åæ°ç¬¬ n 个è¯ã
yank-last-arg (M-., M-_)
æå¥åä¸ä¸ªå½ä»¤çæåä¸ä¸ªåæ° (ä¸ä¸å岿¡ç®çæåä¸ä¸ªè¯)ãæåæ°æ¶ï¼ è¡ä¸ºç±»ä¼¼äº yank-nth-argãåç»§ç yank-last-arg è°ç¨å° ä»åå²å表ä¸ååç§»å¨ï¼ä¾æ¬¡å°æ¯è¡çæåä¸ä¸ªåæ°æå¥ã
shell-expand-line (M-C-e)
æ©å±è¡ï¼å shell åç飿 ·ãå¶ä¸åå«å«ååå岿©å±ï¼è¿æææç shell è¯çæ©å±ã åè§ä¸é¢ç HISTORY EXPANSION ä¸å³äºå岿©å±çæè¿°ã
history-expand-line (M-ˆ)
å¨å½åè¡è¿è¡å岿©å±ãåè§ä¸é¢ç HISTORY EXPANSION ä¸- å³äºå岿©å±çæè¿°ã
magic-space
å¨å½åè¡è¿è¡å岿©å±ï¼å¹¶æå¥ä¸ä¸ªç©ºæ ¼ãåè§ä¸é¢ç HISTORY EXPANSION ä¸å³äºå岿©å±çæè¿°ã
alias-expand-line
å¨å½åè¡è¿è¡å«åæ©å±ï¼åè§ä¸é¢ç ALIASES ä¸å³äºå«åæ©å±çæè¿°ã
history-and-alias-expand-line
å¨å½åè¡è¿è¡åå²åå«åæ©å±ã
insert-last-argument (M-., M-_)
ä¸ yank-last-arg åä¹ã
operate-and-get-next (C-o)
æ¥åå½åè¡ï¼å 以æ§è¡ï¼ä»åå²ä¸ååºç¸å¯¹å½åè¡çä¸ä¸è¡è¿è¡ç¼è¾ã ä»»ä½åæ°é½è¢«å¿½ç¥ã
edit-and-execute-command (C-xC-e)
å¯å¨ä¸ä¸ªç¼è¾å¨ï¼ç¼è¾å½åå½ä»¤è¡ï¼å°ç»æä½ä¸º shell å½ä»¤è¿è¡ã Bash å°ä¾æ¬¡è¯çè¿è¡ $FCEDIT, $EDITOR, å emacs ä½ä¸ºç¼è¾å¨ã
Commands for Changing Text æ¹åææ¬
delete-char (C-d)
å é¤ point å¤çå符ã妿 point å¨è¡é¦ï¼è¡ä¸æ²¡æå- ç¬¦ï¼æå䏿¬¡è¾å¥çå符 没æè¢«å³èå° delete-charï¼å°è¿å EOF.
backward-delete-char (Rubout)
å é¤åæ ä¹åçå符ãå½ç»åºä¸ä¸ªæ°å¼çåæ°æ¶ï¼ä¿åå é¤çææ¬å° kill ring ä¸ã
forward-backward-delete-char
å é¤åæ ä¸çå符ï¼é¤éåæ å¨è¡å°¾ï¼æ¤æ¶å é¤åæ åçå符ã
quoted-insert (C-q, C-v)
å°è¾å¥çä¸ä¸åç¬¦ä¿æåæ ·æ·»å å°è¡ä¸ãä¾å¦ï¼å¯ä»¥ç¨å®æ¥æå¥ç±»ä¼¼ C-q çå符ã
tab-insert (C-v TAB)
æå¥ä¸ä¸ªè·³æ ¼ç¬¦å·ã
self-insert (a, b, A, 1, !, ...)
æå¥é®å¥çå符ã
transpose-chars (C-t)
å° point ä¹åçå符ååç§»å¨ï¼è¶è¿ point å¤çå符ï¼åæ¶ä¹æ¹å point çä½ç½®ã 妿 point å¨è¡å°¾ï¼å°è°æ¢ point ä¹åç两个å- 符ãè´æ°åæ°æ²¡æä½ç¨ã
transpose-words (M-t)
å° point ä¹åçè¯ååç§»å¨ï¼è¶è¿ point å¤çè¯ï¼åæ¶ä¹æ¹å point çä½ç½®ã 妿 point å¨è¡å°¾ï¼å°è°æ¢è¡ä¸çæå两个è¯ã
upcase-word (M-u)
å°å½å (æä¸ä¸ä¸ª) è¯åæå¨å¤§åãæè´å¼çåæ°æ¶ï¼å°åä¸ä¸ªè¯å为大åï¼ ä½æ¯ä¸ç§»å¨ pointã
downcase-word (M-l)
å°å½å (æä¸ä¸ä¸ª) è¯åæå¨å°åãæè´å¼çåæ°æ¶ï¼å°åä¸ä¸ªè¯å为å°åï¼ ä½æ¯ä¸ç§»å¨ pointã
capitalize-word (M-c)
å°å½å (æä¸ä¸ä¸ª) è¯å为é¦å大åãæè´å¼çåæ°æ¶ï¼å°åä¸ä¸ªè¯å为é¦å- 大åï¼ ä½æ¯ä¸ç§»å¨ pointã
overwrite-mode
æ§å¶æå¥/æ¹å模å¼ãç»åºä¸ä¸ªæ- £æ´æ°åæ°æ¶ï¼åæ¢ä¸ºæ¹å模å¼ãç»åºä¸ä¸ªéæ£æ° åæ°æ¶ï¼åæ¢ä¸ºæå¥æ¨¡å¼ãè¿ä¸ªå½ä»¤åªå½±å emacs 模å¼ï¼vi æ¨¡å¼ çæ¹å䏿¤ä¸åãæ¯ä¸ªå¯¹ readline() çè°ç¨é½ä»¥æå¥æ¨¡å¼å¼å§ã卿¹å模å¼ä¸ï¼ å³èå° self-insert çå- ç¬¦æ¿æ¢ point å¤çå符ï¼è䏿¯å°å®æ¨å°å³è¾¹ã å³èå° backward-delete-char çåç¬¦ä»¥ç©ºæ ¼æ¿æ¢ point åçå符ã é»è®¤æåµä¸ï¼è¿ä¸ªå½ä»¤æ²¡æå³èã
Killing and Yanking åªååç²è´´
kill-line (C-k)
åªåä» point å°è¡å°¾çææ¬ã
backward-kill-line (C-x Rubout)
åååªåå°è¡é¦ã
unix-line-discard (C-u)
åååªåå°è¡é¦ãä¸ backward-kill-line 没æä»ä¹åºå«ã åªåçææ¬è¢«ä¿åäº kill-ring ä¸ã
kill-whole-line
åªåå½åè¡ä¸ææå符ï¼ä¸ç®¡ point å¨ä»ä¹ä½ç½®ã
kill-word (M-d)
åªåä» point å°å½åè¯å°¾ï¼æè妿 point å¨è¯ä¹é´ï¼é£ä¹åªåå°ä¸ä¸è¯å°¾ã
backward-kill-word (M-Rubout)
åªå point ä¹åçè¯ãè¯çè¾¹çä¸ backward-word 使ç¨çç¸åã
unix-word-rubout (C-w)
åªå point ä¹åçè¯ï¼ä½¿ç¨ç©ºç½ä½ä¸ºè¯çè¾¹çãåªåçææ¬è¢«ä¿åäº kill-ring ä¸ã
delete-horizontal-space (M-\)
å é¤ point ä¸¤è¾¹çææç©ºæ ¼åè·³æ ¼ã
kill-region
åªåå½å region çææ¬ã
copy-region-as-kill
å° region çææ¬å¤å¶å°åªåç¼å²åºä¸ã
copy-backward-word
å° point åé¢çè¯å¤å¶å°åªåç¼å²åºä¸ã è¯çè¾¹çä¸ backward-word 使ç¨çç¸åã
copy-forward-word
å° point ä¹åçè¯å¤å¶å°åªåç¼å²åºä¸ã è¯çè¾¹çä¸ backward-word 使ç¨çç¸åã
yank (C-y)
å° kill-ring é¡¶é¨çå容ç²è´´å° point å¤çç¼å²åºä¸
yank-pop (M-y)
轮转 kill-ringï¼ç²è´´æ°çé¡¶é¨å容ãåªè½å¨ yank æ yank-pop ä¹å使ç¨ã
Numeric Arguments æ°å¼åæ°
digit-argument (M-0, M-1, ..., M--)
å°è¿ä¸ªæ°åå å¥å·²æç (already accumulating) åæ°ä¸ï¼æèå¼å§æ°çåæ°ã M-- å¼å§ä¸ä¸ªå¦å®çåæ°ã
universal-argument
è¿æ¯æå®åæ°çå¦ä¸ç§æ¹æ³ã妿è¿ä¸ªå½ä»¤åé¢è·çä¸ä¸ªæå¤ä¸ªæ°åï¼ å¯è½è¿åå«å导çè´å·ï¼è¿äºæ°åå®ä¹äºåæ°ã妿å½ä»¤ä¹åè·éçæ°å- ï¼å次æ§è¡ universal-argument å°ç»ææ°å- åæ°ï¼ä½æ¯å¶ä»æåµä¸è¢«å¿½ç¥ãæä¸ç§ç¹æ®æåµï¼å¦æå½ä»¤ä¹åç´§æ¥ç ä¸ä¸ªå¹¶éæ°åæè´å·çå符ï¼ä¸ä¸å½ä»¤çåæ°è®¡æ°å°ä¹ä»¥ 4ã åæ°è®¡æ°åå§æ¯ 1ï¼å æ¤ç¬¬ä¸æ¬¡æ§è¡è¿ä¸ªå½æ°ï¼ä½¿å¾åæ°è®¡æ°ä¸º 4ï¼ ç¬¬äºæ¬¡æ§è¡ä½¿å¾åæ°è®¡æ°ä¸º 16ï¼ä»¥æ¤ç±»æ¨ã
Completing è¡¥å¨
complete (TAB)
è¯ç对 point ä¹åçææ¬è¿è¡è¡¥å¨ã Bash 便¬¡è¯çå°ææ¬ä½ä¸ºä¸ä¸ªåé (å¦æææ¬ä»¥ $ å¼å§)ï¼ä¸ä¸ªç¨æ·å (å¦æææ¬ä»¥ ˜ å¼å§)ï¼ä¸»æºå (å¦æææ¬ä»¥ @ å¼å§)ï¼æèå½ä»¤ (以åå«åå彿°) æ¥è¡¥å¨ã妿è¿äºé½æ²¡æå¹éï¼å°å°è¯æä»¶åè¡¥å¨ã
possible-completions (M-?)
ååº point ä¹åçææ¬å¯è½çè¡¥å¨ã
insert-completions (M-*)
æå¥ possible-completions 已产çç point ä¹åçææ¬ææçè¡¥å¨ã
menu-complete
ä¸ complete ç¸ä¼¼ï¼ä½æ¯ä½¿ç¨å¯è½çè¡¥å¨å表ä¸- çæä¸ªå¹éæ¿æ¢è¦è¡¥å¨çè¯ã é夿§è¡ menu-complete å°éåå¯è½çè¡¥å¨åè¡¨ï¼æå¥æ¯ä¸ªå¹éã å°è¾¾è¡¥å¨å表çç»å°¾æ¶ï¼é¸£ç»ç«¯åé (æç§ bell-style ç设置æ¥å) å¹¶æ¢å¤åå§çææ¬ã åæ° n å°å¨å¹éå表ä¸ååç§»å¨ n æ- ¥ï¼è´æ°åæ°å¯ä»¥ç¨äºå¨å表ä¸ååç§»å¨ã è¿ä¸ªå½ä»¤åºå½ä¸ TAB é®å³èï¼ä½æ¯é»è®¤æåµä¸æ¯æ²¡æå³èçã
delete-char-or-list
å é¤åæ ä¸çå符ï¼å¦æä¸æ¯å¨è¡é¦æè¡å°¾ (类似 delete-char)ã 妿å¨è¡å°¾ï¼è¡ä¸ºä¸ possible-completions ä¸è´ã è¿ä¸ªå½ä»¤é»è®¤æ²¡æå³èã
complete-filename (M-/)
å°è¯å¯¹ point ä¹åçææ¬è¿è¡æä»¶åè¡¥å¨ã
possible-filename-completions (C-x /)
ååº point ä¹åçææ¬å¯è½çè¡¥å¨ï¼å°å®è§ä¸ºæä»¶åã
complete-username (M-˜)
å°è¯å¯¹ point ä¹åçææ¬è¿è¡è¡¥å¨ï¼å°å®è§ä¸ºç¨æ·åã
possible-username-completions (C-x ˜)
ååº point ä¹åçææ¬å¯è½çè¡¥å¨ï¼å°å®è§ä¸ºç¨æ·åã
complete-variable (M-$)
å°è¯å¯¹ point ä¹åçææ¬è¿è¡è¡¥å¨ï¼å°å®è§ä¸º shell åéã
possible-variable-completions (C-x $)
ååº point ä¹åçææ¬å¯è½çè¡¥å¨ï¼å°å®è§ä¸º shell åéã
complete-hostname (M-@)
å°è¯å¯¹ point ä¹åçææ¬è¿è¡è¡¥å¨ï¼å°å®è§ä¸ºä¸»æºåã
possible-hostname-completions (C-x @)
ååº point ä¹åçææ¬å¯è½çè¡¥å¨ï¼å°å®è§ä¸ºä¸»æºåã
complete-command (M-!)
å°è¯å¯¹ point ä¹åçææ¬è¿è¡è¡¥å¨ï¼å°å®è§ä¸ºå½ä»¤åãå½ä»¤è¡¥å¨å°è¯çå°æ¤ææ¬ 便¬¡ä¸å«åï¼ä¿çåï¼shell 彿°ï¼shell å建å½ä»¤ï¼æåæ¯å¯æ§è¡æä»¶åè¿è¡å¹éã
possible-command-completions (C-x !)
ååº point ä¹åçææ¬å¯è½çè¡¥å¨ï¼å°å®è§ä¸ºå½ä»¤åã
dynamic-complete-history (M-TAB)
å°è¯å¯¹ point ä¹åçææ¬è¿è¡è¡¥å¨ï¼å°æ¤ææ¬ä¸åå²å表ä¸- çè¡ç¸æ¯è¾æ¥æ¥æ¾å¯è½çè¡¥å¨å¹éã
complete-into-braces (M-{)
è¿è¡æä»¶åè¡¥å¨ï¼å°å¯è½çè¡¥å¨å表æ¾å¨è±æ¬å·ä¸- æå¥ï¼ä½¿å¾å表å¯ä»¥è¢« shell ä½¿ç¨ (åè§ä¸é¢ç Brace Expansion è±æ¬å·æ©å±)ã
Keyboard Macros å®
start-kbd-macro (C-x ()
å¼å§ä¿åè¾å¥å符为å½åé®çå®ã
end-kbd-macro (C-x ))
忢ä¿åè¾å¥å符为å½åé®çå®ï¼ä¿åå®å®ä¹ã
call-last-kbd-macro (C-x e)
éæ°æ§è¡ä¸æ¬¡å®ä¹çé®çå®ï¼å³æ¾ç¤ºåºå®ä¸çå- 符ï¼å¥½åå®ä»¬æ¯ä»é®çè¾å¥ç䏿 ·ã
Miscellaneous
re-read-init-file (C-x C-r)
è¯»å¥ inputrc æä»¶çå容ï¼åå¹¶å¶ä¸çæé®å³èååéèµå¼ã
abort (C-g)
åæ¶å½åç¼è¾å½ä»¤ï¼é¸£ç»ç«¯åé (æç§ bell-style ç设置æ¥å)ã
do-uppercase-version (M-a, M-b, M-x, ...)
妿æ Meta åç¼çå符 x æ¯å°åçï¼é£ä¹ä¸å½ä»¤ç¸å³è¿çæ¯å¯¹åºç大åå符ã
prefix-meta (ESC)
å°è¾å¥çä¸ä¸ä¸ªå符å ä¸ Meta åç¼ã ESC f çä»·äº Meta-f.
undo (C-_, C-x C-u)
å¢éçæ¤éï¼åå«è®°ä½æ¯ä¸è¡ã
revert-line (M-r)
æ¤éè¿ä¸è¡çææä¿®æ¹ãè¿ä¸æ§è¡å½ä»¤ undo è¶³å¤å¤æ¬¡çææç¸åï¼å°è¿ä¸è¡æ¢å¤å°åå§ç¶æã
tilde-expand (M-&)
对å½åè¯è¿è¡æ³¢æµªçº¿æ©å±ã
set-mark (C-@, M-<space>)
å¨ point å¤è®¾ç½® markã妿ç»åºäºæ°å¼çåæ°ï¼æ 记被设置å°é£ä¸ªä½ç½®ã
exchange-point-and-mark (C-x C-x)
äº¤æ¢ point å markãå½ååæ ä½ç½®è¢«è®¾ç½®ä¸ºä¿å- çä½ç½®ï¼æ§åæ ä½ç½®è¢«ä¿å为 markã
character-search (C-])
读å¥ä¸ä¸ªå符ï¼point ç§»å¨å°è¿ä¸ªå- 符ä¸ä¸æ¬¡åºç°çå°æ¹ãè´æ°å°æç´¢ä¸ä¸ä¸ªåºç°ã
character-search-backward (M-C-])
读å¥ä¸ä¸ªå符ï¼point ç§»å¨å°è¿ä¸ªå- 符ä¸ä¸æ¬¡åºç°çå°æ¹ãè´æ°å°æç´¢ä¸é¢çåºç°ã
insert-comment (M-#)
æ²¡ææ°å¼çåæ°æ¶ï¼readline åé comment-begin çå¼å°è¢«æå¥å°å½åè¡é¦ã妿ç»åºä¸ä¸ªæ°å¼çåæ°ï¼å½ä»¤çè¡ä¸ºç±»ä¼¼äºä¸ä¸ªå¼å³ï¼ 妿è¡é¦å符ä¸å¹é comment-begin çå¼ï¼å°æå¥è¿ä¸ªå¼ï¼å¦å å¹é comment-begin çå- 符å°è¢«ä»è¡é¦å é¤ãå¨ä¸¤ç§æåµä¸ï¼è¿ä¸è¡é½è¢«æ¥åï¼ å¥½åè¾å¥äºæ°è¡ç¬¦ä¸æ ·ãcomment-begin çé»è®¤å¼ä½¿å¾è¿ä¸ªå½ä»¤å°å½åè¡åæ 䏿¡ shell 注éã妿æ°å¼åæ°ä½¿å¾æ³¨éå符被å é¤ï¼è¿ä¸è¡å°è¢« shell æ§è¡ã
glob-complete-word (M-g)
point ä¹åçè¯è¢«å½ä½è·¯å¾æ©å±çä¸ä¸ªæ¨¡å¼ï¼å°¾é¨æå«äºä¸ä¸ªæå·ãè¿ä¸ªæ¨¡å¼è¢«ç¨æ¥ 为å¯è½çè¡¥å¨äº§çå¹éçæä»¶åå表ã
glob-expand-word (C-x *)
point ä¹åçè¯è¢«å½ä½è·¯å¾æ©å±çä¸ä¸ªæ¨¡å¼ï¼å¹éçæä»¶åçå表被æå¥ï¼æ¿æ¢è¿ä¸ªè¯ã 妿ç»åºä¸ä¸ªæ°å¼åæ°ï¼å¨è·¯å¾æ©å±ä¹åå°æ·»å ä¸ä¸ªæå·ã
glob-list-expansions (C-x g)
æ¾ç¤º glob-expand-word å¯è½äº§ççæ©å±çå表ï¼éç»å½åè¡ã妿ç»åºä¸ä¸ªæ°å¼åæ°ï¼å¨è·¯å¾æ©å±ä¹åå°æ·»åä¸ä¸ªæå·ã
dump-functions
å readline è¾åºæµæå°ææç彿°åå®ä»¬çæé®å³èã妿ç»åºä¸ä¸ªæ°å¼åæ°ï¼ è¾åºå°è¢«æ ¼å¼åï¼å¯ä»¥ç¨ä½ inputrc æä»¶ä¸é¨åã
dump-variables
å readline è¾åºæµæå°ææå¯è®¾ç½®ç readline 彿°ã妿ç»åºä¸ä¸ªæ°å¼åæ°ï¼ è¾åºå°è¢«æ ¼å¼åï¼å¯ä»¥ç¨ä½ inputrc æä»¶ä¸é¨åã
dump-macros
å readline è¾åºæµæå°ææå³èå°å®ç readline æé®åºå以åå®ä»¬è¾åºçå- 符串ã 妿ç»åºä¸ä¸ªæ°å¼åæ°ï¼è¾åºå°è¢«æ ¼å¼åï¼å¯ä»¥ç¨ä½ inputrc æä»¶ä¸é¨åã
display-shell-version (C-x C-v)
æ¾ç¤ºå½å bash å®ä¾ççæ¬ä¿¡æ¯ã
Programmable Completion å¯ç¼ç¨è¡¥å¨
å½è¯å¾å¯¹ä¸ä¸ªå½ä»¤çåæ°è¿è¡è¯çè¡¥å¨æ¶ï¼å¦æå·²ç»ä½¿ç¨å建å½ä»¤ complete å®ä¹äºè¿ä¸ªå½ä»¤çè¡¥å¨è§å ( compspec)ï¼å°å¯å¨å¯ç¼ç¨è¡¥å¨åè½ (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è)ã
é¦åï¼å½ä»¤å被确认ã妿é对è¿ä¸ªå½ä»¤æè¡¥å¨è§åçå®ä¹ï¼é£ä¹å°ä½¿ç¨ è§åæ¥äº§çå¯è½çè¯çè¡¥å¨çå表ã妿å½ä»¤è¯æ¯ä¸ä¸ªè·¯å¾å¨åï¼å°é¦åæç´¢ é对è¿ä¸ªè·¯å¾å¨åçè§åã妿é对è¿ä¸ªè·¯å¾å¨åæ²¡ææ¾å°è§åï¼å°å°è¯æ¥æ¾ é对æåä¸ä¸ªææ åé¢çé¨åçè§åã
䏿¦æ¾å°äºä¸ä¸ªè§åï¼å®å°ç¨ä½äº§çå¹éçè¯ãå¦ææ²¡ææ¾å°ï¼å°è¿è¡ä¸é¢ Completing ä¸æè¿°ç bash é»è®¤çè¡¥å¨ã
é¦åï¼å°æ§è¡è§åæå®çå¨ä½ãåªæä»¥è¢«è¡¥å¨çè¯å¼å§çå¹éè¯æä¼è¢«è¿åã å½å¨æä»¶æç®å½åè¡¥å¨ä¸ä½¿ç¨ -f æ -d é项æ¶ï¼shell åé FIGNORE å°ç¨äºå¯¹å¹éè¿è¡è¿æ»¤ã
æ¥ä¸æ¥ï¼å°äº§çææç±-G é项ç»åºçæä»¶åæ©å±æ¨¡å¼æå®çè¡¥å¨ã 模å¼äº§ççè¯ä¸å¿å¹éè¦è¡¥å¨çè¯ãshell åé GLOBIGNORE ä¸ä¼ç¨äºè¿æ»¤å¹éç»æï¼ä½æ¯åé FIGNORE ä¼è¢«ä½¿ç¨ã
æ¥ä¸æ¥ï¼å°èè -W é项çåæ°æå®çå符串ãè¿ä¸ªå符串é¦å被 ååï¼ç¨ç¹æ®åé IFS ä¸çå符ä½ä¸ºåé符ãshell å¼ç¨è¢«å½ä½ä¸ä¸ªè¯ã æ¥ä¸æ¥ï¼æ¯ä¸ªè¯è¢«æ©å±ï¼ä½¿ç¨ä¸é¢ EXPANSION ä¸æè¿°ç brace expansion, tilde expansion, parameter å variable expansion, command substitution, arithmetic expansion, 以å pathname expansion è§åå¤çã对äºç»æï¼å使ç¨ä¸é¢ Word Splitting ä¸æè¿°çè§åååæè¯ã æ©å±çç»æä¸è¦è¡¥å¨çè¯è¿è¡åé¨ä¸è´çæ¯è¾ï¼å¹éçè¯æä¸ºå¯è½çè¡¥å¨ã
å¨è¿äºå¹é被产çåï¼ä»»ä½ç± -F å -C é项æå®ç shell 彿°åå½ä»¤å°è¢«æ§è¡ãå½å½ä»¤æå½æ°è¢«æ§è¡æ¶ï¼åé COMP_LINE å COMP_POINT 被èµå¼ï¼ä½¿ç¨ä¸é¢ Shell Variables ä¸çè§åã å¦æè¦æ§è¡ shell 彿°ï¼è¿å°è®¾ç½®åé COMP_WORDS å COMP_CWORD å½å½æ°æå½ä»¤è¢«æ§è¡æ¶ï¼ç¬¬ä¸ä¸ªåæ°æ¯çå¾åæ°è¢«è¡¥å¨çå½ä»¤çåç§°ï¼ ç¬¬äºä¸ªåæ°æ¯è¦è¡¥å¨çè¯ï¼ç¬¬ä¸ä¸ªåæ°æ¯å½åå½ä»¤è¡ä¸ï¼è¦è¡¥å¨çè¯åé¢çè¯ã 对è¦è¡¥å¨çè¯äº§ççè¡¥å¨ä¸ä¼è¿è¡ä»»ä½è¿æ»¤ï¼å½æ°æå½ä»¤å¨äº§çå¹éæ¶æå®å¨çèªç±ã
ä»»ä½ -F æå®ç彿°å°è¢«é¦åæ§è¡ã彿°å¯ä»¥ä½¿ç¨ä»»ä½ shell åè½ï¼ åå«å建å½ä»¤ compgenï¼æ¥äº§çå¹éãå®å¿é¡»å°å¯è½çè¡¥å¨æ¾å°æ°ç»åé COMPREPLY ä¸ã
æ¥ä¸æ¥ï¼ä»»ä½ -C é项æå®çå½ä»¤å°è¢«æ§è¡ï¼å¶æ§è¡ç¯å¢ä¸å½ä»¤æ¿æ¢ çç¯å¢ç¸åãå®åºå½åæ åè¾åºæå°ä¸ä¸ªè¡¥å¨çåè¡¨ï¼æ¯è¡ä¸ä¸ªã åææ å¯ä»¥ç¨æ¥è½¬ä¹ä¸ä¸ªæ°è¡ç¬¦ï¼å¦æéè¦çè¯ã
ææå¯è½çè¡¥å¨é½äº§çä¹åï¼å°å¯¹å表è¿è¡ -X é项æå®çä»»ä½è¿æ»¤ã è¿æ»¤å¨æ¯ä¸ä¸ªæ¨¡å¼ï¼åè·¯å¾åæ©å±ä¸ç䏿 ·ï¼æ¨¡å¼ä¸ç & æ¿æ¢ä¸º è¦è¡¥å¨çè¯ãåé¢ä¸ç & å¯ä»¥ç¨åææ è½¬ä¹ï¼åææ å¨è¿è¡å¹éæ¶è¢«å é¤ã ä»»ä½å¹éè¿ä¸ªæ¨¡å¼çè¡¥å¨å°ä»å表ä¸å é¤ãå导ç ! å°ä½¿æ¨¡å¼å«ä¹ç¸åï¼ è¿ç§æåµä¸ï¼ä»»ä½ä¸å¹éè¿ä¸ªæ¨¡å¼çè¡¥å¨å°è¢«å é¤ã
æåï¼B-P å -S æå®çä»»ä½åç¼ååç¼è¢«æ·»å å°è¡¥å¨åè¡¨çæ¯ä¸ª æååé¢ï¼ç»æè¿åç» readline è¡¥å¨ä»£ç ï¼ä½ä¸ºå¯è½çè¡¥å¨å表ã
妿ååæ§è¡çå¨ä½æ²¡æäº§çä»»ä½å¹éï¼å¹¶ä¸å¨å®ä¹ compspec è§åæ¶ï¼ä¸º complete å½ä»¤æä¾äº -o dirname é项ï¼å°å°è¯ç®å½åè¡¥å¨ã
é»è®¤æåµä¸ï¼å¦ææ¾å°äºä¸ä¸ªè§åï¼å®äº§ççä»»ä½ä¸è¥¿é½è¢«è¿åç»è¡¥å¨ä»£ç ï¼ ä½ä¸ºå¯è½çè¡¥å¨çå¨éãä¸åå°è¯é»è®¤ç bash è¡¥å¨ï¼readline é»è®¤ç æä»¶åè¡¥å¨ä¹ä¼ç¦æ¢ã妿å®ä¹è§åæ¶ï¼ä¸º complete å½ä»¤æä¾äº -o default é项ï¼å¨è§å没æäº§çå¹éæ¶å°è¿è¡ readline é»è®¤çè¡¥å¨å¤çã
å½ä¸ä¸ªè§åæåºææç®å½åè¡¥å¨æ¶ï¼å¯ç¼ç¨è¡¥å¨å½æ°å¼ºå¶ readline å¨è¡¥å¨çåç§° å颿·»å ä¸ä¸ªææ ï¼å¦æå®æ¯ä¸ä¸ªå°ç®å½ç符å·è¿æ¥ãç¶åè¿è¦ç»è¿ readline åé mark-directories çå¼å¤çï¼ä¸ç®¡ readline åé mark-symlinked-directories ç弿¯ä»ä¹ã
åå²(HISTORY)
å½å¯ç¨å建å½ä»¤ set ç -o history é项æ¶ï¼shell åè®¸è®¿é® command historyï¼ä»¥åè¾å¥çå½ä»¤çå表ã HISTSIZE çå¼ç¨ä½å½ä»¤å表ä¸ä¿åçå½ä»¤æ°éã è¿å» HISTSIZE 个 (é»è®¤ä¸º500) å½ä»¤å°è¢«ä¿åãshell å°æ¯æ¡å½ä»¤å¨è¿è¡åæ°ååéæ©å±ä¹å ä¿åå°åå²åè¡¨ä¸ (åè§ä¸é¢ç EXPANSION 段è½)ï¼ä½æ¯æ¯å¨å岿©å±è¿è¡ä¹åï¼å¹¶ä¸è¦ç»è¿ shell åé HISTIGNORE å HISTCONTROL å¤çã
å¨å¯å¨æ¶ï¼å岿 ¹æ®ä»¥åé HISTFILE çå¼ä¸ºåçæä»¶ (é»è®¤æ¯ ˜/.bash_history) è¿è¡åå§åã 妿éè¦çè¯ï¼ä»¥ HISTFILE 为åçæä»¶å°è¢«æªæï¼æ¥åå«ä¸è¶è¿åé HISTFILESIZE ç弿å®çè¡æ°ãå½äº¤äº shell éåºæ¶ï¼æå $HISTSIZE è¡è¢«ä»åå²å表ä¸å¤å¶å° $HISTFILE æä»¶ä¸ã妿å¯ç¨äº shell é项 histappend (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« èä¸å¯¹å建å½ä»¤ shopt çæè¿°)ï¼è¿äºè¡è¢«è¿½å å°å岿件ä¸ï¼å¦ååå²æä»¶è¢«è¦çã妿 HISTFILE è¢«åæ¶å®ä¹ï¼æè妿å岿件ä¸å¯åï¼åå²å°ä¸ä¼ä¿åãä¿ååå²ä¹åï¼ åå²æä»¶è¢«æªæ- ï¼ä»¥åå«ä¸è¶è¿ HISTFILESIZE è¡ã妿 HISTFILESIZE è¢«åæ¶å®ä¹ï¼ä¸ä¼è¿è¡æªææä½ã
å建å½ä»¤ fc (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è) å¯ä»¥ç¨æ¥ååºæä¿®æ¹å¹¶éæ°æ§è¡åå²å表ä¸çä¸é¨åãå建å½ä»¤ history å¯ä»¥ç¨æ¥æ¾ç¤ºæä¿®æ¹åå²åè¡¨ï¼æä½å岿件ãå½ä½¿ç¨å½ä»¤è¡ç¼è¾æ¶ï¼æ¯ç§ ç¼è¾æ¨¡å¼é½ææç´¢å½ä»¤ï¼æä¾å¯¹åå²å表ç访é®ã
shell å许æ§å¶åªäºå½ä»¤è¢«ä¿åå°åå²å表ä¸ãå¯ä»¥è®¾ç½® HISTCONTROL å HISTIGNORE åéï¼æ¥ä½¿å¾ shell åªä¿åè¾å¥å½ä»¤çä¸ä¸ªåéãshell é项 cmdhist å¦æè¢«å¯ç¨ï¼å°ä½¿å¾ shell å°å¤è¡çå½ä»¤çæ¯ä¸è¡ä¿åå°åä¸ä¸ªå岿¡ç®ä¸ï¼ å¨éè¦çå°æ¹æ·»å åå·æ¥ä¿è¯è¯ä¹çæ£ç¡®æ§ãshell é项 lithist ä½¿å¾ shell ä¿åå½ä»¤æ¶ï¼ä¿çåµå¥çæ°è¡è䏿¯ç¨åå·ä»£æ¿ãåè§ä¸é¢ shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ä¸ï¼å建å½ä»¤ shopt çæè¿°ï¼æå³è®¾ç½®ååæ¶ shell é项çä¿¡æ¯ã
å岿©å±("HISTORY EXPANSION")
shell æ¯æå岿©å±æºå¶ï¼ç±»ä¼¼äº csh ä¸å岿©å±ãè¿ä¸èæè¿°äºå¯ç¨çè¯- æ³ç¹å¾ãå¨äº¤äºç shell ä¸è¿ä¸æºå¶è¢«é»è®¤å¯ç¨ï¼ å¯ä»¥ä½¿ç¨å建å½ä»¤ set ç -H é项æ¥ç¦ç¨å® (åè§ä¸é¢ç shell å建å½ä»¤(SHELL BUILTIN COMMANDS) ç« è)ãé交äºç shell é»è®¤ä¸è¿è¡å岿©å±ã
å岿©å±å°åå²å表ä¸çè¯å¼å¥è¾å¥æµä¸ï¼ä½¿å¾å¯ä»¥æ¹ä¾¿å°éå¤å·²æ§è¡å½ä»¤ï¼ å¨å½åè¾å¥è¡ä¸ä¸ºåä¸ä¸ªå½ä»¤æå¥æ°çåæ°ï¼ æèå¿«éä¿®æ£åä¸ä¸ªå½ä»¤ä¸çé误ã
å岿©å±å¨è¯»å¥ä¸æ´è¡åï¼å¨ shell å°å®æåæè¯ä¹åç«å³è¿è¡ãå® ç±ä¸¤é¨åç»æãé¦åæ¯å¤ææ¿æ¢ä¸ä½¿ç¨åå²å表ä¸åªä¸è¡ãå¶æ¬¡æ¯éæ©é£ä¸è¡ä¸- è¦åå«å°å½åè¡ä¸çé¨åã ä»åå²ä¸éæ©çè¡ç§°ä¸º eventï¼ä»é£ä¸è¡ä¸éæ©çé¨åæ¯ wordsã å¯ä»¥ç¨å¤ç§å¤æ ·ç modifiers æ¥æçºµæéçè¯ãå¨è¯»å¥è¾å¥æ¶ï¼è¡è¢«æç§åæ ·æ¹å¼åè§£æè¯ï¼ å æ¤å¤ä¸ªä»¥ metacharacter åéçè¯ï¼å¦æè¢«å¼å·åå«ï¼å°±è¢«å½æä¸ä¸ªè¯ã å岿©å±ç±å岿©å±å符å¼å¥ï¼é»è®¤æ¯ !ãåªæåææ (\) ååå¼å·å¯ä»¥å¼ç¨å岿©å±å符ã
å建å½ä»¤ shopt å¯ä»¥è®¾å®å¤ä¸ªé项å¼ï¼æ¥è°æ´å岿©å±çè¡ä¸ºã妿 shell é项 histverify 被å¯ç¨ (åè§å建å½ä»¤ shopt çæè¿°)ï¼å¹¶ä¸æ£å¨ä½¿ç¨ readlineï¼ å岿¿æ¢ä¸ä¼è¢«ç«å³ä¼ ç» shell è§£éå¨ã䏿- ¤ç¸å¯¹ï¼æ©å±åçè¡è¢«éæ°è½½å¥ readline ç¼è¾ç¼å²åºï¼è¿è¡è¿ä¸æ¥çä¿®æ¹ã妿æ- £å¨ä½¿ç¨ readlineï¼ å¹¶ä¸å¯ç¨äº shell é项 histreeditï¼ å¤±è´¥çå岿¿æ¢å°è¢«éæ°è½½å¥å° readline ç¼è¾ç¼å²åºï¼è¿è¡æ¹æ£ãå建å½ä»¤ history ç -p é项å¯ä»¥ç¨æ¥å¨æ§è¡ä¹åæ¥çå岿©å±å°å¦ä½è¿è¡ãå建å½ä»¤ history ç -s é项å¯ä»¥ç¨æ¥å¨åå²å表æ«å°¾æ·»å å½ä»¤ï¼èä¸çæ- £æ§è¡å®ä»¬ï¼ä»è 卿¥ä¸æ¥çè°ç¨ä¸å¯ä»¥ä½¿ç¨å®ä»¬ã
shell å许æ§å¶å岿©å±æºå¶ä½¿ç¨çå¤ç§å符 (åè§ä¸é¢ç Shell Variables ä¸ histchars çæè¿°)ã
Event Designators
äºä»¶æç¤ºå¨ (event designator) æ¯ä¸ä¸ªå¯¹åå²åè¡¨ä¸æä¸ªå½ä»¤è¡æ¡ç®çå¼ç¨ã
|
! |
å¼å§ä¸ä¸ªå½ä»¤æ¿æ¢ï¼é¤éåé¢è·éçæ¯ blank, newline, = ææ¯ (. |
|||
|
!n |
å¼ç¨å½ä»¤è¡ n. |
|||
|
!-n |
å¼ç¨å½åå½ä»¤è¡åå» n. |
|||
|
!! |
å¼ç¨ä¸ä¸æ¡å½ä»¤ãè¿æ¯ ‘!-1’ çåä¹è¯ã |
!string
å¼ç¨æè¿ç以 string å¼å§çå½ä»¤ã
!?string[?]
å¼ç¨æè¿çåå« string çå½ä»¤ãå°¾é¨ç ? å¯ä»¥è¢«å¿½ç¥ï¼å¦æ string ä¹åç´§æ¥çä¸ä¸ªæ°è¡ç¬¦ã
ˆ string1 ˆ string2 ˆ
å¿«éæ¿æ¢ãéå¤ä¸ä¸æ¡å½ä»¤ï¼å° string1 æ¿æ¢ä¸º string2. ä¸ ‘‘!!:s/string1/string2/’’ çä»· (åè§ä¸é¢ç 修饰符 (Modifiers))ã
|
!# |
å°æ¤ä¸ºæ¢è¾å¥çæ´ä¸ªå½ä»¤è¡ã |
Word Designators
è¯æç¤ºå¨
(word designator) ç¨äºä»
event
ä¸éæ©ææçè¯ã
: åé event
è§åä¸ word
æç¤ºå¨ãå®å¯ä»¥å¿½ç¥ï¼å¦æè¯æç¤ºå¨ä»¥
ˆ, $, *, -, æ
%
å¼å§ãè¯è¢«ä»è¡é¦å¼å§ç¼å·ï¼ç¬¬ä¸ä¸ªè¯è¢«è¡¨ç¤ºä¸º
0ãæå¥å½åè¡ä¸-
çè¯ä»¥åä¸ªç©ºæ ¼åéã
0 (zero)
第 0 个è¯ã对 shell æ¥å°ï¼è¿æ¯å½ä»¤åã
|
n |
第 n 个è¯ã | ||
|
ˆ |
第ä¸ä¸ªåæ°ãä¹å°±æ¯ï¼ç¬¬ 1 个è¯ã | ||
|
$ |
æåçåæ°ã | ||
|
% |
æè¿ä¸æ¬¡æç´¢ ‘?string?’ å¹éçè¯ã | ||
|
x-y |
ä¸ç»è¯ï¼‘-y’ æ¯ ‘0-y’ çç®åã | ||
|
* |
ææè¯ï¼é¤äºç¬¬ 0 个ãè¿æ¯ ‘1-$’ çåä¹è¯ã妿 event ä¸- åªæä¸ä¸ªè¯ï¼ä½¿ç¨ * ä¹ä¸æ¯é误ï¼è¿ç§æåµä¸å°è¿å空å符串ã | ||
|
x* |
x-$ çç®åã | ||
|
x- |
-$ çç®åï¼å°±å x* 䏿 ·ï¼ä½æ¯å¿½ç¥æåä¸ä¸ªè¯ã |
妿ç»åºäºä¸ä¸ª word æç¤ºå¨ï¼æ²¡æç»åº event è§åï¼åä¸ä¸ªå½ä»¤å°ç¨ä½ eventã
修饰符 (Modifiers)
å¯éç word æç¤ºå¨ä¹åï¼å¯ä»¥åºç°ä¸ä¸ªæå¤ä¸ªä¸è¿° modifiers çåºåï¼æ¯ä¸ä¸ªé½åç¼æ ‘:’ã
|
h |
å 餿件åç»æçå°¾é¨ï¼åªä¿ç头é¨ã | ||
|
t |
å 餿件åç»æä¸åé¢çæåï¼ä¿çå°¾é¨ã | ||
|
r |
å é¤ .xxx å½¢å¼ä¸å°¾é¨çåç¼æåï¼ä¿çåºæ¬åç§°é¨åã | ||
|
e |
å 餿æå容ï¼ä¿çå°¾é¨çåç¼ã | ||
|
p |
æå°æ°çå½ä»¤ï¼ä½æ¯ä¸æ§è¡å®ã | ||
|
q |
å¼ç¨æ¿æ¢æå¾çè¯ï¼ä½¿å®ä¸åè¿è¡æ¿æ¢ã | ||
|
x |
å¼ç¨æ¿æ¢æå¾çè¯ï¼ç±»ä¼¼ä¸ q, 使¯ä¼æ ¹æ® blanksï¼ç©ºç½ åæ°è¡ç¬¦å解为è¯ã |
s/old/new/
å°äºä»¶è¡ä¸åºç°ç第ä¸ä¸ª old æ¿æ¢ä¸º newã ä»»ä½åé符é½å¯ä»¥ç¨æ¥ä»£æ¿ /ï¼æåä¸ä¸ªåé符æ¯å¯éçï¼å¦æå®æ¯äºä»¶è¡çæåä¸ä¸ªå符ã old å new ä¸- çåé符å¯ä»¥ç¨ä¸ä¸ªåææ æ¥å¼ç¨ã妿 & åºç°å¨ new ä¸ï¼å®å°æ¿æ¢ä¸º oldã å¯ä»¥ç¨åä¸ªåææ æ¥å¼ç¨ &ã妿 old 为空ï¼å®å°è®¾ç½®ä¸ºæåæ¿æ¢ç oldï¼ æèï¼å¦æå颿²¡æåçè¿å岿¿æ¢ï¼å°±æ¯ !?string[?] æç´¢ä¸çæåä¸ä¸ª stringã
|
& |
éå¤ä¸ä¸æ¬¡æ¿æ¢ã | ||
|
g |
ä½¿å¾æ¹å被æ´ä¸ªäºä»¶è¡ææ¥åãç¨äºä¸ ‘:s’ æ ‘:&’ ç»å (ä¾å¦ï¼‘:gs/old/new/’)ã å¦æä¸ ‘:s’ ç»å使ç¨ï¼ä»»ä½åé符é½å¯ä»¥ç¨æ¥ä»£æ¿ /ï¼ æåä¸ä¸ªåé符æ¯å¯éçï¼å¦æå®æ¯äºä»¶è¡çæåä¸ä¸ªå符ã |
shell å建å½ä»¤(SHELL BUILTIN COMMANDS)
é¤éå¦å¤è¯´æï¼è¿ä¸ç« ä»ç»çå建å½ä»¤å¦ææ¥å
-
å¼å¯¼çé项ï¼é£ä¹å®ä¹æ¥å
--
ä½ä¸ºåæ°ï¼æ¥æç¤ºé项çç»æ
: [arguments]
æ²¡æææï¼è¿ä¸ªå½ä»¤é¤äºæ©å± arguments å¹¶ä¸ä½ä»»ä½æå®çéå®åä¹å¤ï¼ä¸åä»»ä½äºã éåºæ¶è¿å0ã
. filename
[arguments]
source filename [arguments]
读åå¹¶å¨å½å shell ç¯å¢ä¸æ§è¡ filename ä¸çå½ä»¤ï¼è¿å filename 䏿åä¸ä¸ªå½ä»¤çè¿åç¶æã妿 filename ä¸ä¸å嫿æ (slash)ï¼ç³»ç»å°å¨ PATH 䏿¥æ¾åå« filename çç®å½ãå¨ PATH ä¸æç´¢çæä»¶ä¸å¿æ¯å¯æ§è¡çã 妿 bash 䏿¯è¿è¡äº posix modeï¼å½ PATH ä¸- æ¾ä¸å°æä»¶æ¶ä¼å¨å½åç®å½æç´¢ã妿 shopt å建å½ä»¤ç sourcepath é项被å³éï¼ PATH å°ä¸ä¼è¢«æç´¢ã妿æä»»ä½ arguments ï¼å®ä»¬æä¸º filename çä½ç½®åæ° (positional parameters)ï¼å¦å ä½ç½®åæ°ä¸åçååã è¿åç¶ææ¯èæ¬ä¸æåä¸ä¸ªå½ä»¤éåºæ¶çç¶æã æ²¡ææ§è¡å½ä»¤åè¿å0ï¼æ²¡ææ¾å°æä¸è½è¯»å filename æ¶è¿åfalseã
alias [-p] [name[=value] ...]
Alias ä¸å¸¦åæ°æè带 -p åæ°è¿è¡æ¶å°å¨æ åè¾åºä»¥è¿æ ·çæ ¼å¼ alias name=value ç»åºå«åå表ã 妿æåæ°ï¼å°å建æä¾äº value ç name çå«åã value ä¸å°¾é¨çç©ºæ ¼ä½¿å¾å«å被æ©å±æ¶ï¼ä¸ä¸ä¸ªè¯åå«åæ¿æ¢ã 对äºåæ°å表ä¸çæ¯ä¸ä¸ª nameï¼å¦æ value 没æ ç»åºï¼è¿ä¸ªå«åçåç§°åå¼ä¼è¢«æå°åºæ¥ã Alias è¿å true é¤é name 没æå®ä¹ä¸ºå«åã
bg [jobspec]
使æèµ·çç¨åº jobspec å¨åå°ç»§ç»æ§è¡ï¼å°±å¥½å宿¯ç¨ & å¯å¨ç䏿 ·ãå¦ææ²¡ææå® jobspecï¼shell æä¹ä¸ç current job å½åä½ä¸ å°è¢«ä½¿ç¨ã bg jobspec è¿å0ï¼é¤éå½åç¦æ- ¢äºä½ä¸æ§å¶ï¼æèå¨å许ä½ä¸æ§å¶ï¼ä½ æ¯æ²¡ææ¾å° jobspec ï¼æèå®ä¸æ¯å¨ä½ä¸æ§å¶ä¸å¯å¨çæ¶åã
bind [-m
keymap] [-lpsvPSV]
bind [-m keymap] [-q
function] [-u function] [-r
keyseq]
bind [-m keymap] -f filename
bind [-m keymap] -x
keyseq:shell-command
bind [-m keymap]
keyseq:function-name
bind readline-command
æ¾ç¤ºå½å
readline
é®ååè½çï¼å°ä¸ä¸ªæé®åºååä¸ä¸ª
readline
åè½æå®è¿è¡å³èï¼æè设置ä¸ä¸ª
readline
åéãæ¯ä¸ä¸ªå¨éé项ç忰齿¯ä¸ä¸ªå½ä»¤ï¼å¥½å宿¯å¨
.inputrc ä¸-
åºç°ç䏿 ·ã使¯æ¯ä¸ªå³èæèå½ä»¤å¿é¡»ä½ä¸ºåç¬çåæ°ä¼ éï¼
ä¹å°±æ¯è¿æ ·
’"\C-x\C-r":
re-read-init-file’ã
妿æåæ°ï¼å®ä»¬æå¦ä¸çæä¹ï¼
-m keymap
ä½¿ç¨ keymap ä½ä¸ºéåçå³èçkeymapãå¯éç keymap åç§°æ¯ emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-commandï¼è¿æ vi-insertã vi å vi-command çä»·; emacs å emacs-standard çä»·ã
|
-l |
ååºææç readline åè½ã |
|||
|
-p |
以ç¨åºå¯è¯»çæ¹å¼æ¾ç¤º readline åè½åç§°åå³è |
|||
|
-P |
ååºå½å readline åè½åç§°åå³èã |
|||
|
-v |
以ç¨åºå¯è¯»çæ¹å¼æ¾ç¤º readline åéåç§°åå¼ |
|||
|
-V |
ååºå½å readline åéåå¼ã |
|||
|
-s |
以ç¨åºå¯è¯»çæ¹å¼æ¾ç¤º readline é®åºåå对åºçå® |
|||
|
-S |
æ¾ç¤º readline å®å¯¹åºçé®åºååä»ä»¬è¾åºçå符串 |
-f filename
ä» filename ä¸è¯»åé®åºå
-q function
æ¥è¯¢é£äºé®å°æ§è¡functionã
-u function
åæ¶ææå³èå° function çé®ã
-r keyseq
åæ¶å½åä»»ä½ keyseq çå³èã
-x keyseq:shell-command
使 shell-command å¨ keyseq æä¸æ¶è¢«æ§è¡ã
è¿å弿¯0ï¼é¤éç»åºäºä¸ä¸ªä¸è½è¯å«çéé¡¹ææ¯äº§çäºä¸ä¸ªé误ã
break [n]
ä»ä¸ä¸ª for, while, until, æè select 循ç¯éåºã 妿æå®äº n ï¼å°±è·³åº n å±å¾ªç¯ã n å¿é¡» ≥ 1ã妿 n æ¯å½å循ç¯å±æ°è¿è¦å¤§ï¼å°è·³åºææå¾ªç¯ã è¿å弿¯0ï¼é¤éæ§è¡ break çæ¶å shell 䏿¯å¨æ§è¡ä¸ä¸ªå¾ªç¯ã
builtin shell-builtin [arguments]
æ§è¡æå®ç shell å建å½ä»¤ï¼ä¼ é arguments ï¼è¿åå½ä»¤çè¿åå¼ã è¿å¨å®ä¹äºä¸ä¸ªå shell å建å½ä»¤ååç彿°æ¶å¾æç¨ï¼ å¨é£ä¸ªå½æ°ä¸- 使ç¨å®æ¥æ§è¡ç¸åºçåè½ãcd å½ä»¤å¸¸ä»¥è¿ç§æ¹å¼éæ°å®ä¹ã è¿åç¶ææ¯ falseï¼å¦ææå®ç shell-builtin 并䏿¯ä¸ä¸ª shell å建å½ä»¤ã
cd [-L|-P] [dir]
æ¹åå½åè·¯å¾å° dirãè¿ä¸ªåéçé»è®¤å¼æ¯ HOME ç®å½ãç¯å¢åé CDPATH å®ä¹äºåå« dir çæç´¢è·¯å¾ãå¨ CDPATH ä¸å¯éçè·¯å¾å以åå·(:) åéã CDPATH ä¸ç空路å¾åä¸å½åè·¯å¾ç¸åï¼å°±æ¯ ‘‘.’’. 妿 ç®å½å ä»¥ææ (/,slash) èµ·å§ï¼é£ä¹ CDPATH ä¸ä¼è¢«ä½¿ç¨ã -P é项æ¯è¯´ä½¿ç¨ç©çè·¯å¾ç»æè䏿¯è·é符å·é¾æ¥ï¼(åè§ set å½ä»¤ä¸ç -P é项); -L é项强å¶è·é符å·é¾æ¥ãå¦å¤ï¼é项 - ä¸ $OLDPWD æ¯ç¸åçã è¿å弿¯ true ï¼å¦ææåå°æ¹åäºç®å½ï¼å¦åæ¯ falseã
command [-pVv] command [arg ...]
è¿è¡ command ï¼ä½¿ç¨ args ä½ä¸ºåæ°ï¼ç¦æ¢éå¸¸çæ¥æ¾ shell 彿°çè¿ç¨ãåªæå建å½ä»¤æè PATH ä¸åå«çå½ä»¤å¯ä»¥æ§è¡ã妿ç»åº -p åæ°ï¼ command çæ¥æ¾æ¯ä»¥ PATH çé»è®¤å¼è¿è¡çãè¿æ ·å¯ä»¥ä¿è¯æ¾å°ææçæ åå·¥å·ã妿ç»åº -V æè -v é项ï¼å³äº command ç说æå°è¢«æå°åºæ¥ã -v é项使å¾è¡¨è¿°è¿ä¸ªå½ä»¤çè¯ï¼æèè¦æ§è¡ command éè¦æ§è¡çæä»¶æ¾ç¤ºåºæ¥ï¼ -V é项ç»åºæ´è¯¦ç»çæè¿°ã妿ç»åº -V æè -v é项ï¼éåºç¶æå¨æ¾å°äº command çæåµä¸0ï¼æ²¡æ¾å°å°±æ¯1ã å¦ææ²¡ææä¾é项ï¼å¹¶ä¸äº§çäºé误æè command æ²¡ææ¾å°ï¼éåºç¶æå°±æ¯127ãå¦åï¼ command å建å½ä»¤çéåºç¶ææ¯ command çéåºç¶æã
compgen [option] [word]
æ ¹æ® option 为 word 产çå¯è½çè¡¥å¨ãoption æ¯ å建å½ä»¤ complete æ¥åçä»»ä½é项ï¼é¤äº -p å -rï¼å°å¹éç»æåå°æ åè¾åºã å½ä½¿ç¨ -F æ -C é项æ¶ï¼å¯ç¼ç¨è¡¥å¨åè½æè®¾ç½®ç夿° shell åé妿å- å¨ï¼å¶å¼å°ä¸åæç¨ã
产ççå¹éä¸å¯ç¼ç¨è¡¥å¨ä»£ç æ¹æ®è¡¥å¨è§ååä¸ç¸åçæå¿ç´æ¥äº§ççç»æç¸åã 妿æå®äº wordï¼åªæå¹é word çè¡¥å¨ç»æå°è¢«æ¾ç¤ºåºæ¥ã
è¿åå¼ä¸ºçï¼é¤éæä¾äºéæ³çéé¡¹ï¼æèæ²¡æäº§çå¹éã
complete
[-abcdefgjksuv] [-o comp-option]
[-A action] [-G globpat]
[-W
wordlist] [-P prefix] [-S
suffix]
[-X filterpat] [-F function] [-C command] name [name ...]
complete -pr [name ...]
æå®æ¯ä¸ª name çåæ°åºå½å¦ä½è¢«è¡¥å¨ã妿ç»åºäº -p éé¡¹ï¼ æè没æé项ç»åºï¼ç°æçè¡¥å¨è§åå°è¢«æ¾ç¤ºåºæ¥ï¼ä»¥ä¸ç§å¯ä»¥éç¨ä¸ºè¾å¥ çæ ¼å¼æ¾ç¤ºã-r é项å°ä¸ä¸ªé对æ¯ä¸ª name çè¡¥å¨è§åå é¤ã æèï¼å¦ææ²¡æç»åº nameï¼å°å 餿æè¡¥å¨è§åã
å°è¯è¯çè¡¥å¨æ¶ï¼åºç¨è¿äºè¡¥å¨è§åçè¿ç¨å¨ä¸é¢ Programmable Completion(å¯ç¼ç¨è¡¥å¨) ä¸è¯¦è¿°ã
å¶ä»é项ï¼å¦æç»åºçè¯ï¼å·æä¸åæä¹ã-G,
-W, å -X
é项çåæ°
(妿éè¦çè¯ï¼è¿åæ¬
-P å -S é项)
åºå½è¢«å¼ç¨ï¼é¿å卿§è¡å建å½ä»¤
complete
ä¹å被æ©å±ã
-o comp-option
comp-option æ§å¶ç compspec é¤äºç®åå°äº§çè¡¥å¨ä¹å¤çå¤ç§è¡ä¸ºã comp-option å¯ä»¥æ¯å¦ä¸ä¹ä¸ï¼
|
default |
ä½¿ç¨ readline çé»è®¤æä»¶åè¡¥å¨ï¼å¦æ compspec 没æå¾å°å¹éã |
dirnames
è¿è¡ç®å½åè¡¥å¨ï¼å¦æ compspec 没æå¾å°å¹éã
filenames
åè¯ readlineï¼compspec 产çäºæä»¶åï¼ä½¿å®å¯ä»¥è¿è¡ä»»ä½æä»¶åä¸ç¨çå¤ç (ä¾å¦ï¼ç»ç®å½åå ä¸ææ ææ¶é¤å°¾é¨ç©ºç½)ã主è¦ç¨äº shell 彿°ã
|
nospace |
åè¯ readline ä¸è¦åè¡¥å¨çè¯å¨è¡çæåæ·»å ä¸ä¸ªç©ºæ ¼ (è¿æ¯é»è®¤è¡ä¸º)ã |
-A action
action å¯ä»¥æ¯ä¸åä¹ä¸ï¼æ¥äº§çä¸ç³»åå¯è½çè¡¥å¨ç»æï¼
|
alias |
èµ·å«åãä¹å¯ä»¥ç¨ -a æå®ã |
arrayvar
æ°ç»åéåã
|
binding |
Readline æé®å³èã |
|||
|
builtin |
shell å建å½ä»¤çåç§°ãä¹å¯ä»¥ç¨ -b æå®ã |
|||
|
command |
å½ä»¤åãä¹å¯ä»¥ç¨ -c æå®ã |
directory
ç®å½åãä¹å¯ä»¥ç¨ -d æå®ã
disabled
被ç¦ç¨çå建å½ä»¤åç§°ã
|
enabled |
å¯ç¨çå建å½ä»¤åç§°ã |
|||
|
export |
被导åºç shell åéåç§°ãä¹å¯ä»¥ç¨ -e æå®ã |
|||
|
file |
æä»¶åãä¹å¯ä»¥ç¨ -f æå®ã |
function
shell 彿°çåç§°ã
|
group |
ç»åãä¹å¯ä»¥ç¨ -g æå®ã |
helptopic
å建å½ä»¤ help æ¥åç帮å©ä¸»é¢ã
hostname
主æºåï¼ä»ç¯å¢åé HOSTFILE æå®çæä»¶ä¸å¾å°ã
|
job |
ä½ä¸åï¼å¦æä½ä¸æ§å¶è¢«æ¿æ´»çè¯ãä¹å¯ä»¥ç¨ -j æå®ã |
|||
|
keyword |
shell ä¿çåãä¹å¯ä»¥ç¨ -k æå®ã |
|||
|
running |
æ£å¨è¿è¡çä½ä¸åï¼å¦æä½ä¸æ§å¶è¢«æ¿æ´»çè¯ã |
|||
|
service |
æå¡åãä¹å¯ä»¥ç¨ -s æå®ã |
|||
|
setopt |
å建å½ä»¤ set ç -o éé¡¹çææåæ°ã |
|||
|
shopt |
å建å½ä»¤ shopt æ¥åç shell é项åã |
|||
|
signal |
ä¿¡å·åã |
|||
|
stopped |
忢çä½ä¸åï¼å¦æä½ä¸æ§å¶è¢«æ¿æ´»çè¯ã |
|||
|
user |
ç¨æ·åãä¹å¯ä»¥ç¨ -u æå®ã |
variable
shell åéçåç§°ãä¹å¯ä»¥ç¨ -v æå®ã
-G globpat
æä»¶åæ©å±æ¨¡å¼ globpat 被æ©å±ï¼äº§çå¯è½çè¡¥å¨ã
-W wordlist
wordlist è¢«ä½¿ç¨ IFS ç¹æ®åéä¸çå- 符ä½ä¸ºå®çç¬¦æ¥æåï¼æ¯ä¸ªç»æçè¯è¢«æ©å±ãå¯è½çè¡¥å¨æ¯ç»æå表 ä¸å¹éè¦è¡¥å¨çè¯çé£ä¸äºã
-C command
command å°å¨ä¸ä¸ªå shell ç¯å¢ä¸- æ§è¡ï¼å®çç»æç¨ä½å¯è½çè¡¥å¨ã
-F function
shell 彿° function å°å¨å½å shell ç¯å¢ä¸- æ§è¡ãå½å®ç»ææ¶ï¼å¯è½ çè¡¥å¨å¯ä»¥ä»æ°ç»åç´ COMPREPLY ä¸- å¾å°ã
-X filterpat
filterpat æ¯ä¸ä¸ªæ¨¡å¼ï¼ç¨äºæä»¶åæ©å±ãææåé¢çé项ååæ°äº§ç çå¯è½çè¡¥å¨é½è¦ç»è¿è¿ä¸æ¥å¤çï¼æ¯ä¸ä¸ªå¹é filterpat çè¡¥å¨é½ 被ä»å表ä¸å é¤ã为 filterpat å ä¸å导 ! ä½¿æ¨¡å¼æä¹ç¸åï¼ è¿ç§æåµä¸ï¼ææä¸å¹é filterpat çæ¨¡å¼è¢«å é¤ã
-P prefix
卿æå¶ä»é项é½å¤çè¿ä¹åï¼prefix 被å å°æ¯ä¸ªå¯è½çè¡¥å¨åé¢ã
-S suffix
卿æå¶ä»é项é½å¤çè¿ä¹åï¼suffix 被å å°æ¯ä¸ªå¯è½çè¡¥å¨åé¢ã
è¿åå¼ä¸ºçï¼é¤éç»åºäºéæ³çé项ï¼ç»åºé¤ -p å -r ä¹å¤ çæä¸ªéé¡¹æ¶æ²¡æç»åº name åæ°ï¼è¯å¾å é¤ä¸æ¡ name çè¡¥å¨ è§å使¯è§åä¸åå¨ï¼æèæ·»å è¡¥å¨è§åæ¶åºéã
continue [n]
å¤ä½å°å¤å± for, while, until, æ select 循ç¯çä¸ä¸æ¬¡å¼å§ã妿æå®äº nï¼ å¤ä½å°åå¤ç¬¬ n å±å¾ªç¯çå¼å§ã n å¿é¡» ≥ 1ã妿 n æ¯å¤é¨å¾ªç¯ç屿°è¦å¤ï¼å°å¤ä½å°æå¤å±çå¾ªç¯ (‘‘top-level’’ loopï¼é¡¶å±å¾ªç¯)ã è¿å弿¯ 0ï¼é¤éæ§è¡ continue æ¶ï¼shell 䏿¯å¨å¾ªç¯ä¹ä¸ã
declare [-afFirtx]
[-p] [name[=value]]
typeset [-afFirtx] [-p]
[name[=value]]
声æåéä¸/æè®¾ç½®å®ä»¬ç屿§ãå¦ææ²¡æç»åº name åæ¾ç¤ºåéçå¼ã é项 -p å°æ¾ç¤ºæ¯ä¸ªåç§° name ç屿§åå¼ãå½ä½¿ç¨ -p æ¶ï¼å¶ä»é项被忽ç¥ãé项 -F ç¦æ- ¢æ¾ç¤ºå½æ°å®ä¹ï¼åªæå½æ°åå屿§ä¼è¢«æ¾ç¤ºã -F é项æå« -f. ä¸åé项å¯ç¨æ¥éå¶åªè¾åºå·ææå®å±æ§çåéï¼æè为åéè®¾ç½®å±æ§ï¼
|
-a |
æ¯ä¸ª name 齿¯æ°ç»åé (åè§ä¸é¢ç Arrays 段è½)ã | ||
|
-f |
åªä½¿ç¨å½æ°åã | ||
|
-i |
åé被å½ä½ä¸ä¸ªæ´æ°ï¼å½åé被èµå¼æ¶å°è¿è¡ç®æ¯è¿ç® (åè§ ç®æ¯æ±å¼ (ARITHMETIC EVALUATION) ç« è)ã | ||
|
-r |
ä½¿å¾ name åªè¯»ãè¿äºåç§°ä¸è½å被åç»çèµå¼è¯- å¥èµå¼æåæ¶å®ä¹ã | ||
|
-t |
设置æ¯ä¸ª name ç trace(è·è¸ª) 屿§ã被è·è¸ªç彿°ç»§æ¿äº è°ç¨è shell ç DEBUG é·é±ãtrace 屿§å¯¹åéæ²¡æç¹æ®æä¹ã | ||
|
-x |
æ è®° name 为å¯ä»¥éè¿ç¯å¢å¯¼åºç»åç»å½ä»¤ã |
ä½¿ç¨ ‘+’ ä»£æ¿ ‘-’ å°å³é屿§ï¼ç¹æ®æåµæ¯ +a ä¸è½ç¨äºéæ¯ä¸ä¸ª æ°ç»åéãå½ç¨äºå½æ°ä¸æ¶ï¼å®ä½¿å¾æ¯ä¸ª name æä¸ºå±é¨çï¼å°±å 使ç¨äº local å½ä»¤ãè¿å弿¯ 0ï¼é¤ééå°äºéæ³çé项ï¼è¯å¾ä½¿ç¨ ‘‘-f foo=bar’’ å®ä¹å½æ°ï¼è¯å¾ååªè¯»åéèµå¼ï¼è¯å¾åæ°ç»åéèµå¼ä½æ²¡æä½¿ç¨å¤åçèµå¼ è¯æ³ (åè§ä¸é¢ç Arrays 段è½)ï¼name ä¹ä¸ä¸æ¯ææç shell åéåï¼è¯å¾å°æ°ç»åéçæ°ç» ç¶æå³éï¼æèæ¯è¯å¾ä½¿ç¨ -f æ¾ç¤ºä¸ä¸ªä¸å- å¨ç彿°ã
dirs [-clpv] [+n] [-n]
没æéé¡¹æ¶æ¾ç¤ºå½åä¿åçç®å½ãé»è®¤è¾åºä¸ºä¸è¡ï¼ç®å½åç¨ç©ºæ ¼åå¼ã å¯ä»¥ä½¿ç¨ pushd å½ä»¤å°ç®å½æ·»å å°åè¡¨ï¼ popd å½ä»¤å°å表ä¸- çæ¡ç®å é¤ã
|
+n |
æ¾ç¤º dirs å¨ä¸å¸¦é项æ§è¡æ¶æ¾ç¤ºçå表ç第 n 个æ¡ç®ï¼ä» 0 å¼å§èªå·¦ç®èµ·ã | ||
|
-n |
æ¾ç¤º dirs å¨ä¸å¸¦é项æ§è¡æ¶æ¾ç¤ºçå表ç第 n 个æ¡ç®ï¼ä» 0 å¼å§èªå³ç®èµ·ã | ||
|
-c |
å é¤æææ¡ç®ï¼æ¸ç©ºç®å½æ ã | ||
|
-l |
产çé¿å表ï¼é»è®¤å表æ¼å¼ä½¿ç¨æ³¢æµªçº¿æ¥è¡¨ç¤ºä¸ªäººç®å½ã | ||
|
-p |
è¾åºç®å½æ ï¼ä¸è¡ä¸ä¸ªã | ||
|
-v |
è¾åºç®å½æ ï¼ä¸è¡ä¸ä¸ªï¼æ¯ä¸ªæ¡ç®åé¢å ä¸å®å¨æ ä¸- çä½ç½®ç´¢å¼ã |
è¿å弿¯ 0ï¼é¤éç»åºäºéæ³çåæ°ï¼æè n ç´¢å¼è¶åºäºç®å½æ çèå´ã
disown [-ar] [-h] [jobspec ...]
没æé项æ¶ï¼æ¯ä¸ª jobspec è¢«ä»æ£å¨è¿è¡çä½ä¸è¡¨ä¸å é¤ã妿ç»åºäº - éé¡¹ï¼æ¯ä¸ª jobspec å¹¶ä¸ä»è¡¨ä¸å é¤ï¼èæ¯è¢«æ è®°ï¼ä½¿å¾å¨ shell æ¥å° SIGHUP ä¿¡å·æ¶ï¼ä¸ä¼åä½ä¸ååº SIGHUP ä¿¡å·ãå¦ææ²¡æç»åº jobspecï¼ ä¹æ²¡æç»åº -a æè -r é项ï¼å°ä½¿ç¨å½åä½ä¸ (current job)ãå¦ææ²¡æç»åº jobspecï¼ é项 -a æå³çå 餿æ è®°ææä½ä¸ï¼é项 -r ä¸å¸¦ jobspec åæ°æ¶éå¶æä½åªå¯¹æ£å¨è¿è¡çä½ä¸è¿è¡ãè¿å弿¯ 0ï¼é¤é jobspec 䏿宿æçä½ä¸ã
echo [-neE] [arg ...]
è¾åº argï¼ä»¥ç©ºæ ¼åå¼ï¼æåå ä¸ä¸ªæ°è¡ç¬¦ãè¿å弿»æ¯ 0ã 妿æå®äº -nï¼å°ä¸å¨å°¾é¨æ·»å æ°è¡ç¬¦ã妿ç»åºäº -e éé¡¹ï¼ å°å许解éä¸ååææ 转ä¹çå符ã -E éé¡¹ç¦æ¢è¿äºè½¬ä¹å- 符çè§£éï¼å³ä½¿å¨é»è®¤è§£éå®ä»¬çç³»ç»ä¸ä¹æ¯å¦æ¤ã shell é项 xpg_echo å¯ä»¥ç¨æ¥å¨è¿è¡æ¶å¤æ echo æ¯å¦é»è®¤ å±å¼è¿äºè½¬ä¹å符ã echo ä¸å° -- ä½ä¸ºé项çç»æã echo è§£éä¸å转ä¹åºåï¼
|
\a |
alert (bell) åé | ||
|
\b |
backspace åé | ||
|
\c |
suppress trailing newline å é¤å°¾é¨æ°è¡ç¬¦ | ||
|
\e |
an escape character å符 Esc | ||
|
\f |
form feed è¿çº¸ | ||
|
\n |
new line æ°è¡ç¬¦ | ||
|
\r |
carriage return å车 | ||
|
\t |
horizontal tab æ°´å¹³è·³æ ¼ | ||
|
\v |
vertical tab ç«ç´è·³æ ¼ | ||
|
\\ |
backslash åææ | ||
|
\0nnn |
ä¸ä¸ªå«æ¯ç¹å符ï¼å®ç弿¯å«è¿å¶å¼ nnn (é¶å°ä¸ä¸ªå«è¿å¶æ°å- )ã | ||
|
\nnn |
ä¸ä¸ªå«æ¯ç¹å符ï¼å®ç弿¯å«è¿å¶å¼ nnn (ä¸å°ä¸ä¸ªå«è¿å¶æ°å- )ã | ||
|
\xHH |
ä¸ä¸ªå«æ¯ç¹å符ï¼å®ç弿¯ååè¿å¶å¼ HH (ä¸å°ä¸¤ä¸ªååè¿å¶æ°å- )ã |
enable [-adnps] [-f filename] [name ...]
å许æç¦æ¢ shell å建å½ä»¤ãç¦æ- ¢ä¸ä¸ªå建å½ä»¤ä½¿å¾ç£çä¸çä¸å建å½ä»¤åå çæä»¶å¾ä»¥è¿è¡ï¼ä¸å¿ä½¿ç¨å®çå¨è·¯å¾ï¼å³ä½¿ shell ä¸è¬å¨æç´¢ç£çä¸çå½ä»¤ä¹å æç´¢å建å½ä»¤ãå¦æä½¿ç¨äº -n éé¡¹ï¼æ¯ä¸ª name é½è¢«ç¦æ¢ï¼å¦åï¼ name 被å许ãä¾å¦ï¼è¦ä½¿ç¨ PATH ä¸æç´¢å°ç test å½ä»¤è䏿¯ shell å建çé£ä¸ä¸ªï¼å¯ä»¥è¿è¡ ‘‘enable -n test’’. é项 -f æå³çä»å±äº«åº filename ä¸å è½½æ°çå建å½ä»¤ nameï¼ å¦æç³»ç»æ¯æå¨æå è½½çè¯ãé项 -d å°å 餿¾ç»ç¨ -f å è½½çå建å½ä»¤ãå¦ææ²¡æç»åº name åæ°ï¼æèç»åºäº -p é项ï¼å°æ¾ç¤º shell å建å½ä»¤çå表ãå¦ææ²¡æå¶ä»éé¡¹åæ°ï¼ è¿ä¸ªå表åªå嫿æè¢«å许ç shell å建å½ä»¤ï¼å¦æç»åºäº -nï¼å°åªæ¾ç¤ºè¢«ç¦æ¢çå建å½ä»¤ï¼å¦æç»åºäº -aï¼æ¾ç¤ºçå表ä¸- å嫿æå建å½ä»¤ï¼è¿æå½ä»¤æ¯å¦è¢«å许çæç¤ºï¼ 妿ç»åºäº -sï¼è¾åºè¢«éå¶ä¸º POSIX special å建å½ä»¤ã è¿å弿¯ 0ï¼é¤é name 䏿¯ shell å建å½ä»¤ï¼æèä»å±äº«åºä¸å è½½æ°çå建å½ä»¤æ¶åºéã
eval [arg ...]
arg 被读åå¹¶è¿ç»ä¸ºåä¸çå½ä»¤ãè¿ä¸ªå½ä»¤ç¶å被 shell 读åå¹¶æ§è¡ï¼ å®çéåºç¶æè¢«ä½ä¸º eval çå¼è¿åãå¦ææ²¡æ argsï¼ æä»ä»åå«ç©ºåæ°ï¼ eval è¿å 0ã
exec [-cl] [-a name] [command [arguments]]
妿æå®äº commandï¼ å®å°æ¿æ¢ shellãä¸ä¼äº§çæ°çè¿ç¨ã arguments æä¸º command çåæ°ã妿ç»åºäº -l é项ï¼shell å°å¨ä¼ éç» command ç第 0 ä¸ªåæ°åé¢å ä¸ä¸ä¸ªè¿å符 (dash,‘-’)ãè¿æ ·åå login(1) ç¸åãé项 -c 使å¾å½ä»¤ command å¨ä¸ä¸ªç©ºç¯å¢ä¸æ§è¡ã妿ç»åºäº -aï¼ shell ä¼å° name ä½ä¸ºç¬¬ 0 ä¸ªåæ°ä¼ éç»è¦æ§è¡çå½ä»¤ã妿ç±äºæç§åå as the zeroth argument to the executed command. If command ä¸è½è¢«æ§è¡ï¼é交äºç shell å°éåºï¼é¤é shell é项 execfail 被设置为å许ï¼è¿ç§æåµä¸å®è¿å失败ã妿å½ä»¤ä¸è½æ§è¡ï¼äº¤äºç shell è¿å失败ã å¦ææ²¡ææå® command ä»»ä½éå®å对å½å shell åçä½ç¨ï¼è¿å弿¯ 0ã妿åçéå®åé误ï¼è¿åç¶ææ¯ 1ã
exit [n]
ä½¿å¾ shell ä»¥ç¶æå¼ n éåºãå¦æå¿½ç¥äº nï¼ éåºç¶ææ¯æåæ§è¡çå½ä»¤çéåºç¶æãå¨ shell ç»æ¢åï¼å¯¹ EXIT çé·é±å°è¢«æ§è¡ã
export [-fn]
[name[=word]] ...
export -p
ç»åºçåç§° names 被æ 记为èªå¨å°å¯¼åºå°åç»æ§è¡çå½ä»¤çç¯å¢ä¸- ã妿ç»åºäº -f é项ï¼åç§° names æçæ¯å½æ°ãå¦ææ²¡æç»åº namesï¼ æè妿ç»åºäº -p é项ï¼å°æå°å¨è¿ä¸ª shell ä¸è¢«å¯¼åºçææåå- çå表ãé项 -n 使å¾ä»¥æ¤ä¸ºåçåéç导åºå±æ§è¢«å é¤ã export è¿å 0ï¼é¤ééå°äºéæ³çé项ï¼name ä¹ä¸ä¸æ¯ææç shell åéåï¼ æèç»åºäº -f é项ï¼è name 䏿¯ä¸ä¸ªå½æ°ã
fc [-e
ename] [-nlr] [first] [last]
fc -s [pat=rep] [cmd]
å½ä»¤ä¿®å¤ã第ä¸ç§å½¢å¼ä¸ï¼åå²å表ä¸ä» first å° last èå´åçå½ä»¤é½è¢«éåã First å last å¯ä»¥æå®ä¸ºå符串 (å¯ä»¥å®ä½æåä¸ä¸ªä»¥æ¤å符串å¼å§çå½ä»¤) æèæ°å (åå²åè¡¨ä¸ çç´¢å¼ï¼è´æ°è¢«å½ä½ç¸å¯¹å½åå½ä»¤å·çåç§»)ãå¦ææ²¡ææå® lastï¼ å®å¨å举æ¶è¢«è®¾ä¸ºå½åå½ä»¤ (å æ¤ ‘‘fc -l -10’’ å°è¾åºæå 10 æ¡å½ä»¤)ï¼å¶ä»æåµä¸è¢«è®¾ä¸º firstã å¦ææ²¡ææå® firstï¼ å®å¨ç¼è¾æ¶è¢«è®¾ä¸ºåä¸ä¸ªå½ä»¤ï¼å举æ¯è®¾ä¸º -16ã
é项 -n 使å¾å举æ¶ä¸æ¾ç¤ºå½ä»¤å·ç ãé项 -r å°å½ä»¤é¡ºåºè¿è¡ææ¢ã妿ç»åºäº -l é项ï¼å½ä»¤å°å䏾卿 åè¾åºä¸ãå¦åï¼å°å¯å¨ ename ç»åºçç¼è¾å¨ï¼ç¼è¾åå«è¿äºå½ä»¤çæä»¶ãå¦ææ²¡æç»åº enameï¼ å°ä½¿ç¨åé FCEDIT çå¼ï¼å¦æ FCEDIT 没æå®ä¹å°±ä½¿ç¨ EDITOR çå¼ã妿ä»ç¶æ²¡æå®ä¹ï¼å°ä½¿ç¨ viã ç¼è¾ç»æåï¼è¢«ç¼è¾çå½ä»¤å°åæ¾å¹¶æ§è¡ã
第äºç§å½¢å¼ä¸ï¼command 卿¯ä¸ª pat çå®ä¾è¢« rep æ¿æ¢å é½è¢«éæ°æ§è¡ã使ç¨è¿ç§ç¹æ§æ¶å¯ä»¥èµ·ä¸ä¸ªæç¨çå«åï¼ ‘‘r=fc -s’’, è¿æ ·è¾å¥ ‘‘r cc’’ å°è¿è¡æåç以 ‘‘cc’’ å¼å¤´çå½ä»¤ï¼è¾å¥ ‘‘r’’ å°éæ°æ§è¡ä¸ä¸ä¸ªå½ä»¤ã
å¦æä½¿ç¨ç¬¬ä¸ç§å½¢å¼ï¼è¿å弿¯ 0ï¼é¤ééå°äºéæ³çéé¡¹ï¼æ first æ last æå®çåå²è¡æ°è¶åºäºèå´ã妿ç»åºäº -e é项ï¼è¿å弿¯æåæ§è¡çå½ä»¤çè¿åå¼ï¼æçæ¯å¤±è´¥ï¼å¦æä¸´æ¶æä»¶ä¸- çå½ä»¤ æ§è¡åºéãå¦æä½¿ç¨ç¬¬äºç§å½¢å¼ï¼è¿åç¶ææ¯éæ°æ§è¡çå½ä»¤ï¼é¤é cmd 没ææå®ä¸ä¸ªææçåå²è¡ï¼è¿ç§æåµä¸ fc è¿å失败ã
fg [jobspec]
å° jobspec æ¢å¤è³åå°ï¼ä½¿å®æä¸ºå½åä½ä¸ã妿 jobspec ä¸å- å¨ï¼å°ä½¿ç¨ shell æä¹ä¸çå½åä½ä¸ current jobãè¿å弿¯ 被æ¾å°åå°çå½ä»¤çç¶æï¼æèæ¯å¤±è´¥ï¼å¦æå¨ç¦ç¨ä½ä¸æ§å¶æ¶è¿è¡ï¼æè å¨å¯ç¨ä½ä¸æ§å¶æ¶è¿è¡ï¼ä½ jobspec 没ææå®ææçä½ä¸ï¼æ jobspec æå®äºæ²¡æä½¿ç¨ä½ä¸æ§å¶çä½ä¸ã
getopts optstring name [args]
getopts ç± shell ç¨åºç¨æ¥å¤çä½ç½®åæ°ã optstring åå«è¦è¯å«çé项å- 符ï¼å¦ææä¸ªå符è·éçåå·ï¼é£ä¹è¿ä¸ªé项éè¦ä¸ä¸ªåæ°ï¼ éè¦ç¨ç©ºç½åå®é离å¼ãåå·åé®å·å符ä¸è½ç¨ä½é项åç¬¦ãæ¯æ¬¡å®æ§è¡æ¶ï¼ getopts å°ä¸ä¸ä¸ªé项æ¾å¨ shell åé name ä¸ï¼å¦æ name ä¸å- å¨å°±åå§åå®ï¼ä¸ä¸ä¸ªè¦å¤ççåæ°çç´¢å¼æ¾å¨åé OPTIND ä¸ãæ¯æ¬¡ shell æ shell èæ¬è¢«æ§è¡çæ¶å OPTIND 被åå§å为 1ãå½æä¸ªé项éè¦åæ°æ¶ï¼ getopts å°é£ä¸ªåæ°æ¾å°åé OPTARG ä¸ãshell ä¸ä¼èªå¨éç½® OPTINDï¼ å¨ç¸åç shell ä¸ï¼å¦æè¦ä½¿ç¨æ°çåæ°éåèéè¦å¤æ¬¡è°ç¨ getopts æ¶ï¼å¿é¡»æå¨éç½®å®ã
å½éå°éé¡¹ç»æçæ¶åï¼getopts ä»¥å¤§äº 0 çå¼éåºã OPTIND 被设置为第ä¸ä¸ªéé项çåæ°çç´¢å¼ï¼name 被设置为 ?ã
getopts é常解éä½ç½®åæ°ï¼ä½æ¯å¦æ args ä¸ç»åºäºæ´å¤åæ°ï¼ getopts å°è§£éå®ä»¬ã
getopts è½ä»¥ä¸¤ç§æ¹å¼æ¥åé误ã妿 optstring ç第ä¸ä¸ªå- 符æ¯åå·ï¼å°ä½¿ç¨ silent å®éçé误æ¥åãé常çæä½ä¸- ï¼éå°éæ³é项æç¼ºå°é项çåæ°æ¶å°æå°åº è¯æä¿¡æ¯ã妿åé OPTERR 被设置为 0ï¼ä¸ä¼æ¾ç¤ºéè¯¯æ¶æ¯ï¼å³ä½¿ optstring ç第ä¸ä¸ªå- ç¬¦ä¸æ¯åå·ã
妿åç°äºä¸ä¸ªéæ³çéé¡¹ï¼ getopts å name ä¸ç½®å¥ ?ï¼å¹¶ä¸å¦æä¸æ¯å®é模å¼çè¯ï¼æå°éè¯¯æ¶æ¯å¹¶åæ¶ OPTARG çå®ä¹ã妿 getopts æ¯å®é模å¼ï¼æ¾å°çé项å符å°ç½®å¥ OPTARGï¼ ä¸ä¼æå°è¯æ- æ¶æ¯ã
å¦ææ²¡ææ¾å°éè¦çåæ°ï¼å¹¶ä¸ getopts 䏿¯å®é模å¼ï¼å°å name ç½®å¥ä¸ä¸ªé®å· (?)ï¼åæ¶ OPTARG çå®ä¹ï¼æå°åºè¯ææ¶æ¯ã妿 getopts æ¯å®é模å¼ï¼é£ä¹å°å name ç½®å¥ä¸ä¸ªåå· (:) å¹¶ä¸ OPTARG å°è®¾ç½®ä¸ºæ¾å°çé项å符ã
getopts è¿åçï¼å¦ææ¾å°äºæå®ç/æªè¢«æå®çé项ãå®è¿ååï¼å¦æéå°äºéé¡¹ç»æ æèåçäºé误ã
hash [-lr] [-p filename] [-dt] [name]
å¯¹äºæ¯ä¸ª name, éè¿æç´¢ $PATH ä¸- çç®å½ï¼æ¾å°å½ä»¤çå¨è·¯å¾åå¹¶è®°å½å®ã妿ç»åºäº -p é项ï¼ä¸ä¼è¿è¡è·¯å¾æç´¢ï¼ç´æ¥å° filename ä½ä¸ºå½ä»¤çå¨è·¯å¾åãé项 -r ä½¿å¾ shell å¿è®°ææå·²è®°å½çä½ç½®ãé项 -d ä½¿å¾ shell å¿è®°å·²è®°å½ç name çä½ç½®ã妿ç»åºäº -t éé¡¹ï¼æ¯ä¸ª name 对åºçå¨è·¯å¾å被æå°åºæ¥ã妿ç»åºå¤ä¸ª name ä½ä¸º -t çåæ°ï¼name å°å¨å·²è®°å½çå¨è·¯å¾å ä¹å被æå°åºæ¥ãé项 -l 使å¾è¾åºä»¥ä¸ç§å¯ä»¥éç¨ä¸ºè¾å¥çæ ¼å¼æ¾ç¤ºãå¦ææ²¡æç»åºåæ°ï¼ æèåªç»åºäº -l é项ï¼å·²è®°å½çå½ä»¤çä¿¡æ¯å°è¢«æå°åºæ¥ã è¿åçï¼é¤é name æ²¡ææ¾å°æç»åºäºéæ³çé项ã
help [-s] [pattern]
æ¾ç¤ºå³äºå建å½ä»¤çæç¨çä¿¡æ¯ã妿æå®äº pattern (模å¼)ï¼ help ç»åºå³äºææå¹é pattern çå½ä»¤ç详ç»å¸®å©ï¼å¦åææå建å½ä»¤ç帮å©å shell æ§å¶ç»æå°è¢«æå°åºæ¥ã é项 -s éå¶ä¿¡æ¯æ¾ç¤ºä¸ºç®ççç¨æ³æ¦è¦ã è¿å 0ï¼é¤é没æå¹é pattern çå½ä»¤ã
history [n]
history -c
history -d offset
history -anrw [filename]
history -p arg [arg ...]
history -s arg [arg ...]
ä¸å¸¦é项çè¯ï¼æ¾ç¤ºå¸¦è¡å·çå½ä»¤åå²å表ãååºçè¡ä¸å«æ * çå·²ç»è¢«ä¿®æ¹è¿ãåæ° n 使å¾åªæ¾ç¤ºæå n è¡ã妿ç»åºäº filenameï¼å®è¢«ç¨åå岿件åï¼æ²¡æçè¯ï¼å°ä½¿ç¨ HISTFILE çå¼ä½ä¸ºå岿件åãé项妿ç»åºï¼åå·æä¸åæä¹ï¼
|
-c |
æ¸ç©ºåå²å表ï¼å é¤æææ¡ç®ã |
-d offset
å é¤ offset ä½ç½®çå岿¡ç®ã
|
-a |
å° ‘‘æ°’’ çå岿¡ç® (èªå½å bash ä¼è¯å¼å§è¾å¥çåå²å½ä»¤) 追å å°å岿件ä¸ã | ||
|
-n |
å°å°æªä»å岿件ä¸è¯»åçå岿¡ç®è¯»å¥å½ååå²å表ãè¿äºè¡æ¯å½å bash ä¼è¯å¼å§ä¹åï¼æè¿½å å°å岿件ä¸çè¡ã | ||
|
-r |
读åå岿件çå容ï¼ä½¿ç¨å®ä»¬ä½ä¸ºå½ååå²ã | ||
|
-w |
å°å½ååå²å表åå¥å岿件ï¼è¦çå岿件çåæå容ã | ||
|
-p |
对åç»ç args è¿è¡å岿¿æ¢ï¼å¨æ åè¾åºä¸æ¾ç¤ºç»æã ä¸ä¼å°ç»æåå¥åå²åè¡¨ãæ¯ä¸ª args é½å¿é¡»è¢«å¼ç¨ï¼æ¥ç¦æ¢ æ®éçå½ä»¤æ©å±ã | ||
|
-s |
å° args ä¿åå°åå²å表ä¸ï¼ä½ä¸ºåç¬çæ¡ç®ãåå²å表ä¸- çæåä¸ä¸ªå½ä»¤å¨æ·»å args ä¹å被å é¤ã |
è¿å 0ï¼é¤ééå°äºéæ³çé项ï¼è¯»/åå岿件åçé误ï¼å¨ -d ç åæ°ä¸- ç»åºäºæ æç offsetï¼æè对 -p çåç»åæ°è¿è¡å岿©å±å¤±è´¥ã
jobs [-lnprs] [
jobspec ... ]
jobs -x command [ args ... ]
第ä¸ç§å½¢å¼ååºæ£å¨è¿è¡çä½ä¸ãé项巿ä¸åæä¹ï¼
|
-l |
æ®éä¿¡æ¯ä¹å¤ï¼ååºè¿ç¨IDã |
|||
|
-p |
åªååºä½ä¸çè¿ç¨ç» leader çè¿ç¨IDã |
|||
|
-n |
åªæ¾ç¤ºä»ä¸æ¬¡ç¨æ·å¾ç¥å®ä»¬çç¶æä¹åï¼ç¶æåçæ¹åçä½ä¸çä¿¡æ¯ã |
|||
|
-r |
éå¶åªè¾åºæ£å¨è¿è¡çä½ä¸ã |
|||
|
-s |
éå¶åªè¾åºåæ¢çä½ä¸ã |
妿ç»åºäº jobspec è¾åºè¢«éå¶ä¸ºä»æ¤ä½ä¸çä¿¡æ¯ã è¿å 0ï¼é¤ééå°äºéæ³çé项æç»åºäºéæ³ç jobspecã
妿ç»åºäº -x é项ï¼ä½ä¸ jobs å° command æ args ä¸çä»»ä½ jobspec æ¿æ¢ä¸ºç¸åºçè¿ç¨ç»IDï¼æ§è¡ commandï¼ ä¼ éåæ° args ç»å®å¹¶è¿åå®çéåºç¶æã
kill [-s
sigspec | -n signum |
-sigspec] [pid | jobspec] ...
kill -l [sigspec | exit_status]
å以 pid æ jobspec 为åçè¿ç¨åéå为 sigspec æ signum çä¿¡å·ã sigspec å¯ä»¥æ¯ä¸ä¸ªä¿¡å·åç§°ï¼ç±»ä¼¼ SIGKILL æä¿¡å·ç¼å·ï¼ signum æ¯ä¸ä¸ªä¿¡å·ç¼å·ã妿 sigspec æ¯ä¸ä¸ªä¿¡å·åç§°ï¼é£ä¹å¯ä»¥æï¼ä¹å¯ä»¥æ²¡æ SIG åç¼ãå¦ææ²¡æç»åº sigspecï¼ é£ä¹åè®¾æ¯ SIGTERMã åæ° -l å°ååºææä¿¡å·çåç§°ã妿ç»åº -l æ¶è¿æä»»ä½åæ°ï¼å°ååºåæ°å¯¹åºçä¿¡å·åç§°ï¼è¿åç¶æ 0ã -l ç exit_status åæ°æ¯ä¸ä¸ªæ°åï¼æå®äºä¸ä¸ªä¿¡å·ç¼å·æè¢«ä¿¡å· ç»æ- ¢çè¿ç¨çéåºç¶æå¼ã kill è¿åçï¼å¦æè³å°æååéäºä¸ä¸ªä¿¡å·ï¼æèè¿ååï¼å¦æåçäºé误æéå°äº éæ³çé项ã
let arg [arg ...]
æ¯ä¸ª arg 齿¯è¦æ±å¼çç®æ¯è¡¨è¾¾å¼ (åè§ ç®æ¯æ±å¼ (ARITHMETIC EVALUATION) ç« è)ã妿æåä¸ä¸ªåæ° arg æ±å¼ç»ææ¯ 0ï¼ let è¿å 1ï¼å¦åè¿å 0ã
local [option] [name[=value] ...]
对æ¯ä¸ªåæ°å°å建ä¸ä¸ªå为 name çå±é¨åéå¹¶èµäºå¼ valueã option å¯ä»¥æ¯ä»»ä½ declare æ¥åçå¼ãå½ local ç¨äºå½æ°å鍿¶ï¼å®ä½¿å¾åé name ä½ç¨åå±éäºå½æ°åå®çåè¿ç¨ã没ææä½æ°æ¶ï¼ local å°å±é¨åéçå表åå°æ åè¾åºãä¸å¨å½æ°åé¨ä½¿ç¨ local ä¼å¯¼è´åºéãè¿å 0ï¼é¤éå¨å½æ°ä¹å¤ä½¿ç¨äº localï¼ ç»åºäºéæ³ç nameï¼ æè name æ¯ä¸ä¸ªåªè¯»çåéã
|
logout |
éåºç»å½ shellã |
popd [-n] [+n] [-n]
ä»ç®å½æ ä¸å 餿¡ç®ã没æåæ°çè¯ï¼ä»æ ä¸å é¤é¡¶å±ç®å½ï¼æ§è¡ cd 忢尿°çé¡¶å±ç®å½ã妿ç»åºäºåæ°ï¼æä¸åçå«ä¹ï¼
|
+n |
å é¤ dirs ç»åºçå表ä¸ä»å·¦æ°ç¬¬ n 个æ¡ç® (ä» 0 ç®èµ·)ãä¾å¦ï¼ ‘‘popd +0’’ å é¤ç¬¬ä¸ä¸ªç®å½ï¼ ‘‘popd +1’’ 第äºä¸ªã | ||
|
-n |
å é¤ dirs ç»åºçå表ä¸ä»å³æ°ç¬¬ n 个æ¡ç® (ä» 0 ç®èµ·)ãä¾å¦ï¼ ‘‘popd -0’’ å 餿åä¸ä¸ªç®å½ï¼ ‘‘popd -1’’ å é¤åæ°ç¬¬äºä¸ªã | ||
|
-n |
黿¢ä»æ ä¸å é¤ç®å½ä¹åæ¹åç®å½ï¼è¿æ¶åªå¯¹æ è¿è¡æä½ã |
妿å½ä»¤ popd æåï¼è¿è¦æ§è¡ä¸ä¸ª dirsï¼ è¿å 0ã popd è¿ååï¼å¦æéå°äºéæ³çé项ï¼ç®å½æ ä¸ºç©ºï¼æå®äºç®å½æ ä¸ä¸åå¨çæ¡ç®ï¼ æèæ¹åç®å½å¤±è´¥ã
printf format [arguments]
å¨ format æ§å¶ä¸å°æ ¼å¼åç arguments åå°æ åè¾åºã format æ¯ä¸ä¸ªå- 符串ï¼åå«ä¸ç§ç±»åçå¯¹è±¡ï¼æ®éå符ï¼è¢«ç®åå° å¤å¶å°æ åè¾åºï¼è½¬ä¹å- 符ï¼è¢«è½¬æ¢å¹¶å¤å¶å°æ åè¾åºï¼æ ¼å¼è¯´æï¼æ¯ä¸ä¸ª é½ä½¿å¾ç¸é»çä¸ä¸ä¸ª argument 被æå°åºæ¥ã 卿 åç printf(1) æ ¼å¼ä¹å¤ï¼%b ä½¿å¾ printf å±å¼ç¸åº arguments ä¸- çåææ 转ä¹åºåï¼%q ä½¿å¾ printf å° ç¸åºç argument 以ä¸ç§å¯ä»¥éç¨ä¸º shell è¾å¥çæ ¼å¼è¾åºã
format å¨éè¦æ¶è¢«éç¨ï¼ä»¥å¤çææç argumentsã 妿 format éè¦æ¯ææä¾çæ´å¤ç argumentsï¼ å¤åºçæ ¼å¼è¯´æè§ä¸ºå·²ç»æä¾äºç¸åºç 0 å¼æç©ºåç¬¦ä¸²ã æåçè¯è¿å弿¯ 0ï¼å¤±è´¥åæ¯é 0 å¼ã
pushd [-n]
[dir]
pushd [-n] [+n] [-n]
å°ç®å½æ¨å¥ç®å½æ ï¼æèè½®æ¢æ ä¸çå容ï¼ä½¿æ çé¡¶é¨æä¸ºå½åå·¥ä½ç®å½ã 没æåæ°æ¶ï¼äº¤æ¢é¡¶é¨ä¸¤ä¸ªç®å½ï¼è¿å 0ï¼é¤éç®å½æ 为空ã妿ç»åºäºåæ°ï¼ å®ä»¬æå¦ä¸å«ä¹ï¼
|
+n |
è½®æ¢æ ä¸å容ï¼ä½¿å¾ dirs ç»åºçå表ä¸ä»å·¦æ°ç¬¬ n 个ç®å½ (ä» 0 æ°èµ·) æä¸ºç®å½æ çé¡¶é¨ã | ||
|
-n |
è½®æ¢æ ä¸å容ï¼ä½¿å¾ dirs ç»åºçå表ä¸ä»å³æ°ç¬¬ n 个ç®å½ (ä» 0 æ°èµ·) æä¸ºç®å½æ çé¡¶é¨ã | ||
|
-n |
黿¢åæ 䏿·»å ç®å½ä¹åæ¹åç®å½ï¼è¿æ¶åªå¯¹æ è¿è¡æä½ã | ||
|
dir |
æ·»å dir å°æ é¡¶ï¼ä½¿å¾å®æä¸ºæ°çå½åå·¥ä½ç®å½ã |
妿å½ä»¤ pushd æåï¼è¿è¦æ§è¡ä¸ä¸ª dirsã å¦æä½¿ç¨ç¬¬ä¸ç§å½¢å¼ï¼ pushd è¿å 0ï¼é¤é cd 忢å°ç®å½ dir 失败ã使ç¨ç¬¬äºä¸å½¢å¼æ¶ï¼ pushd è¿å 0ï¼é¤éç®å½æ ä¸ºç©ºï¼æå®äºç®å½æ ä¸ä¸åå¨çåç´ ï¼æè 忢尿å®çæ°çå½åç®å½å¤±è´¥ã
pwd [-LP]
æå°å½åå·¥ä½ç®å½çç»å¯¹è·¯å¾åã妿ç»åºäº -P éé¡¹ï¼æè设置äºå建å½ä»¤ set ç -o physical éé¡¹ï¼æå°åºçè·¯å¾åä¸ä¸ä¼åå«ç¬¦å·é¾æ¥ãå¦æä½¿ç¨äº -L éé¡¹ï¼æå°åºçè·¯å¾ä¸å¯è½åå«ç¬¦å·é¾æ¥ã è¿å 0ï¼é¤éå¨è¯»åå½åç®å½åæ¶åºéæç»åºäºéæ³çé项ã
read [-ers]
[-u fd] [-t timeout] [-a
aname] [-p prompt] [-n
nchars] [-d
delim] [name ...]
仿 åè¾å¥è¯»å¥ä¸è¡ï¼æä»
-u
é项çåæ°ä¸ç»åºçæä»¶æè¿°ç¬¦
fd ä¸
读åï¼ç¬¬ä¸ä¸ªè¯è¢«èµäºç¬¬ä¸ä¸ª
name,
第äºä¸ªè¯è¢«èµäºç¬¬äºä¸ª
name,
以æ¤ç±»æ¨ï¼å¤ä½çè¯åå¶é´çåé符被èµäºæåä¸ä¸ª
name.
妿ä»è¾å¥æµè¯»å¥çè¯æ°æ¯åç§°æ°å°ï¼å©ä½çå称被èµäºç©ºå¼ã
IFS ä¸-
çåç¬¦è¢«ç¨æ¥å°è¡æåæè¯ã
åææ å符
(\)
被ç¨äºå é¤è¯»åçä¸ä¸å-
符çç¹æ®å«ä¹ï¼ä»¥åç»è¡ã
妿ç»åºäºé项ï¼å°åå«ä¸åå«ä¹ï¼
-a aname
è¯è¢«èµä»¥æ°ç»åé aname çè¿ç»ç䏿 ï¼ä» 0 å¼å§ãå¨èµæ°å¼ä¹åï¼ aname è¢«åæ¶å®ä¹ãå¶ä» name åæ°è¢«å¿½ç¥ã
-d delim
delim ç第ä¸ä¸ªå符被ç¨äºç»æè¾å¥è¡ï¼è䏿¯æ°è¡ç¬¦ã
|
-e |
妿æ åè¾å¥æ¥èªç»ç«¯ï¼å°ä½¿ç¨ readline (åè§ä¸é¢ç READLINE ç« è) æ¥è·å¾è¾å¥è¡ã |
-n nchars
read è¯»å¥ nchars 个å符åè¿åï¼è䏿¯çå¾ä¸æ´è¡è¾å¥ã
-p prompt
读åä»»ä½è¾å¥ä¹åï¼å¨æ åé误æ¾ç¤ºæç¤º promptï¼æ«å°¾æ²¡ææ°è¡ç¬¦ã æç¤ºåªæå¨è¾å¥æ¥èªç»ç«¯æ¶æä¼æ¾ç¤ºã
|
-r |
åææ ä¸ä½ä¸ºè½¬ä¹å- 符ãåææè¢«è®¤ä¸ºè¡çä¸é¨åãç¹æ®å°ï¼ä¸å¯¹åææ-æ°è¡ç¬¦ä¸ä½ä¸ºç»- è¡ã | ||
|
-s |
å®é模å¼ã妿è¾å¥æ¥èªç»ç«¯ï¼å符å°ä¸ä¼åæ¾ã |
-t timeout
ä½¿å¾ read è¶æ¶å¹¶è¿å失败ï¼å¦æå¨ timeout ç§å没æè¯»å¥å®æ´çä¸è¡è¾å¥ã 妿 read 䏿¯ä»ç»ç«¯æç®¡é读åè¾å¥ï¼é£ä¹è¿ä¸ªéé¡¹æ æã
|
-u fd |
仿件æè¿°ç¬¦ fd ä¸è¯»åè¾å¥ã |
å¦ææ²¡æç»åº namesï¼ è¯»åçä¸è¡å°èµäºåé REPLYã è¿å弿¯ 0ï¼é¤ééå°äº EOFï¼readP è¶æ¶ï¼æç»åºäºéæ³çæä»¶æè¿°ç¬¦ä½ä¸º -u çåæ°ã
readonly [-apf] [name ...]
ç»åºç name å°è¢«æ 记为åªè¯»çï¼ names çå¼ä¸è½è¢«åæ¥çèµå¼è¯- 奿¹åã妿ç»åºäº -f é项ï¼names 对åºç彿°ä¹è¢«æ è®°ãé项 -a éå¶åéåªè½æ¯æ°ç»ç±»åãå¦ææ²¡æç»åº name åæ°ï¼æè妿ç»åºäº -p é项ï¼å°æå°ææåªè¯»çåç§°ãé项 -p 使å¾è¾åºä»¥ä¸ç§å¯ä»¥è¢«éæ°ç¨ä½è¾å¥çæ ¼å¼æ¾ç¤ºã è¿å弿¯ 0ï¼é¤ééå°äºéæ³çéé¡¹ï¼ names ä¹ä¸ä¸æ¯ææç shell åéåï¼æé项 -f ä¸- ç»åºç name 䏿¯ä¸ä¸ªå½æ°ã
return [n]
使å¾ä¸ä¸ªå½æ°ä»¥æå®å¼ n éåºãå¦æå¿½ç¥äº nï¼ è¿åç¶ææ¯å½æ°ä½ä¸- æ§è¡çæåä¸ä¸ªå½ä»¤çéåºç¶æã妿å¨å½æ°å¤ä½¿ç¨ï¼ä½æ¯æ¯å¨ä¸ä¸ªä»¥ . (source) å½ä»¤æ§è¡çèæ¬åï¼å®ä½¿å¾ shell 䏿¢æ§è¡èæ¬ï¼è¿å n æèæ¬ä¸æ§è¡çæåä¸ä¸ªå½ä»¤çéåºç¶æã妿å¨å½æ°å¤ä½¿ç¨ï¼å¹¶ä¸ä¸æ¯å¨ä»¥ . æ§è¡çèæ¬åï¼è¿åç¶ææ¯åã
set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
ä¸å¸¦é项æ¶ï¼shell åéçåç§°åå¼å°ä»¥ä¸ç§å¯ä»¥éç¨ä¸ºè¾å¥çæ ¼å¼æ¾ç¤ºã è¾åºæ ¹æ®å½åè¯- è¨ç¯å¢è¿è¡æåºãæå®äºéé¡¹çæ¶åï¼å®ä»¬è®¾ç½®æåæ¶äº shell ç屿§ã å¤çå®é项ä¹åå©ä½çä»»ä½åæ°é½è¢«ä½ä¸ºä½ç½®åæ°çå¼è¢«èµå¼ï¼åå«èµäº $1, $2, ... $n. 妿ç»åºäºé项ï¼é£ä¹å·æä»¥ä¸å«ä¹ï¼
|
-a |
èªå¨å°è¢«ä¿®æ¹æå建çåéå彿°æ å¿ä¸ºå¯¼åºè³åç»- å½ä»¤çç¯å¢ä¸ã | ||
|
-b |
åå°ä½ä¸ç»ææ¶ç«å³æ¥åç¶æï¼è䏿¯å¨ä¸æ¬¡æ¾ç¤ºä¸»æç¤ºç¬¦åæ¥åãåªæå¨å¯ç¨ä½ä¸æ§å¶æ¶æææã | ||
|
-e |
ç«å³éåºï¼å¦æ simple command (ç®åå½ä»¤ï¼åè§ä¸é¢ç SHELL GRAMMAR è¯æ³) 以éé¶å¼éåºãshell ä¸ä¼éåºï¼å¦æå¤±è´¥çå½ä»¤æ¯ until æ while 循ç¯çä¸é¨åï¼ if è¯å¥çä¸é¨åï¼ && æ ⎪⎪ åºåçä¸é¨åï¼æèå½ä»¤çè¿å弿¯ç± ! 翻转å¾å°ãé对 ERR çé·é±ï¼å¦æè®¾ç½®çè¯ï¼å°å¨ shell éåºåæ§è¡ã | ||
|
-f |
ç¦æ¢è·¯å¾æ©å±ã | ||
|
-h |
卿¥æ¾å¹¶æ§è¡å½ä»¤æ¶ï¼è®°ä½å®ä»¬çä½ç½®ãè¿æ¯é»è®¤å¯ç¨çã | ||
|
-k |
ææä»¥èµå¼è¯å¥å½¢å¼åºç°çåæ°é½è¢«å å¥å°å½ä»¤æ§è¡çç¯å¢ä¸- ï¼ä¸ä»æ¯å½ä»¤ååé¢é£äºã | ||
|
-m |
çè§æ¨¡å¼ãä½ä¸æ§å¶è¢«å¯ç¨ã卿¯æè¿ä¸ªé项çç³»ç»ä¸- ï¼å®å¨äº¤äº shell 䏿¯é»è®¤å¯ç¨ç (åè§ä¸é¢ç JOB CONTROL ä½ä¸æ§å¶)ã åå°è¿ç¨å¨åç¬çè¿ç¨ç»ä¸- è¿è¡ï¼ç»ææ¶å°æå°åºåå«å®ä»¬éåºç¶æçä¸è¡ä¿¡æ¯ã | ||
|
-n |
读åå½ä»¤ï¼ä½ä¸æ§è¡ãè¿å¯ä»¥ç¨å¨æ£æ¥ shell èæ¬ä¸çè¯- æ³é误ãäº¤äº shell ä¸å®è¢«å¿½ç¥ã |
-o option-name
option-name
å¯ä»¥æ¯å¦ä¸ä¹ä¸ï¼
allexport
ä¸ -a ç¸åã
braceexpand
ä¸ -B ç¸åã
|
emacs |
ä½¿ç¨ emacs æ ·å¼çå½ä»¤è¡ç¼è¾çé¢ãè¿ä¸ªé项å¨äº¤äº shell ä¸- é»è®¤å¯ç¨ï¼é¤é shell 以 --noediting é项å¯å¨ã | ||
|
errexit |
ä¸ -e ç¸åã | ||
|
hashall |
ä¸ -h ç¸åã |
histexpand
ä¸ -H ç¸åã
|
history |
å许记å½å½ä»¤åå²ï¼å¦ä¸è¿° HISTORY ä¸- çæè¿°ãè¿ä¸ªé项å¨äº¤äº shell ä¸é»è®¤å¯ç¨ã |
ignoreeof
å®çæææ¯å¥½åå·²ç»æ§è¡äº shell å½ä»¤ ‘‘IGNOREEOF=10’’ 䏿 · (åè§ä¸é¢ç Shell Variables åé)ã
|
keyword |
ä¸ -k ç¸åã |
|||
|
monitor |
ä¸ -m ç¸åã |
noclobber
ä¸ -C ç¸åã
|
noexec |
ä¸ -n ç¸åã |
|||
|
noglob |
ä¸ -f ç¸åã nolog å½å被忽ç¥ã |
|||
|
notify |
ä¸ -b ç¸åã |
|||
|
nounset |
ä¸ -u ç¸åã |
|||
|
onecmd |
ä¸ -t ç¸åã |
physical
ä¸ -P ç¸åã
|
posix |
妿é»è®¤æä½ä¸ POSIX 1003.2 ä¸åçè¯ï¼æ¹å bash çè¡ä¸ºï¼æ¥æ»¡è¶³æ å (posix mode)ã |
privileged
ä¸ -p ç¸åã
|
verbose |
ä¸ -v ç¸åã |
|||
|
vi |
ä½¿ç¨ vi æ ·å¼çå½ä»¤è¡ç¼è¾çé¢ã |
|||
|
xtrace |
ä¸ -x ç¸åã |
妿ç»åºäºä¸å¸¦ option-name ç -o é项ï¼å½åé项çå¼å°è¢«æå°åºæ¥ã妿ç»åºäºä¸å¸¦ option-name ç +o é项ï¼å°å¨æ åè¾åºæ¾ç¤ºä¸ç³»åå¯ä»¥é建å½åé项设å®ç set å½ä»¤ã
|
-p |
æå¼ privileged mode (ç¹ææ¨¡å¼)ã å¨è¿ä¸ªæ¨¡å¼ä¸ï¼ä¸ä¼å¤ç $ENV å $BASH_ENV æä»¶ï¼shell 彿°ä¸ä¼ä»ç¯å¢ä¸- ç»§æ¿ï¼ç¯å¢ä¸å¦ææåé SHELLOPTSï¼ ä¹å°è¢«å¿½ç¥ã妿 shell å¯å¨æ¶çææç¨æ·(ç») ID ä¸çå®ç¨æ·(ç») ID ä¸åï¼å¹¶ä¸æ²¡æç»åº -p éé¡¹ï¼ å°æ§è¡è¿äºæä½ï¼ææç¨æ· ID å°è®¾ç½®ä¸ºçå®ç¨æ· IDã妿å¯å¨æ¯ç»åºäº -p éé¡¹ï¼ææç¨æ· ID ä¸ä¼ 被éç½®ãå°è¿ä¸ªé项å³éä½¿å¾ææç¨æ·åç» ID 被设置为çå®ç¨æ·åç» IDã | ||
|
-t |
读åå¹¶æ§è¡ä¸ä¸ªå½ä»¤ä¹åéåºã | ||
|
-u |
å¨è¿è¡åæ°æ©å±æ¶ï¼å°æªå®ä¹çåéä½ä¸ºé误ã妿è¯å¾æ©å±æªå®ä¹çåéï¼shell å°è¾åºä¸æ¡éè¯¯æ¶æ¯; 妿æ¯é交äºç shellï¼shell å°ä»¥éé¶å¼éåºã | ||
|
-v |
å¨è¯»åè¾å¥çåæ¶æå°åºæ¥ã | ||
|
-x |
æ©å±æ¯ä¸ªç®åå½ä»¤ä¹åï¼æ¾ç¤º PS4 çå¼ï¼æ¥çæ¾ç¤ºå½ä»¤å宿©å±åçåæ°ã | ||
|
-B |
shell æ§è¡è±æ¬å·æ©å± (åè§ä¸é¢ç Brace Expansion)ã è¿æ¯é»è®¤å许çã | ||
|
-C |
å¦æè®¾ç½®çè¯ï¼ bash 使ç¨éå®åæä½ç¬¦ >, >&, å <> æ¶ï¼ä¸ä¼è¦çå·²åå¨çæä»¶ãå¯ä»¥ä½¿ç¨éå®åæä½ç¬¦ >| ä»£æ¿ > æ¥å建è¾åºæä»¶ï¼ä»èç»è¿è¿ä¸ªéå¶ã | ||
|
-H |
å许 Enable ! æ ·å¼çå岿¿æ¢ãå¨äº¤äº shell ä¸- è¿ä¸ªé项æ¯é»è®¤å¯ç¨çã | ||
|
-P |
å¦æè®¾ç½®çè¯ï¼shell 卿§è¡ç±»ä¼¼ cd çï¼æ¹åå½åå·¥ä½ç®å½çå½ä»¤æ¶ï¼ä¸ä¼è·é符å·è¿æ¥ãå®å°ä½¿ç¨ç©ççç®å½ç»ææ¥ä»£æ¿ãé»è®¤æåµä¸ï¼ bash 卿§è¡æ¹åå½åç®å½çå½ä»¤æ¶è·éè·¯å¾çé»è¾é¾ã | ||
|
-- |
妿è¿ä¸ªé项没æåæ°ï¼å°åæ¶ä½ç½®åæ°çå®ä¹ãå¦åï¼ä½ç½®åæ°å°è®¾ç½®ä¸º argï¼å³ä½¿å®ä»¬ä»¥ - å¼å§ã | ||
|
- |
éç¥ä¿¡å·çç»æï¼ä½¿å¾ææå©ä½ç arg 被èµäºä½ç½®åæ°ã -x å -v é项被å³éãå¦ææ²¡æ argï¼ä½ç½®åæ°å°ä¸ä¼æ¹åã |
è¿ä¸ªé项é»è®¤æ¯å³éçï¼é¤éå¦å¤è¯´æãä½¿ç¨ + è䏿¯ - 使å¾è¿äºé项被å³éãé项é½å¯ä»¥ä½ä¸ºåæ°ï¼ å¨ shell å¯å¨æ¶æå®ãå½åçé项éåå¯ä»¥ä» $- æ¾å°ãè¿å弿»æ¯çï¼é¤ééå°äºéæ³çé项ã
shift [n]
ä» n+1 ... å¼å§çé项被éå½å为 $1 .... ä» $# åä¸ç´å° $#-n+1 çéé¡¹è¢«åæ¶å®ä¹ã n å¿é¡»æ¯éè´æ´æ°ï¼å°äºæçäº $#ã妿 n æ¯ 0ï¼ä¸ä¼æ¹ååæ°ãå¦ææ²¡æç»åº nï¼ å°±åå®å®æ¯ 1ã妿 n æ¯ $# 大ï¼ä½ç½®åæ°ä¸ä¼æ¹åãè¿åå¼å¤§äº 0ï¼å¦æ n æ¯ $# 大æå°äº 0ï¼å¦åè¿å 0ã
shopt [-pqsu] [-o] [optname ...]
å¯¹äºæ§å¶å¯éç shell è¡ä¸ºçåéï¼æ¹åå®ä»¬çå¼ã没æé项æèæ -p é项æ¶ï¼å°æ¾ç¤ºææå¯è®¾ç½®çé项å表ï¼ä»¥åå®ä»¬æ¯å¦å·²ç»è®¾ç½®çæç¤ºã -p 使å¾è¾åºä»¥ä¸ç§å¯ä»¥è¢«éç¨ä¸ºè¾å¥ç形弿¾ç¤ºã å¶ä»é项æå¦ä¸å«ä¹ï¼
|
-s |
å许(设置) æ¯ä¸ª optnameã | ||
|
-u |
ç¦æ¢(åæ¶) æ¯ä¸ª optnameã | ||
|
-q |
ç¦æ¢é常çè¾åº (å®é模å¼)ï¼è¿åç¶ææç¤ºäº optname æ¯å¦è¢«è®¾ç½®ã 妿坹 -q ç»åºäºå¤ä¸ª optname åæ°ï¼å¦æææ optname é½è¢«å许ï¼è¿åå¼å°±æ¯ 0ï¼ å¦åè¿åéé¶å¼ã | ||
|
-o |
éå¶ optname çå¼ä¸ºå建å½ä»¤ set ç -o é项å®ä¹çå¼ã |
å¦æä½¿ç¨ -s æ -u æ¶æ²¡æç»åº optname åæ°ï¼æ¾ç¤ºå°åå«éäºè¢«è®¾ç½®æè¢«åæ¶çé项ã é¤éå¦å¤è¯´æï¼shopt é项é»è®¤è¢«ç¦æ¢(åæ¶)ã
è¿åå¼å¨ååºéé¡¹æ¶æ¯ 0ï¼å¦æææ optname é½è¢«å许çè¯ï¼å¦åæ¯éé¶å¼ã å½è®¾ç½®æåæ¶é项æ¶ï¼è¿å弿¯ 0ï¼é¤é optname æ¯éæ³ç shell é项ã
shopt
é项çå表æ¯ï¼
cdable_vars
å¦æè®¾ç½®çè¯ï¼å建å½ä»¤ cd ç忰妿䏿¯ç®å½ï¼å°±å宿¯ä¸ä¸ªåéï¼å®ç弿¯è¦åæ¢å°çç®å½åã
|
cdspell |
å¦æè®¾ç½®çè¯ï¼ cd å½ä»¤ä¸ç®å½çç»å¾®æ¼åé误è½å¤å¾ä»¥çº æ- £ãæ£æ¥çéè¯¯åæ¬å符éä½ï¼ç¼ºåç¬¦ï¼ éå¤è¾å¥åä¸å- 符ã妿æ¾å°äºæ£ç¡®çå¼ï¼å°æå°æ£ç¡®çæä»¶åï¼å½ä»¤å°ç»§ç»ã è¿ä¸ªé项åªè½å¨äº¤äº shell ä¸ä½¿ç¨ã |
checkhash
å¦æè®¾ç½®çè¯ï¼bash 卿§è¡å½ä»¤åæ£æµæ£å表ä¸çå½ä»¤æ¯å¦å- å¨ã 妿ä¸ä¸ªè¢«æ£åçå½ä»¤ä¸ååå¨ï¼å°è¿è¡æ£å¸¸çè·¯å¾æç´¢ã
checkwinsize
å¦æè®¾ç½®çè¯ï¼bash 卿¯æ¡å½ä»¤æ§è¡åæ£æµçªå£å¤§å°ï¼å¦æéè¦çè¯å°±æ´æ° LINES å COLUMNS çå¼ã
|
cmdhist |
å¦æè®¾ç½®çè¯ï¼ bash è¯çå°ä¸ä¸ªå¤è¡å½ä»¤çææè¡æ¾å°åä¸ä¸ªå岿¡ç®ä¸ãè¿æ ·ä½¿å¾ å¤è¡å½ä»¤å¯ä»¥å®¹æå°éæ°ä¿®æ¹ã | ||
|
dotglob |
å¦æè®¾ç½®çè¯ï¼ bash 伿以 ‘.’ å¼å§çæä»¶ååå«å¨è·¯å¾åæ©å±çç»æä¸ã |
execfail
å¦æè®¾ç½®çè¯ï¼é交äºç shell 妿ä¸è½æ§è¡ä½ä¸ºåæ°æä¾ç»å建å½ä»¤ exec çæä»¶æ¶å°ä¸ä¼éåºã交äºç shell å¨ exec 失败æ¶ä¸ä¼éåºã
expand_aliases
å¦æè®¾ç½®çè¯ï¼å«å被æ©å±ï¼å°±åä¸é¢ ALIASES ä¸- 讲å°ç䏿 ·ãè¿ä¸ªé项å¨äº¤äº shell 䏿¯é»è®¤å¯ç¨çã
|
extglob |
å¦æè®¾ç½®çè¯ï¼å°å许ä¸é¢ Pathname Expansion ä¸- æå°çæ©å±æ¨¡å¼å¹éç¹æ§ã |
histappend
å¦æè®¾ç½®çè¯ï¼å¨ shell éåºæ¶ï¼åå²å表å°è¿½å å°ä»¥ HISTFILE çå¼ä¸ºåçæä»¶ä¹åï¼è䏿¯è¦çæä»¶ã
histreedit
å¦æè®¾ç½®çè¯ï¼å¹¶ä¸æ£å¨ä½¿ç¨ readlineï¼ ç¨æ·å¯ä»¥éæ°ä¿®æ¹å¤±è´¥çå岿¿æ¢ã
histverify
å¦æè®¾ç½®çè¯ï¼å¹¶ä¸æ£å¨ä½¿ç¨ readlineï¼ å岿¿æ¢çç»æä¸ä¼ç«å³ä¼ ç» shell è§£éå¨ãç»æè¡è¢«å è½½å° readline ç¼è¾ç¼å²åºï¼å许è¿è¡è¿ä¸æ¥çä¿®æ¹ã
hostcomplete
å¦æè®¾ç½®çè¯ï¼å¹¶ä¸æ£å¨ä½¿ç¨ readlineï¼ bash å°è¯ç对æ- £å¨è¿è¡è¡¥å¨çåå« çè¯è¿è¡ä¸»æºåè¡¥å¨ (åè§ä¸é¢ç READLINE ä¸ç Completing 段è½)ãè¿æ¯é»è®¤å许çã
huponexit
å¦æè®¾ç½®çè¯ï¼å¨äº¤äºçç»å½ shell éåºæ¶ bash å°åææä½ä¸ååº SIGHUP ä¿¡å·ã
interactive_comments
å¦æè®¾ç½®çè¯ï¼å°å许å¨äº¤äº shell ä¸éå°ä»¥ # å¼å¤´çè¯æ¶å¿½ç¥è¿ä¸ªè¯åä¸è¡ä¸ææå©ä½çå符 (åè§ä¸é¢ç COMMENTS 注é)ã è¿ä¸ªé项æ¯é»è®¤å许çã
|
lithist |
å¦æè®¾ç½®çè¯ï¼å¹¶ä¸åè®¸äº cmdhist é项ï¼å¤è¡çå½ä»¤å¨ä¿å- å°åå²ä¸æ¶å°å嫿°è¡ç¬¦ï¼è䏿¯å¨å¯è½çå°æ¹ä½¿ç¨åå·ã |
login_shell
妿 shell ä½ä¸ºç»å½ shell å¯å¨ï¼å°è®¾ç½®è¿ä¸ªé项 (åè§ä¸é¢ç å¯å¨(INVOCATION) )ã è¿ä¸ªå¼ä¸å¯ä¿®æ¹ã
mailwarn
å¦æè®¾ç½®çè¯ï¼å¹¶ä¸ bash æ£å¨æ£æµä¸æ¬¡æ£æµä»¥æ¥è¢«å- åè¿çé®ä»¶ï¼ å°æ¾ç¤º ‘‘The mail in mailfile has been read’’(mailfile ä¸çé®ä»¶å·²è¢«è¯»å)ã
no_empty_cmd_completion
å¦æè®¾ç½®çè¯ï¼å¹¶ä¸æ£å¨ä½¿ç¨ readlineï¼ è¯å¾å¨ç©ºè¡ä¸æ§è¡è¡¥å¨æ¶ï¼ bash ä¸ä¼æç´¢ PATH æ¥æ¥æ¾å¯è½çè¡¥å¨ã
nocaseglob
å¦æè®¾ç½®çè¯ï¼ bash è¿è¡è·¯å¾æ©å±æ¶ä½¿ç¨å¤§å°åä¸æææ¹å¼å¹éæä»¶å(åè§ä¸é¢ç Pathname Expansion è·¯å¾æ©å±)ã
nullglob
å¦æè®¾ç½®çè¯ï¼ bash å°å许ä¸å¹éä»»ä½æä»¶çæ¨¡å¼æ©å±ä¸ºç©ºå- 符串è䏿¯å®ä»¬èªèº«(åè§ä¸é¢ç Pathname Expansion è·¯å¾æ©å±)ã
progcomp
å¦æè®¾ç½®çè¯ï¼å°å¯ç¨å¯ç¼ç¨è¡¥å¨åè½ (åè§ä¸é¢ç Programmable Completion)ã è¿ä¸ªé项æ¯é»è®¤å¯ç¨çã
promptvars
å¦æè®¾ç½®çè¯ï¼æç¤ºå符串è¦ç»è¿ä¸é¢ PROMPTING ä¸- æè¿°çæ©å±ï¼ç¶åè¿è¦ç»è¿åéååæ°æ©å±ãè¿ä¸ªé项æ¯é»è®¤å¯ç¨çã
restricted_shell
shell 设置è¿ä¸ªé项ï¼å¦æå®æ¯ä»¥å鿍¡å¼å¯ç¨ç (åè§ä¸é¢ç åéçshell(RESTRICTED SHELL) ç«è)ãè¿ä¸ªå¼ä¸è½ä¿®æ¹ã卿§è¡å¯å¨æä»¶æ¶ï¼å®ä¸ä¼è¢«éç½®ï¼ä½¿å¾å¯å¨æä»¶å¯ä»¥ å¾ç¥ shell æ¯å¦æ¯åéçã
shift_verbose
å¦æè®¾ç½®çè¯ï¼å建å½ä»¤ shift å¨åç§»éè¶è¿ä½ç½®åæ°çä¸ªæ°æ¶æå°ä¸æ¡éè¯¯æ¶æ¯ã
sourcepath
å¦æè®¾ç½®çè¯ï¼å建å½ä»¤ source (.) ä½¿ç¨ PATH ä¸- ç弿¥æ¥æ¾åå«ä½ä¸ºåæ°ç»åºçæä»¶ãè¿ä¸ªé项é»è®¤æ¯å¯ç¨çã
xpg_echo
å¦æè®¾ç½®çè¯ï¼å建å½ä»¤ echo é»è®¤æ©å±åææ è½¬ä¹åºåã
suspend [-f]
æèµ· shell çæ§è¡ï¼ç´å°æ¶å°ä¸ä¸ª SIGCONT ä¿¡å·ãé项 -f è¡¨ç¤ºå¦æè¿æ¯ä¸ä¸ªç»å½ shellï¼é£ä¹ä¸è¦æç¤ºï¼ç´æ¥æèµ·ãè¿å弿¯ 0ï¼é¤é shell æ¯ç»å½ shell 并䏿²¡ææå® -fï¼ æè没æå¯ç¨ä½ä¸æ§å¶ã
test expr
[ expr ]
è¿åç¶æå¼ 0 æ 1ï¼æ ¹æ®æ¡ä»¶è¡¨è¾¾å¼ expr çæ±å¼èå®ãæ¯ä¸ªæä½ç¬¦åæä½æ°é½å¿é¡»æ¯ä¸ä¸ªåç¬çåæ°ã表达å¼ä½¿ç¨ä¸é¢ æ¡ä»¶è¡¨è¾¾å¼ (CONDITIONAL EXPRESSIONS) ä¸çæä½æé ã
表达å¼å¯ä»¥ç¨ä¸åæä½ç¬¦ç»åï¼ä»¥ä¼å级çéåºååºã
|
! expr |
å¼ä¸ºçï¼å¦æ expr 为åã |
( expr )
è¿å expr çå¼ãæ¬å·å¯ä»¥ç¨æ¥è¶è¶æä½ç¬¦çä¸è¬ä¼å级ã
expr1 -a expr2
å¼ä¸ºçï¼å¦æ expr1 å expr2 é½ä¸ºçã
expr1 -o expr2
å¼ä¸ºçï¼å¦æ expr1 æ expr2 为çã
test
å [
使ç¨åºäºåæ°ä¸ªæ°çä¸ç³»åè§åï¼å¯¹æ¡ä»¶è¡¨è¾¾å¼è¿è¡æ±å¼ã
0 arguments
表达å¼ä¸ºåã
1 argument
表达å¼ä¸ºçï¼å½ä¸ä»å½åæ°é空ã
2 arguments
å¦æç¬¬ä¸ä¸ªåæ°æ¯ !ï¼è¡¨è¾¾å¼ä¸ºçï¼å½ä¸ä»å½ç¬¬äºä¸ªåæ°ä¸ºç©ºã å¦æç¬¬ä¸ä¸ªåæ°æ¯ä¸é¢ æ¡ä»¶è¡¨è¾¾å¼ (CONDITIONAL EXPRESSIONS) ä¸- ååºçåç®æ¡ä»¶è¿ç®ç¬¦ä¹ä¸ï¼è¡¨è¾¾å¼ä¸ºçï¼å½ä¸ä»å½åç®æµè¯ä¸ºçã å¦æç¬¬ä¸ä¸ªåæ°ä¸æ¯åæ³çåç®æ¡ä»¶è¿ç®ç¬¦ï¼è¡¨è¾¾å¼ä¸ºåã
3 arguments
å¦æç¬¬äºä¸ªåæ°æ¯ä¸é¢ æ¡ä»¶è¡¨è¾¾å¼ (CONDITIONAL EXPRESSIONS) ä¸- ååºçäºè¿å¶æ¡ä»¶æä½ç¬¦ä¹ä¸ï¼è¡¨è¾¾å¼çç»ææ¯ä½¿ç¨ç¬¬ä¸å第ä¸ä¸ªåæ°ä½ä¸ºæä½æ°çäºè¿å¶æµè¯çç»æã å¦æç¬¬ä¸ä¸ªåæ°æ¯ !ï¼è¡¨è¾¾å¼å¼æ¯ä½¿ç¨ç¬¬äºå第ä¸ä¸ªåæ°è¿è¡ååæ°æµè¯çç»æååã å¦æç¬¬ä¸ä¸ªåæ°æ¯ (ï¼ç¬¬ä¸ä¸ªåæ°æ¯ )ï¼ç»ææ¯å¯¹ç¬¬äºä¸ªåæ°è¿è¡ååæ°æµè¯çç»æã å¦åï¼è¡¨è¾¾å¼ä¸ºåãè¿ç§æåµä¸ -a å -o æä½ç¬¦è¢«è®¤ä¸ºäºè¿å¶æä½ç¬¦ã
4 arguments
å¦æç¬¬ä¸ä¸ªåæ°æ¯ !ï¼ç»ææ¯ç±å©ä½åæ°ç»æçä¸åæ°è¡¨è¾¾å¼ç»æååã å¦åï¼è¡¨è¾¾å¼è¢«æ ¹æ®ä¸é¢ååºçä¼å级è§åè§£éå¹¶æ§è¡ã
5 ææ´å¤ arguments
表达å¼è¢«æ ¹æ®ä¸é¢ååºçä¼å级è§åè§£éå¹¶æ§è¡ã
|
times |
对 shell 以å shell è¿è¡çè¿ç¨ï¼æå°ç´¯è®¡çç¨æ·åç³»ç»æ¶é´ã è¿åç¶ææ¯ 0ã |
trap [-lp] [arg] [sigspec ...]
å½ shell æ¶å°ä¿¡å· sigspec æ¶ï¼å½ä»¤ arg å°è¢«è¯»åå¹¶æ§è¡ãå¦ææ²¡æç»åº arg æèç»åºçæ¯ -, æææå®çä¿¡å·è¢«è®¾ç½®ä¸ºå®ä»¬çåå§å¼ (è¿å¥ shell æ¶å®ä»¬çå¼)ã妿 arg æ¯ç©ºåç¬¦ä¸²ï¼ sigspec æå®çä¿¡å·è¢« shell åå®å¯å¨çå½ä»¤å¿½ç¥ã妿 arg ä¸åå¨ï¼å¹¶ä¸ç»åºäº -p é£ä¹ä¸æ¯ä¸ª sigspec ç¸å³èçé·é±å½ä»¤å°è¢«æ¾ç¤ºåºæ¥ãå¦ææ²¡æç»åºä»»ä½åæ°ï¼æåªç»åºäº -pï¼ trap å°æå°åºä¸æ¯ä¸ªä¿¡å·ç¼å·ç¸å³çå½ä»¤åè¡¨ãæ¯ä¸ª sigspec å¯ä»¥æ¯ <signal.h> å®ä¹çä¿¡å·åï¼ææ¯ä¸ä¸ªä¿¡å·ç¼å·ã 妿 sigspec æ¯ EXIT (0)ï¼å½ä»¤ arg å°å¨ shell éåºæ¶æ§è¡ã妿 sigspec æ¯ DEBUG, å½ä»¤ arg å°å¨æ¯ä¸ªç®åå½ä»¤ (simple commandï¼åè§ä¸é¢ç SHELL GRAMMAR) ä¹åæ§è¡ã妿 sigspec æ¯ ERR, å½ä»¤ arg å°å¨ä»»ä½å½ä»¤ä»¥éé¶å¼éåºæ¶æ§è¡ãå¦æå¤±è´¥çå½ä»¤æ¯ until æ while 循ç¯çä¸é¨åï¼ if è¯å¥çä¸é¨åï¼ && æ ⎪⎪ åºåçä¸é¨åï¼æèå½ä»¤çè¿å弿¯éè¿ ! 转åèæ¥ï¼ ERR é·é±å°ä¸ä¼æ§è¡ãé项 -l ä½¿å¾ shell æå°ä¿¡å·åå对åºç¼å·çå表ã shell 忽ç¥çä¿¡å·ä¸è½è¢«æææéç½®ãå¨åè¿ç¨ä¸- ï¼è¢«ææçä¿¡å·å¨è¿ç¨å建æ¶è¢«é置为åå§å¼ã è¿åå¼ä¸ºåï¼å¦æ sigspec éæ³ï¼å¦å trap è¿åçã
type [-aftpP] name [name ...]
没æé项æ¶ï¼æç¤ºæ¯ä¸ª name å°å¦ä½è¢«è§£éï¼å¦æç¨ä½ä¸ä¸ªå½ä»¤åãå¦æä½¿ç¨äº -t éé¡¹ï¼ type æå°ä¸ä¸ªå符串ï¼å容æ¯å¦ä¸ä¹ä¸ï¼ alias, keyword, function, builtin, æ file ï¼ å¦æ name å嫿¯ä¸ä¸ªå«åï¼shell ä¿çå- ï¼å½æ°ï¼å建å½ä»¤æç£çæä»¶ãå¦ææ²¡ææ¾å° nameï¼ é£ä¹ä¸ä¼æå°ä»»ä½ä¸è¥¿ï¼è¿åéåºç¶æåãå¦æä½¿ç¨äº -p éé¡¹ï¼ type è¿å妿 name ä½ä¸ºå½ä»¤åï¼å°è¢«æ§è¡çç£çæä»¶åï¼æèè¿å空ï¼å¦æ ‘‘type -t name’’ ä¸ä¼è¿å file. é项 -P é项强å¶å¯¹æ¯ä¸ª name æç´¢ PATHï¼ å³ä½¿ ‘‘type -t name’’ ä¸ä¼è¿å file. 妿å½ä»¤å¨æ£åä¸ï¼ -p å -P å°æå°æ£åçå¼ï¼è䏿¯ PATH ä¸- é¦ååºç°çé£ä¸ä¸ªæä»¶ãå¦æä½¿ç¨äº -a éé¡¹ï¼ type æå°ææåå«å¯æ§è¡çåç§° name çåºåãç»æåæ¬å«åå彿°ï¼å½ä¸ä»å½æ²¡æåæ¶ä½¿ç¨ -p é项ãä½¿ç¨ -a æ¶ä¸ä¼æ¥æ¾æ£åä¸çå½ä»¤è¡¨ãé项 -f 黿¢ shell è¿è¡æ¥æ¾ï¼å°±åå¨å建å½ä»¤ command ä¸ä¸æ ·ã type è¿åçï¼å¦ææ¾å°äºä»»ä½åæ°ãä»ä¹é½æ²¡æ¾å°åè¿ååã
ulimit [-SHacdflmnpstuv [limit]]
卿¯æå®çç³»ç»ä¸ï¼å¯¹ shell åå®å¯å¨çè¿ç¨ï¼æä¾å¯¹å¯ç¨èµæºçæ§å¶ã é项 -H å -S æå®ä¸ºæç»èµæºè®¾å®ç硬æ§åææ§éé¢ã 硬æ§éé¢å¨è®¾ç½®åä¸è½å¢å ï¼ææ§éé¢å¯ä»¥å¢å ï¼ç´å°ä¸ç¡¬æ§éé¢ç¸çã å¦ææ²¡æç»åº -H æ -S é项ï¼å°åæ¶è®¾ç½®ç¡¬æ§åææ§éé¢ã limit çå¼å¯ä»¥æ¯ä¸ä¸ªæ°åï¼å使¯æå®èµæºçååå¼ï¼æèæ¯ç¹æ®å¼ hard, soft, æ unlimited ä¹ä¸ï¼ææå嫿¯å½å硬æ§éé¢ï¼å½åææ§éé¢å没æéé¢ãå¦æå¿½ç¥äº limitï¼ å°æå°åºå½åå¯¹èµæºçææ§éé¢å¼ï¼é¤éç»åºäº -H é项ã彿å®å¤äºä¸ä¸ª èµæºæ¶ï¼éé¢åç§°ååä½å°å¨å¼ä¹åæå°åºæ¥ãå¶ä»é项æç§å¦ä¸æä¹è§£éï¼
|
-a |
æ¥åææå½åéé¢ |
|||
|
-c |
core æä»¶çæå¤§å¼ |
|||
|
-d |
è¿ç¨æ°æ®æ®µçæå¤§å¼ |
|||
|
-f |
shell å建çæä»¶çæå¤§å¼ |
|||
|
-l |
ååä¸å¯ä»¥éå®çæå¤§å¼ |
|||
|
-m |
常驻ååçæå¤§å¼ |
|||
|
-n |
æå¼çæä»¶æè¿°ç¬¦æå¤§ä¸ªæ° (大夿°ç³»ç»ä¸å许设置è¿ä¸ªå¼) |
|||
|
-p |
管é大å°ï¼ä»¥ 512 åèçå为åä½ (è¿ä¸ªå¼å¯è½ä¸è½è®¾ç½®) |
|||
|
-s |
æ çæå¤§å¼ |
|||
|
-t |
cpu æ¶é´æ»æ°çæå¤§å¼ï¼ä»¥ç§è®¡ |
|||
|
-u |
ç¨æ·å¯ä»¥è¿è¡çæå¤§è¿ç¨æ° |
|||
|
-v |
shell å¯ç¨çèæååæ»éçæå¤§å¼ |
妿ç»åºäº limitï¼ å®å°æ¯æå®èµæºçæ°éé¢ (é项 -a åªæ¾ç¤ºå®ä»¬)ãå¦ææ²¡æç»åºé项ï¼åå设æ -fã å¼çéå¢é´éæ¯ 1024 å- èï¼é¤äº -t å使¯ ç§ï¼ -p å使¯ 512 åèçå个æ°ï¼ -n å -u æ¯ä¸å¯è°èçå¼ãè¿å 0ï¼é¤éç»åºäºéæ³çé项æåæ°ï¼æèå¨è®¾ç½®æ°çé颿¶åçäºé误ã
umask [-p] [-S] [mode]
ç¨æ·å建æä»¶çæ©ç 被设置为 mode. 妿 mode 以æ°å- å¼å§ï¼å®è¢«è§£é为ä¸ä¸ªå«è¿å¶æ°ï¼å¦å被解éä¸ºç±»ä¼¼äº chmod(1) æ¥åç符å·å½¢å¼çæ¨¡å¼æ©ç ãå¦æå¿½ç¥äº modeï¼ å°æå°å½åæ©ç å¼ãé项 -S ä½¿å¾æ©ç 以符å·å½¢å¼æå°ï¼é»è®¤è¾åºæ¯å«è¿å¶æ°ã妿ç»åºäº -p é项ï¼å¹¶ä¸å¿½ç¥äº modeï¼ è¾åºå°æ¯ä¸ç§å¯ä»¥éç¨ä¸ºè¾å¥çå½¢å¼ãè¿å弿¯ 0ï¼å¦ææåæ¹åäºæ¨¡å¼ï¼æè没æç»åº modeã å¶ä»æåµè¿ååã
unalias [-a] [name ...]
ä»å·²å®ä¹çå«åå表ä¸å é¤ nameã妿ç»åºäº -a å°å 餿æå«åå®ä¹ãè¿å弿¯çï¼é¤éç»åºç name 䏿¯å·²å®ä¹çå«åã
unset [-fv] [name ...]
å°æ¯ä¸ª name 对åºçåéæå½æ°å é¤ãå¦ææ²¡æç»åºéé¡¹ï¼æèç»åºäº -v éé¡¹ï¼ name ä»åæ¬ shell åéãåªè¯»çåéä¸è½è¢«åæ¶å®ä¹ã妿ç»åºäº -f éé¡¹ï¼ name ä»åæ¬ shell 彿°ï¼å½æ°çå®ä¹å°è¢«å é¤ãæ¯ä¸ªè¢«åæ¶å®ä¹çåéæå½æ°é½è¢«ä»åç»- å½ä»¤çç¯å¢ä¸å é¤ã 妿 RANDOM, SECONDS, LINENO, HISTCMD, FUNCNAME, GROUPS, æè DIRSTACK ä¸- çä»»ä½ä¸ä¸ªè¢«åæ¶å®ä¹ï¼å®ä»¬å°ä¸§å¤±ç¹æ®ç屿§ï¼å³ä½¿å®ä»¬åæ¥è¢«éæ°å®ä¹ã éåºç¶ææ¯çï¼é¤é name ä¸å卿æ¯åªè¯»çã
wait [n]
ç徿å®çè¿ç¨ï¼è¿åå®çç»æ¢ç¶æã n å¯ä»¥æ¯è¿ç¨ ID æä¸ä¸ªä½ä¸å·ï¼å¦æç»åºçæ¯ä½ä¸å·ï¼å°çå¾ä½ä¸ç管éä¸- ææè¿ç¨ãå¦ææ²¡æç»åº nï¼ å°ç徿æå½åå¤äºæ¿æ´»ç¶æçåè¿ç¨ï¼è¿åç¶ææ¯ 0ã妿 n æå®äºä¸åå¨çè¿ç¨æä½ä¸ï¼è¿åç¶ææ¯ 127ãå¦åï¼è¿åç¶ææ¯æç- å¾çæåä¸ä¸ªè¿ç¨æä½ä¸çéåºç¶æã
åéçshell(RESTRICTED SHELL)
妿 bash 以 rbash åç§°å¯å¨ï¼æèå¯å¨æ¶ä½¿ç¨äº -r é项ï¼é£ä¹å®æä¸ºåéç shellã åéç shell ä¸è¬ç¨æ¥å»ºç«ä¸ä¸ªæ¯æ åç shell åå°æ´å¤æ§å¶çç¯å¢ã å®çè¡ä¸ºä¸ bash ä¸è´ï¼é¤äºä¸åè¡ä¸ºæ¯ä¸å许ç (disallowed) æä¸ä¼è¿è¡ç (not performed)ã
|
• |
ä½¿ç¨ cd æ¥æ¹åè·¯å¾ï¼ | ||
|
• |
设置æåæ¶ SHELL, PATH, ENV, æ BASH_ENV åéçå¼ï¼ | ||
|
• |
æå®çå½ä»¤åä¸åå« / ï¼ | ||
|
• |
æå®åå« / çæä»¶åä½ä¸ºä¼ éç»å建å½ä»¤ . çåæ°ï¼ | ||
|
• |
æå®å嫿æ (slash) çæä»¶åä½ä¸º -p é项çåæ°ï¼ä¼ éç» hash å建å½ä»¤ï¼ | ||
|
• |
å¯å¨æ¶ä» shell ç¯å¢ä¸å¯¼å¥ (import) 彿°å®ä¹ï¼ | ||
|
• |
å¯å¨æ¶è§£é shell ç¯å¢ä¸ SHELLOPTS çå¼ï¼ | ||
|
• |
ä½¿ç¨ >, >|, <>, >&, &>, å >> çéå®åæä½ç¬¦éå®åè¾åºï¼ | ||
|
• |
ä½¿ç¨ exec å建å½ä»¤æ¥ä»¥å¦ä¸ä¸ªå½ä»¤æ¿æ¢ shellï¼ | ||
|
• |
ä½¿ç¨ enable å建å½ä»¤ç -f å -d é项æ¥å¢å åå é¤å建å½ä»¤ï¼ | ||
|
• |
ä½¿ç¨ enable å建å½ä»¤æ¥å许åç¦æ¢ shell å建å½ä»¤ï¼ | ||
|
• |
æå® command å建å½ä»¤ç -p éé¡¹ï¼ | ||
|
• |
ä½¿ç¨ set +r æ set +o restricted æ¥å³éå鿍¡å¼ã |
è¿äºéå¶å¨ææå¯å¨æä»¶è¯»åä¹åæä¼çæã
å½ä¸ä¸ª shell èæ¬ä½ä¸ºä¸ä¸ªå½ä»¤æ§è¡æ¶ (åè§ä¸é¢ç å½ä»¤æ§è¡(COMMAND EXECUTION) ç« è)ï¼ rbash å³é为æ§è¡èæ¬èåµå (spawn) ç shell çææéå¶ã
åè§("SEE ALSO")
Bash
Reference Manual, Brian Fox and Chet Ramey
The Gnu Readline Library, Brian Fox and Chet Ramey
The Gnu History Library, Brian Fox and Chet Ramey
Portable Operating System Interface (POSIX) Part 2: Shell
and
Utilities, IEEE
sh(1), ksh(1), csh(1)
emacs(1), vi(1)
readline(3)
æä»¶(FILES)
/bin/bash
bash 坿§è¡æä»¶
/etc/profile
ç³»ç»èå´çåå§åæä»¶ï¼ç»å½ shell 伿§è¡å®
˜/.bash_profile
个人åå§åæä»¶ï¼ç»å½ shell 伿§è¡å®
˜/.bashrc
ä¸ªäººçæ¯ä¸ªäº¤äºå¼ shell å¯å¨æ¶æ§è¡çæä»¶
˜/.bash_logout
个人çç»å½ shell æ¸çæä»¶ï¼å½ä¸ä¸ªç»å½ shell éåºæ¶ä¼æ§è¡å®
˜/.inputrc
个人ç readline åå§åæä»¶
ä½è(AUTHORS)
Brian Fox, Free
Software Foundation
bfox@gnu.org
Chet Ramey, Case
Western Reserve University
chet@ins.CWRU.Edu
æ¥åBUGS (BUG REPORTS)
å¦æä½ åç°ä¸ä¸ª bash ä¸ç bugï¼ä½ åºå½æ¥åå®ã使¯é¦åï¼ ä½ åºå½ç¡®å®å®ççæ¯ä¸ä¸ª bugï¼å¹¶ä¸å®å¨ä½ 使ç¨çææ°çæ¬ç bash ä¸åå¨ã
䏿¦ä½ 认å®åå¨é£æ ·ä¸ä¸ª bugï¼ä½¿ç¨ bashbug å½ä»¤æ¥æäº¤ä¸ä¸ªé误æ¥åã å¦æä½ æåºå®ä½åï¼é¼å±ä½ ç¨é®æ¿çæ¹å¼æäº¤ä¸ä»½ï¼ 建议åæå³ bash “å²å¦” (‘philosophical’) ç “é误æ¥å” å¯ä»¥å¯ç» bug-bash@gnu.org æèè´´å° Usenet æ°é»ç» gnu.bash.bug ä¹ä¸ã
ææé误æ¥ååºå½åæ¬ï¼
|
bash ççæ¬å· |
硬件信æ¯åæä½ç³»ç»
|
ç¨æ¥ç¼è¯çç¼è¯å¨ |
||
|
对 bug è¡ä¸ºçæè¿° |
å¯ä»¥æ¿æ´»è¿ä¸ª bug çä¸ä¸ªçå°çèæ¬æèä»ä¹ “ç§è¯” (recipe)
bashbug ä¼èªå¨å¨å®æä¾çé误æ¥å模æ¿ä¸æå¥åä¸é¡¹ã
å³äºè¿ä»½æå页çè¯è®ºåé误æ¥åè¯·ç´æ¥æäº¤å° chet@ins.CWRU.Edu.
BUGS
å®å¤ªå¤§äºï¼å¹¶ä¸æç¹æ¢ã
bash åä¼ ç»çæ¬ç sh ä¹é´æä¸äºç»å¾®çå·®å«ï¼å¤§é¨åæ¯å 为 POSIX è§çº¦çè¦æ±ã
å«åæºå¶å¨ä¸äºåºç¨ä¸ä¼æ··æ·ã
Shell å建å½ä»¤å彿°ä¸å¯ç»æ¢/éæ°å¼å§ã
ç»åçå½ä»¤åä½¿ç¨ ‘a ; b ; c’ å½¢å¼çå½ä»¤åºåå¨è¿ç¨è¯å¾æåæ¶ä¸è½å¾å¥½å¤çã å½ä¸ä¸ªè¿ç¨ä¸æ¢ï¼shell ä¼ç«å³æ§è¡åºåä¸çä¸ä¸æ¡å½ä»¤ã ä¹å¯ä»¥å°å½ä»¤çåºåæ¾å¨åæ¬å·ä¸ï¼æ¥å¼ºå¶å¯å¨å shellï¼è¿æ ·å°±å¯ä»¥å°å®ä»¬ä½ä¸ºä¸ä¸ªåå䏿¢äºã
å¨ $(...) å½ä»¤æ¿æ¢ä¸ç注éä¸ä¼è¢«è§£éï¼ç´å°æ§è¡æ¿æ¢çæ¶åã è¿å°å»¶è¿æ¥éï¼ç´å°å½ä»¤å¼å§æ§è¡ä¹åç䏿®µæ¶é´ã
æ°ç»åéè¿ä¸è½å¯¼åº (export)ã
[䏿çç»´æ¤äºº]
è¢ä¹é§ <bbbush@163.com>
[ä¸æçææ°æ´æ°]
2004.03.05
ãä¸å½linux论åmanæå页翻è¯è®¡åã:
http://cmpp.linuxforum.net
è·
æ¬é¡µé¢ä¸æçç±ä¸æ
man
æå页计åæä¾ã
䏿 man
æå页计åï¼https://github.com/man-pages-zh/manpages-zh