BASH 1

中文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 ä¿¡å·æ¶èªå¨è®¾ç½®ã

MAIL

妿è¿ä¸ªåæ°è®¾ç½®ä¸ºä¸ä¸ªæä»¶åï¼å¹¶ä¸æ²¡æè®¾ç½®ç¯å¢åé 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.FFp çå¼å³å®äºæ¯ä¸æ¯åå«å°æ°ä½ã

å¦ææ²¡æè®¾ç½®è¿ä¸ªå¼ï¼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