📄 refcards.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><HTML><HEAD><TITLE>Reference Cards</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.57"><LINKREL="HOME"TITLE="Advanced Bash-Scripting Guide"HREF="index.html"><LINKREL="PREVIOUS"TITLE="Contributed Scripts"HREF="contributed-scripts.html"><LINKREL="NEXT"TITLE="A Sed and Awk Micro-Primer"HREF="sedawk.html"><METAHTTP-EQUIV="Content-Style-Type"CONTENT="text/css"><LINKREL="stylesheet"HREF="common/kde-common.css"TYPE="text/css"><METAHTTP-EQUIV="Content-Type"CONTENT="text/html; charset=iso-8859-1"><METAHTTP-EQUIV="Content-Language"CONTENT="en"><LINKREL="stylesheet"HREF="common/kde-localised.css"TYPE="text/css"TITLE="KDE-English"><LINKREL="stylesheet"HREF="common/kde-default.css"TYPE="text/css"TITLE="KDE-Default"></HEAD><BODYCLASS="APPENDIX"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#AA0000"VLINK="#AA0055"ALINK="#AA0000"STYLE="font-family: sans-serif;"><DIVCLASS="NAVHEADER"><TABLEWIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">Advanced Bash-Scripting Guide: An in-depth exploration of the art of shell scripting</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="contributed-scripts.html">Prev</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom"></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="sedawk.html">Next</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="APPENDIX"><H1><ANAME="REFCARDS">Appendix B. Reference Cards</A></H1><P>The following reference cards provide a useful <ICLASS="EMPHASIS">summary</I> of certain scripting concepts. The foregoing text treats these matters in more depth and gives usage examples.</P><DIVCLASS="TABLE"><HR><ANAME="AEN16755"></A><P><B>Table B-1. Special Shell Variables</B></P><TABLEBORDER="1"CLASS="CALSTABLE"><THEAD><TR><THALIGN="LEFT"VALIGN="TOP">Variable</TH><THALIGN="LEFT"VALIGN="TOP">Meaning</TH></TR></THEAD><TBODY><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">$0</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Name of script</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">$1</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Positional parameter #1</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">$2 - $9</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Positional parameters #2 - #9</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">${10}</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Positional parameter #10</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">$#</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Number of positional parameters</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">"$*"</TT></TD><TDALIGN="LEFT"VALIGN="TOP">All the positional parameters (as a single word) *</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">"$@"</TT></TD><TDALIGN="LEFT"VALIGN="TOP">All the positional parameters (as separate strings)</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">${#*}</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Number of command line parameters passed to script</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">${#@}</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Number of command line parameters passed to script</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">$?</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Return value</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">$$</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Process ID (PID) of script</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">$-</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Flags passed to script (using <ICLASS="EMPHASIS">set</I>)</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">$_</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Last argument of previous command</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">$!</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Process ID (PID) of last job run in background</TD></TR></TBODY></TABLE><HR></DIV><P><BCLASS="COMMAND">*</B> <ICLASS="EMPHASIS">Must be quoted</I>, otherwise it defaults to <SPANCLASS="QUOTE">"<TTCLASS="VARNAME">$@</TT>"</SPAN>.</P><DIVCLASS="TABLE"><HR><ANAME="AEN16825"></A><P><B>Table B-2. TEST Operators: Binary Comparison</B></P><TABLEBORDER="1"CLASS="CALSTABLE"><THEAD><TR><THALIGN="LEFT"VALIGN="TOP">Operator</TH><THALIGN="LEFT"VALIGN="TOP">Meaning</TH><THALIGN="LEFT"VALIGN="TOP">-----</TH><THALIGN="LEFT"VALIGN="TOP">Operator</TH><THALIGN="LEFT"VALIGN="TOP">Meaning</TH></TR></THEAD><TBODY><TR><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TD> </TD><TD> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP">Arithmetic Comparison</TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP">String Comparison</TD><TDALIGN="LEFT"VALIGN="TOP"> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-eq</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Equal to</TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">=</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Equal to</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">==</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Equal to</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-ne</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Not equal to</TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">!=</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Not equal to</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-lt</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Less than</TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">\<</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Less than (ASCII) *</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-le</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Less than or equal to</TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-gt</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Greater than</TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">\></TT></TD><TDALIGN="LEFT"VALIGN="TOP">Greater than (ASCII) *</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-ge</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Greater than or equal to</TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-z</TT></TD><TDALIGN="LEFT"VALIGN="TOP">String is empty</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-n</TT></TD><TDALIGN="LEFT"VALIGN="TOP">String is not empty</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TD> </TD><TD> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP">Arithmetic Comparison</TD><TDALIGN="LEFT"VALIGN="TOP">within double parentheses (( ... ))</TD><TD> </TD><TD> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">></TT></TD><TDALIGN="LEFT"VALIGN="TOP">Greater than</TD><TD> </TD><TD> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">>=</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Greater than or equal to</TD><TD> </TD><TD> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION"><</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Less than</TD><TD> </TD><TD> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION"><=</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Less than or equal to</TD><TD> </TD><TD> </TD><TD> </TD></TR></TBODY></TABLE><HR></DIV><P><BCLASS="COMMAND">*</B> <ICLASS="EMPHASIS">If within a double-bracket</I> [[ ... ]] <ICLASS="EMPHASIS">test construct, then no escape</I> \ <ICLASS="EMPHASIS">is needed.</I></P><DIVCLASS="TABLE"><HR><ANAME="AEN16937"></A><P><B>Table B-3. TEST Operators: Files</B></P><TABLEBORDER="1"CLASS="CALSTABLE"><THEAD><TR><THALIGN="LEFT"VALIGN="TOP">Operator</TH><THALIGN="LEFT"VALIGN="TOP">Tests Whether</TH><THALIGN="LEFT"VALIGN="TOP">-----</TH><THALIGN="LEFT"VALIGN="TOP">Operator</TH><THALIGN="LEFT"VALIGN="TOP">Tests Whether</TH></TR></THEAD><TBODY><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-e</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File exists</TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-s</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File is not zero size</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-f</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File is a <ICLASS="EMPHASIS">regular</I> file</TD><TD> </TD><TD> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-d</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File is a <ICLASS="EMPHASIS">directory</I></TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-r</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File has <ICLASS="EMPHASIS">read</I> permission</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-h</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File is a <ICLASS="EMPHASIS">symbolic link</I></TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-w</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File has <ICLASS="EMPHASIS">write</I> permission</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-L</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File is a <ICLASS="EMPHASIS">symbolic link</I></TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-x</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File has <ICLASS="EMPHASIS">execute</I> permission</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-b</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File is a <ICLASS="EMPHASIS">block device</I></TD><TD> </TD><TD> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-c</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File is a <ICLASS="EMPHASIS">character device</I></TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-g</TT></TD><TDALIGN="LEFT"VALIGN="TOP"><ICLASS="EMPHASIS">sgid</I> flag set</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-p</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File is a <ICLASS="EMPHASIS">pipe</I></TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-u</TT></TD><TDALIGN="LEFT"VALIGN="TOP"><ICLASS="EMPHASIS">suid</I> flag set</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-S</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File is a <AHREF="devproc.html#SOCKETREF">socket</A></TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-k</TT></TD><TDALIGN="LEFT"VALIGN="TOP"><SPANCLASS="QUOTE">"sticky bit"</SPAN> set</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-t</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File is associated with a <ICLASS="EMPHASIS">terminal</I></TD><TD> </TD><TD> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-N</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File modified since it was last read</TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">F1 -nt F2</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File F1 is <ICLASS="EMPHASIS">newer</I> than F2 *</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-O</TT></TD><TDALIGN="LEFT"VALIGN="TOP">You own the file</TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">F1 -ot F2</TT></TD><TDALIGN="LEFT"VALIGN="TOP">File F1 is <ICLASS="EMPHASIS">older</I> than F2 *</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-G</TT></TD><TDALIGN="LEFT"VALIGN="TOP"><ICLASS="EMPHASIS">Group id</I> of file same as yours</TD><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">F1 -ef F2</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Files F1 and F2 are <ICLASS="EMPHASIS">hard links</I> to the same file *</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">!</TT></TD><TDALIGN="LEFT"VALIGN="TOP"><SPANCLASS="QUOTE">"NOT"</SPAN> (reverses sense of above tests)</TD><TD> </TD><TD> </TD><TD> </TD></TR></TBODY></TABLE><HR></DIV><P><BCLASS="COMMAND">*</B> <ICLASS="EMPHASIS">Binary</I> operator (requires two operands).</P><DIVCLASS="TABLE"><HR><ANAME="AEN17071"></A><P><B>Table B-4. Parameter Substitution and Expansion</B></P><TABLEBORDER="1"CLASS="CALSTABLE"><THEAD><TR><THALIGN="LEFT"VALIGN="TOP">Expression</TH><THALIGN="LEFT"VALIGN="TOP">Meaning</TH></TR></THEAD><TBODY><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">${var}</TT></TD><TDALIGN="LEFT"VALIGN="TOP">Value of <TTCLASS="PARAMETER"><I>var</I></TT>, same as <TTCLASS="PARAMETER"><I>$var</I></TT></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"> </TD><TDALIGN="LEFT"VALIGN="TOP"> </TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">${var-DEFAULT}</TT></TD><TDALIGN="LEFT"VALIGN="TOP">If <TTCLASS="PARAMETER"><I>var</I></TT> not set, evaluate expression as <TTCLASS="PARAMETER"><I>$DEFAULT</I></TT> *</TD></TR><TR><TD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -