Impressive list. However, I think the 'docs' section is not quite right, as it was intended to link to existing documentation elsewhere. Personally, I'd put this subpage into the 'scripting' namespace (although, for such a big page, that's probably not fitting for every bit of information in there). We could also introduce a new namespace, like 'misc'... Moving pages is pretty simple for wiki admins. Ask #zsh on freenode. -- ft Feel free to move it wherever you wish, but do leave a redirect here. I don't feel knowledgeable enough about the organization of the wiki to have an opinion one way or another. -- jessew zrjam, thanks so much for the additions you've done! I really appreciate it. -- jessew I just learned about the [[http://zsh.dotsrc.org/Doc/Release/zsh_25.html|various]] [[http://zsh.dotsrc.org/Doc/Release/zsh_26.html|and]] [[http://zsh.dotsrc.org/Doc/Release/zsh_27.html|quite]] [[http://zsh.dotsrc.org/Doc/Release/zsh_28.html|useful]] [[http://zsh.dotsrc.org/Doc/Release/zsh_29.html|indexes]] [[http://zsh.dotsrc.org/Doc/Release/zsh_30.html|available]]. And I wish I'd known of them sooner, and I wish the [[http://zsh.dotsrc.org/Doc/Release/zsh_5.html#IDX78|links]] to specific functions, options, etc. were both more visible, and more transparent; what I'd like to be able to do was write: %[[man:compdef]]% and have it automagically link to http://zsh.dotsrc.org/Doc/Release/zsh_19.html#IDX1162 -- we should be able to do this, right? ====== Character Index, e.g. What does this character mean? ====== This is intended to be a list of the various and multiple meanings in the zsh of all the characters on the keyboard. Flags, punctuation, etc. It is sorted in ASCII order, but with case-folded. While it is intended to be complete, it is not so yet. (Quite a bit of the phrasing used below was copied from the [[http://www.bash2zsh.com/zsh_refcard/refcard.pdf |ZSH Reference Card]].) // // ==== ! ==== - ''!(//pat//)'' is a KSH_GLOB operator meaning anything but //pat// - ''!//expr//'' is the general form of history expansion - ''!'' is a history event designator expansion referring to the previous command - ''%!'' is a prompt expansion for the current history event number - ''!'' is a shell variable automatically set to the Process ID of last background process - ''//STRING// != //PATTERN//'' is a conditional expression operator which is true if //STRING// does not match //PATTERN// - ''! //expr//'' is a conditional expression operator which is true if //expr// is false - ''!//-foo//'' prevents //-foo// from being completed within the argument specifiers used by the _arguments completion utility function ==== " ==== - ''"'' serves to mark double quoted strings, a type of quoting (the others are single quoting (') and backslash quoting (\)); in double quotes, parameter expansion, command substitution, and limited backslash quoting occur. - ''!"'' turns off the history mechanism for the current list ==== # ==== - ''//X//#'' is an [[http://zsh.sourceforge.net/Doc/Release/zsh_13.html#SEC62|EXTENDED_GLOB globbing pattern]] meaning zero or more occurrences of element //X// - ''//X//##'' is an [[http://zsh.sourceforge.net/Doc/Release/zsh_13.html#SEC62|EXTENDED_GLOB globbing pattern]] meaning one or more occurrences of element //X// - ''(#//X//)'' is the form of all [[http://zsh.sourceforge.net/Doc/Release/zsh_13.html#SEC66|EXTENDED_GLOB globbing flags]], where //X// is the flag. - ''#'', in scripts (or interactively, with INTERACTIVE_COMMENTS set) makes the rest of the line a comment. - ''!#'' is a history expansion referring to the current command line so far. - ''%#'' is a prompt expansion used to identify root shells. - ''${//var//#//pat//}'' is a parameter expansion form returning the minimum match of //pat// removed from head - ''${//var//##//pat//}'' is a parameter expansion form returning the maximum match of //pat// removed from head - ''${//var//:#//pat//}'' is a parameter expansion form returning //var// unless //pat// matches, then empty - ''${#//var//}'' is a parameter expansion form returning the length of //var// in words (if it's an array) or bytes otherwise. - ''#'' is a shell variable automatically set to the number of arguments to a script or function - ''#'' at the start of the matching pattern in a s/l/r/ history expansion with HIST_SUBST_PATTERN set anchors the pattern to the start of string to be matched - ''//BASE//#//N//'' inside an arthemitic expression, means the integer //N// expressed in the base //BASE// ==== $ ==== - ''$//var//'' performs variable (i.e. parameter) substitution/expansion - ''${//var//}'' performs parameter substitution/expansion, and allows parameter expansion flags and alternative parameter expansion forms. - ''$(//cmds//)'' turns into the output of //cmds//, i.e. does command substitution (this is a synonym for ''`//cmds//`'' (backquoting)) - ''$((//expr//))'' performs arithmetic substitution, i.e. it does math on //expr// and turns into the result - '':$'' is a [[http://zsh.dotsrc.org/Doc/Release/zsh_13.html#SEC48|history expansion]] word selector referring to the last command argument; it's often used in the form of ''!!:$'' which expands to the last argument of the previous command - ''$'' is a shell variable automatically set to the process ID of the main shell process ==== % ==== - ''%'' is a glob qualifier referring to special files - ''%'' is a parameter expansion flag (e.g. ''${(%)//VARIABLE//}'') indicating that the string in //VARIABLE// should be prompt expanded - ''%b'' is a glob qualifier referring to block special files - ''%c'' is a glob qualifier referring to character special files - ''%//[optional integer]single character//'' forms all prompt expansions; rather than duplicating them here, please look them up under their single character - ''%////%'' is a prompt expansion that expands to a percent character (i.e. "%") - ''!?//str//?:%'' is a history expansion referring to the most recent word in the history matching //str// - ''!%'' or ''!:%'' is a history expansion referring to the word matched by the last ''!?//str//?'' history expansion (the ''%'' is a word selector/designator) - ''${//var//%//pat//}'' is a parameter expansion form returning the minimum match of pat removed from the tail end of the value of //var// - ''${//var//%////%//pat//}'' is a parameter expansion form returning the maximum match of pat removed from the tail end of the value of //var// - ''%'' in arithmetic expansions is the modulus operator - ''%='' in arithmetic expansions is the modulus assignment operator - ''%d'' in the value of the ''format'' completion zstyle refers to the specific format - ''%'' at the start of the matching pattern in a s/l/r/ history expansion with HIST_SUBST_PATTERN set anchors the pattern to the end of string to be matched - ''%//NUMBER//'' is a job control reference to //NUMBER// job - ''%//STRING//'' is a job control reference to a job whose command line begins with //STRING// - ''%?//STRING//'' is a job control reference to a job whose command line contains //STRING// - ''%////%'' **OR** ''%+'' are job control references to the current job - ''%-'' is a job control references to the previous job ==== & ==== - ''&&'' is a command separator which makes the following command run only if the previous one succeeded, and a arithmetic operator which means logical AND - ''//EXP1// && //EXP2//'' is a conditional expression operator which is true if //EXP1// and //EXP2// are true - ''|&'' is a command separator which is shorthand for ''2>&1 |'', which sends stdout and stderr to stdin of the next command - ''&'' is a sublist terminator which puts the pipeline before it into the background, and an arithmetic operator which means bitwise AND - ''&!'' or ''&|'' are sublist terminators which background and disown (don't track in the jobs table) their sublists - '':&'' is a expansion modifier causing a previously set of search and replace strings to be re-used - ''<& //number//'' is a redirection operator which duplicates stdin from file descriptor //number// - ''>& //number//'' is a redirection operator which duplicates stdout from file descriptor //number// - ''<& -'' is a redirection operator which closes stdin - ''>& -'' is a redirection operator which closes stdout - ''<& p'' is a redirection operator which moves coprocess input to stdin - ''>& p'' is a redirection operator which moves stdout to coprocess output - ''>& //word//'' or ''&> //word//'' are redirection operators which redirect both stdout and stderr to //word// (''>&'' will be interpreted as above, if possible; use ''&>'' if to remove ambiguity) - ''>&| //word//'' or ''>&! //word//'' or ''&>| //word//'' or ''&>! //word//'' are redirection operators which silently overwrite //word//, and redirect both stdout and stderr - ''>>& //word//'' or ''&>> //word//'' are redirection operators which redirect both stdout and stderr to //word// in append mode - ''>>&| //word//'' or ''>>&! //word//'' or ''&>>| //word//'' or ''&>>! //word//'' are redirection operators which silently create //word//, and redirect both stdout and stderr to it in append mode - '';&'' is a list terminator used in ''case'' statements which causes fall-through, i.e. the next //list// will be executed, too - ''&='' or ''&&='' are arithmetic operators which combine bitwise or logical AND with assignment - ''&'' in the replacement string in a :s/l/r/ expansion modifier substitution is replaced by the matched text ==== ' ==== - ''////'////'' is used to quote things; it is referred as single-quoting - ''////'////'////'' (two single quotes), when the option RC_QUOTES is on, get turned into one single quote when found inside a single-quoted string; otherwise, they just vanish (i.e. they end the string, and start a new one, which gets automatically joined with the last one) - ''$'//str//'////'' is processed like the ''print'' builtin does, and quoted ==== ( ==== - ''(//list//)'' executes //list// in a subshell - ''(//choices//)'' enclose //choices// in a foreach statement - optionally surround patterns in a case statement - optional when defining a function - ''(//pat//)'' is a glob pattern that groups globbing patterns - ''(//pat1//|//pat2//)'' is a glob pattern that matches either //pat1// or //pat2// - ''//K//(//pat//)'' (where //K// is a KSH_GLOB operator) is the form of such operators - ''(#//X//)'' is the form of a globbing flag, where //X// is the flag in question (listed under their individual letters) Note that some flags take additional arguments, which are included in the parentheses. Also note that all such flags require the EXTENDED_GLOB option. - ''//pat//(//glob qualifiers//)'' is the form for glob qualifiers, which are listed under their individual letters - surround the list executed in process substitution - surround the command executed in command substitution ($()) - a pair surrounds arithmetic expansion - may be used to surround parameter expansion flags, instead of '':'' - group tests within a double square bracket test expression - doubled, activates arithmetic expansion within test expressions - surround arguments to math functions - surround list of options to be excluded in the argument specifiers used by the _arguments completion utility function - surround explicit list of possible completions for arguments to options in the argument specifiers used by the _arguments completion utility function - sets of arguments in the argument specifiers used by the _arguments completion utility function - can be used for grouping in a conditional expression ==== ) ==== - See ''('' - ''%)'' is a prompt expansion that expands to a close paren character (i.e. ")") ==== * ==== - ''*'' is a glob pattern referring to any string - ''*'' is a glob qualifier referring to executable plain files (e.g. "*(*)") - ''%%**/%%'' is a glob pattern referring to any number of directories, i.e. all subdirectories - ''%%***/%%'' same as "%%**/%%" but also follows symlinks - ''*(//pat//)'' is a KSH_GLOB operator meaning zero or more copies of //pat// - ''*'' is a shell variable automatically set to the list of positional parameters within a script or function; it is a synonym for ''argv'' - ''*'' in arithmetic expansions is the multiplication operator - ''%%**%%'' in arithmetic expansions is the exponentiation operator - ''*='' in arithmetic expansions is the multiplication assignment operator - ''%%**%%='' in arithmetic expansions is the exponentiation assignment operator - ''%*'' is a prompt expansion expanding to current time of day in 24-hour format, with seconds. - ''*'' is a history word selector which selects all the arguments on the selected command line, or a null value if there are none. - **Other meanings not yet listed here...** ==== + ==== - ''%%+%%//cmd//'' is a glob qualifier referring to files for which //cmd// evaluates to ''true'' (//cmd// must be a single word) - ''$+VARIABLE'' returns 0 if VARIABLE is not set, and 1 if it is set (even if it is set to the empty string) - ''+(//pat//)'' is a KSH_GLOB operator meaning one or more copies of //pat// - **Other meanings not yet listed here...** ==== , ==== ==== - ==== - ''-'' is a glob qualifier toggling link following behavior; i.e. does globing work on symbolic link targets, or the link files themselves (default is link files, not targets) - '''' is a glob pattern meaning any number between //num1// and //num2//; if //num1// missing, from 0 to //num2//; if //num2// missing, from //num1// to infinity - ''-'' is a precommand modifier that prepends a dash to the command name stored in argv[0] - ''-'' is a shell variable automatically set to the flags supplied to the shell - **Other meanings not yet listed here...** ==== . ==== - ''.'' is a glob quantifier referring to plain files - ''. //FILE//'' is a shell builtin that sources //FILE//, i.e. reads commands from it and executes them - **Other meanings not yet listed here...** ==== / ==== - ''/'' is a glob quantifier referring to directories - ''%%**%%/'' is a glob pattern referring to any number of directories, i.e. all subdirectories - ''-/'' is an option to the _path_files completion function causing it to complete only directories - **Other meanings not yet listed here...** ==== 0 ==== - ''-0'' is a synonym for the CORRECT option - ''0'' is a shell variable automatically set to the name used to invoke the current shell; with the FUNCTION_ARGZERO option set, reflects the name of functions and scripts while within them - ''0x'' **OR** ''0X'' begins a hexadecimal literal integer ==== 1 ==== ==== 2 ==== ==== 3 ==== - ''-3'' is a synonym for the NO_NO_MATCH option ==== 4 ==== - ''-4'' is a synonym for the GLOB_DOTS option ==== 5 ==== - ''-5'' is a synonym for the NOTIFY option ==== 6 ==== - ''-6'' is a synonym for the BG_NICE option ==== 7 ==== - ''-7'' is a synonym for the IGNORE_EOF option ==== 8 ==== - ''-8'' is a synonym for the MARK_DIRS option ==== 9 ==== - ''-9'' is a synonym for the AUTO_LIST option ==== : ==== - '':'' is a shell builtin that does nothing, and returns true, but without stdout/stderr output - '':'' separates parts of a zstyle context - ''://class//:'' is the form of all character classes, where class is one of ''alnum'', ''alpha'', etc - **Other meanings not yet listed here...** ==== ; ==== - '';'' terminates a sublist, and is a synonym for a newline - '';;'' terminates a particular case within a case statement - '';&'' terminates a particular case within a case statement, but falls through - '';|'' terminates a particular case within a case statement, but keeps looking for matching cases - **Other meanings not yet listed here...** ==== < ==== - '''' is a glob pattern meaning any number between //num1// and //num2//; if //num1// missing, from 0 to //num2//; if //num2// missing, from //num1// to infinity - ''<(//cmds//)'' is a type of process substitution (expansion), which expands to a device file (or FIFO) holding the output of //cmds// - ''//STRING1// < //STRING2//'' is a conditional expression operator which is true if //STRING1// comes before STRING2 based on ASCII value of their characters - **Other meanings not yet listed here...** ==== = ==== - ''='' is a glob quantifier referring to sockets - ''=(//cmds//)'' is a type of process substitution (expansion), which expands to temporary file holding the output of //cmds// - ''//STRING// == //PATTERN//'' **OR** ''//STRING// = //PATTERN//'' are conditional expression operators which are true if //STRING// matches //PATTERN// (The single equals form is obsolete.) - ''//STRING// =~ //REGEXP//'' is a conditional expression operator which is true if //STRING// matches //REGEXP// - **Other meanings not yet listed here...** ==== > ==== - '''' is a glob pattern meaning any number between //num1// and //num2//; if //num1// missing, from 0 to //num2//; if //num2// missing, from //num1// to infinity - ''>(//cmds//)'' is a type of process substitution (expansion), which expands to a device file (or FIFO) which will be read for standard input by //cmds// - ''//STRING1// > //STRING2//'' is a conditional expression operator which is true if //STRING1// comes after STRING2 based on ASCII value of their characters - **Other meanings not yet listed here...** ==== ? ==== - ''?'' is a glob pattern matching any single character - ''?(//pat//)'' is a KSH_GLOB operator matching zero or 1 copy of //pat// - ''!?//str//'' is a history expansion referring to the last command containing //str// - ''%?'' is a prompt expansion for the return status of most recently executed command - ''${//var//:?//str//}'' is a parameter expansion form which returns //var// if it is non-null, otherwise prints //str//(if given) as an error and aborts - ''?'' is a shell variable automatically set to the status of the most recently executed command - ''//test//?//true_exp//://false_exp//'' is the C ternary if statement, usable only within arithmetic expressions ==== @ ==== - ''@(//pat//)'' is a KSH_GLOB operator used to group patterns - ''@'' is a glob quantifier referring to symbolic links - ''%@'' is a prompt expansion expanding to the current time, in 12 hour (AM/PM) format. (''%t'' is a synonym) - ''@'' is a parameter expansion flag causing arrays to be expanded even within double quotes - ''@'' is a shell variable automatically set to the list of positional parameters within a script or function; unlike ''argv'', it splits into words even within double quotes. ==== a ==== - ''-a'' is a synonym for the ALL_EXPORT option - ''-A'' and ''+A'' are options to the ''set'' builtin used for creating arrays - ''(#a//num//)'' is an EXTENDED_GLOB globbing flag causing //num// approximations to be permitted in matches - ''a'' is a glob qualifier specifying a particular access time; its format is ''a'' followed by one of the letters ''Mwhms'' (referring to the time units: Months, weeks, hours, minutes or seconds) followed by a plus or minus (referring to at older than or newer than), followed by a number (to set how many time units) - ''A'' is a glob qualifier specifying the group read permission is set, i.e. --r----- or 0040 - ''A'' is a parameter expansion flag which creates an array parameter - ''AA'' is a parameter expansion flag which creates an associative array parameter - ''a'' is a parameter expansion flag causing sorting to be done on array index - ''-a //FILE//'' is a conditional expression operator, identical to ''-e'', i.e. it is true if //FILE// exists - ''oa'' is a glob qualifier which causes the results to be sorted by access time; see under ''o'' for other sort orders - '':a'' is an expansion modifier that turns a file name into an absolute path. - '':A'' is an expansion modifier that turns a file name into an absolute path, resolving symlinks. ==== b ==== - ''-B'' is a synonym for the NO_BEEP option - ''(#b)'' is an EXTENDED_GLOB globbing flag turning on backreferences, i.e. setting the shell parameters match, mbegin, & mend. - ''(#B)'' is an EXTENDED_GLOB globbing flag turning off backreferences - ''%b'' is a glob qualifier referring to block special files - ''-b //FILE//'' is a conditional expression operator which is true if //FILE// is an existing block special file - **Other meanings not yet listed here...** ==== c ==== - ''-C'' is a synonym for the NO_CLOBBER option - ''%c'' is a glob qualifier referring to character special files - ''c'' is a glob qualifier specifying a particular inode change (attribute modification) time; it's format is ''c'' followed by one of the letters ''Mwhms'' (referring to the time units: Months, weeks, hours, minutes or seconds) followed by a plus or minus (referring to at older than or newer than), followed by a number (to set how many time units) - ''oc'' is a glob qualifier which causes the results to be sorted by inode change (attribute modification) time; see under ''o'' for other sort orders - '':c'' is an expansion modifier that turns a command name into an absolute path - ''-c //FILE//'' is a conditional expression operator which is true if //FILE// is an existing character special file - **Other meanings not yet listed here...** ==== d ==== - ''-D'' is a synonym for the PUSHD_TO_HOME option - ''d//dev//'' is a glob qualifier referring to files with a device number of //dev// - ''D'' is a glob qualifier which turns on the GLOB_DOTS option - ''oc'' is a glob qualifier which causes the results to be sorted with files in subdirectories first; see under ''o'' for other sort orders - ''-d //FILE//'' is a conditional expression operator which is true if //FILE// is an existing directory - **Other meanings not yet listed here...** ==== e ==== - ''-e'' is a synonym for the ERR_EXIT option - ''-E'' is a synonym for the PUSHD_SILENT option - ''(#e)'' is a globbing flag that forces the pattern to only match at the end of the test string - ''e//DstringD//'' is a glob qualifier (where //D// is any character, used as delimiter for //string//) referring to files for which //string// evaluates to ''true'' - ''E'' is a glob qualifier specifying the group execute permission is set, i.e. ----x--- or 0010 - '':e'' is an expansion modifier that removes all but the extension - ''-e //FILE//'' is a conditional expression operator which is true if //FILE// exists - ''//FILE1// -ef //FILE2//'' is a conditional expression operator which is true if both files exist and are names for the same thing - ''//EXP1// -eq //EXP2//'' is a conditional expression operator which is true if both expressions are numerically equal. - **Other meanings not yet listed here...** ==== f ==== - ''-F'' is a synonym for the NO_GLOB option - ''-f'' is a synonym for the NO_RCS option - ''F'' is a glob quantifier referring to non-empty directories - ''f//spec//'' is a glob quantifier referring to files with the chmod-style permissions of //spec// - ''-f'' is an option to the _path_files completion function causing it to complete all files, as is the default - ''-F //files//'' is an option to the _path_files completion function causing it to ignore, i.e. not complete //files//, overriding //ignored-patterns// - '':f//X//'' is an expansion modifier that repeats the following modifier (//X//) until the result doesn't change any more (Only works with parameter expansion) - '':F://EXPR//://X//'' is an expansion modifier with the same effect as '':f'', but has the repetition limited to //EXPR// times. The colons can be any other character, if needed. (Only works with parameter expansion) - ''-f //FILE//'' is a conditional expression operator which is true if //FILE// is an existing regular file - **Other meanings not yet listed here...** ==== g ==== - ''-g'' is a synonym for the HIST_IGNORE_SPACE option - ''-G'' is a synonym for the NULL_GLOB option - ''G'' is a glob qualifier referring to files owned by a user in the same group as the current effective user (i.e. with the same effective GID) - ''g//gid//'' is a glob qualifier referring to files owned by a user in //gid// (can be a name instead of a number) - ''-g //pat//'' is an option to the _path_files completion function causing it to complete files that match //pat// - ''-g //FILE//'' is a conditional expression operator which is true if //FILE// is an existing file with its setgid bit set - ''-G //FILE//'' is a conditional expression operator which is true if //FILE// is in the current group - ''//EXP1// -gt //EXP2//'' is a conditional expression operator which is true if //EXP1// is numerically greater than //EXP2// - ''//EXP1// -ge //EXP2//'' is a conditional expression operator which is true if //EXP1// is numerically greater than or equal to //EXP2// - **Other meanings not yet listed here...** ==== h ==== - ''-h'' is a synonym for the HIST_IGNORE_DUPS option - ''-H'' is a synonym for the RM_STAR_SILENT option - ''ah'', ''ch'' or ''mh'' are glob qualifiers specifying a particular access time, inode change (attribute modification) time, or modification time; see under ''a'', ''c'' or ''m'' for details - '':h'' is an expansion modifier that acts like dirname, removing a trailing pathname component - ''-h //FILE//'' is a conditional expression operator, identical to ''-e'', i.e. it is true if //FILE// is an existing symbolic link - **Other meanings not yet listed here...** ==== i ==== - ''-I'' is a synonym for the IGNORE_BRACES option - ''-i'' is a synonym for the INTERACTIVE option - ''(#i)'' is an EXTENDED_GLOB globbing flag causing case insensitive matching - ''(#I)'' is an EXTENDED_GLOB globbing flag causing case sensitive matching - ''I'' is a glob qualifier specifying the group write permission is set, i.e. ---w---- or 0020 - **Other meanings not yet listed here...** ==== j ==== - ''-J'' is a synonym for the AUTO_CD option - ''%j'' is a prompt expansion referring to the number of jobs, as displayed by the ''jobs'' builtin - ''j://str//:'' is a parameter expansion flag causing the words expanded by the parameter to be joined with //str// in between ==== k ==== - ''-k'' is a synonym for the INTERACTIVE_COMMENTS option - ''-K'' is a synonym for the NO_BANG_HIST option - ''-k //FILE//'' is a conditional expression operator which is true if //FILE// is an existing file with its sticky bit set - **Other meanings not yet listed here...** ==== l ==== - ''-l'' is a synonym for the LOGIN option - ''-L'' is a synonym for the SUN_KEYBOARD_HACK option - ''(#l)'' is an EXTENDED_GLOB globbing flag causing lower case to match upper case - ''l-//num//'' and ''l+//num//'' are glob qualifiers referring to files with link counts less than (or greater than, for ''+'') //num// - ''oL'' is a glob qualifier which causes the results to be sorted by file size (Length); see under ''o'' for other sort orders - ''ol'' is a glob qualifier which causes the results to be sorted by link count; see under ''o'' for other sort orders - ''%l'' is a prompt expansion that expands to the user's tty line - ''%L'' is a prompt expansion that expands to the current value of $SHLVL (the depth of nested shells) - '':l'' is an expansion modifier that converts the words to lowercase - ''-L //FILE//'' is a conditional expression operator which is true if //FILE// is an existing symbolic link - ''//EXP1// -lt //EXP2//'' is a conditional expression operator which is true if //EXP1// is numerically less than //EXP2// - ''//EXP1// -le //EXP2//'' is a conditional expression operator which is true if //EXP1// is numerically less than or equal to //EXP2// - **Other meanings not yet listed here...** ==== m ==== - ''-m'' is a synonym for the MONITOR option - ''-M'' is a synonym for the SINGLE_LINE_ZLE option - ''(#m)'' is an EXTENDED_GLOB globbing flag causing the match data to be saved, i.e. the contents and length of the match are put in the shell parameters MATCH, MBEGIN and MEND - ''m'' is a glob qualifier specifying a particular modification time; its format is ''m'' followed by one of the letters ''Mwhms'' (referring to the time units: Months, weeks, hours, minutes or seconds) followed by a plus or minus (referring to at older than or newer than), followed by a number (to set how many time units) - ''M'' is a glob qualifier which causes directories to be marked (i.e. sets the MARK_DIRS option) - ''(#M)'' is an EXTENDED_GLOB globbing flag causing the match data not be saved - ''aM'', ''am'', ''cM'' or ''cm'' are glob qualifiers specifying a particular access time (the first two) or inode change (attribute modification) time; see under ''a'' or ''c'' for details. - ''om'' is a glob qualifier which causes the results to be sorted by modification time; see under ''o'' for other sort orders - **Other meanings not yet listed here...** ==== n ==== - ''-N'' is a synonym for the AUTO_PUSHD option - ''-n'' is a synonym for the NO_EXEC option - ''N'' is a glob qualifier which turns on the NULL_GLOB option - ''n'' is a glob qualifier which turns on the NUMERIC_GLOB_SORT option - ''on'' is a glob qualifier which causes the results to be sorted by name; see under ''o'' for other sort orders - ''-n //STRING//'' is a conditional expression operator which is true if //STRING//'s length is non-zero - ''-N //FILE//'' is a conditional expression operator which is true if //FILE// hasn't been accessed since it was modified - ''//FILE1// -nt //FILE2//'' is a conditional expression operator which is true if //FILE1// exists and is newer than //FILE2// - ''//EXP1// -ne //EXP2//'' is a conditional expression operator which is true if //EXP1// is not numerically equal to //EXP2// - **Other meanings not yet listed here...** ==== o ==== - ''-O'' is a synonym for the CORRECT_ALL option - ''o'' is a glob qualifier that selects a type of sorting; the choices are ''on'', name (default); ''oL'', size (Length); ''ol'', link count; ''oa'', access time, ''om'', modification time, ''oc'', inode change (attribute modification) time, ''od'', files in subdirectories appear before those in the current directory at each level of the search - ''O'' is a glob qualifier that selects a type of sorting, reversed from ''o''; the choices are the same as with ''o'' - ''-o //OPTION//'' is a conditional expression operator which is true if //OPTION// is on (if //OPTION// is a single letter, it's a single letter option synonym, without the normal initial dash) - ''-O //FILE//'' is a conditional expression operator which is true if //FILE// is owned by the current user - ''//FILE1// -ot //FILE2//'' is a conditional expression operator which is true if //FILE1// exists and is older than //FILE2// - **Other meanings not yet listed here...** ==== p ==== - ''-P'' is a synonym for the RC_EXPAND_PARAM option - ''-p'' is a synonym for the PRIVILEGED option - ''p'' is a glob qualifier referring to named pipes (FIFOs) - ''P'' is a parameter expansion flag which causes the //name// in the parameter expansion to be treated as a variable whose value then becomes the value of the expansion - ''p'' is a parameter expansion flag that activates ''print'' escape sequences in the *arguments* of other parameter expansion flags - '':p'' is a expansion modifier (only for history expansion) which causes the expansion to be printed, but not executed as it would be normally - ''-p //FILE//'' is a conditional expression operator which is true if //FILE// is an existing FIFO special file (named pipe) - **Other meanings not yet listed here...** ==== q ==== - ''-Q'' is a synonym for the PATH_DIRS option - ''(#q//expr//)'' is an EXTENDED_GLOB globbing flag listing a set of glob qualifiers - '':q'' is a expansion modifier which adds a layer of quotes - '':Q'' is a expansion modifier which strips off a layer of quotes - ''q'' is a parameter expansion flag causing the result to be quoted with backslashes - ''qq'' is a parameter expansion flag causing the result to be quoted with single quotes - ''qqq'' is a parameter expansion flag causing the result to be quoted with double quotes - ''qqqq'' is a parameter expansion flag causing the result to be quoted with the ''$'...''' form - ''Q'' is a parameter expansion flag which strips off a layer of quotes ==== r ==== - ''r'' is a shell builtin that is a synonym for ''fc -e -'', i.e. repeat the last command - ''-R'' is a synonym for the LONG_LIST_JOBS option - ''-r'' is a synonym for the RESTRICTED option - ''r'' is a glob qualifier specifying that matched files are readable by their owners - ''R'' is a glob quantifier referring world readable files - '':r'' is an expansion modifier that removes a file extension - ''-r //FILE//'' is a conditional expression operator which is true if //FILE// is an existing, currently readable, file - **Other meanings not yet listed here...** ==== s ==== - ''-S'' is a synonym for the REC_EXACT option - ''-s'' is a synonym for the SHIN_STDIN option - ''(#s)'' is an EXTENDED_GLOB globbing flag forcing the pattern to only match at the beginning of the test string - ''s'' is a glob quantifier referring to setuid files (set user id) - ''s'' is a glob quantifier referring to setgid files (set group id) - ''as'', ''cs'' or ''ms'' are glob qualifiers specifying a particular access time, inode change (attribute modification) time, or modification time; see under ''a'', ''c'' or ''m'' for details - '':s///l/////r//'' is an expansion modifier that does single replacement - '':s///l/////r///:G'' **or** '':gs///l/////r//'' is an expansion modifier that does global replacement - ''-s //FILE//'' is a conditional expression operator which is true if //FILE// is an existing file with a non-zero size - ''-S //FILE//'' is a conditional expression operator which is true if //FILE// is an existing socket - **Other meanings not yet listed here...** ==== t ==== - ''-T'' is a synonym for the CDABLE_VARS option - ''-t'' is a synonym for the SINGLE_COMMAND option - ''t'' is a glob quantifier referring to files with the sticky bit set - ''T'' is a glob qualifier which causes directories, links, and special files to be marked (i.e. sets the LIST_TYPES option) - '':t'' is an expansion modifier that acts like basename, removing all leading pathname components - ''-t //FD//'' is a conditional expression operator which is true if //FD// is open and associated with a terminal device - **Other meanings not yet listed here...** ==== u ==== - ''-U'' is a synonym for the MAIL_WARNING option - ''-u'' is a synonym for the NO_UNSET option - ''U'' is a glob qualifier referring to files owned by the current effective UID - ''u//uid//'' is a glob qualifier referring to files owned by //uid// (can be a name instead of a number) - '':u'' is an expansion modifier that converts the words to uppercase - ''-u //FILE//'' is a conditional expression operator which is true if //FILE// is an existing file with its setuid bit set - **Other meanings not yet listed here...** ==== v ==== - ''-V'' is a synonym for the NO_PROMPT_CR option - ''-v'' is a synonym for the VERBOSE option - **Other meanings not yet listed here...** ==== w ==== - ''-W'' is a synonym for the AUTO_RESUME option - ''-w'' is a synonym for the CHASE_LINKS option - ''w'' is a glob qualifier specifying that matched files are writable by their owners - ''W'' is a glob quantifier referring world writable files - ''aw'', ''cw'' or ''mw'' are glob qualifiers specifying a particular access time, inode change (attribute modification) time, or modification time; see under ''a'', ''c'' or ''m'' for details. - ''-W //dirs//'' is an option to the _path_files completion function causing it to look in //dirs// for files to complete - '':w//X//'' is an expansion modifier that applies the following modifier (//X//) to each word in the string (Only works with parameter expansion) - '':W://SEP//://X//'' is an expansion modifier with the same effect as '':w'', but splits words using //SEP//. The colons can be any other character, if needed. (Only works with parameter expansion) - ''-w //FILE//'' is a conditional expression operator which is true if //FILE// is an existing, currently writable, file - **Other meanings not yet listed here...** ==== x ==== - ''-X'' is a synonym for the LIST_TYPES option - ''-x'' is a synonym for the XTRACE option - ''x'' is a glob qualifier specifying that matched files are executable by their owners - ''X'' is a glob quantifier referring world executable files - '':x'' is an expansion modifier that adds a layer of quotes, after breaking into words on whitespace (doesn't work on parameter expansion) - ''-x //FILE//'' is a conditional expression operator which is true if //FILE// is an existing, currently executable, file - **Other meanings not yet listed here...** ==== y ==== - ''-Y'' is a synonym for the MENU_COMPLETE option - ''-y'' is a synonym for the SH_WORD_SPLIT option - **Other meanings not yet listed here...** ==== z ==== - ''-Z'' is a synonym for the ZLE option - ''-z //STRING//'' is a conditional expression operator which is true if //STRING//'s length is zero - **Other meanings not yet listed here...** ==== [ ==== - ''%%[[%% //cond// %%]]%%'' evaluates //cond// as a conditional expression, returning true (0) or false (1) - ''%%[%% //cond// %%]%%'' is a synonym for the ''test'' builtin, i.e. it evaluates //cond// as a POSIX-style test expression, returning true (0), false (1), or error (2) - ''%%[%%//class//%%]%%'' is a glob pattern meaning any single character in //class// - ''%%[%%^//class//%%]%%'' is a glob pattern meaning any single character not in //class// - ''%%[%%//num//%%]%%'' is a glob qualifier causing the pattern to only return only the //num//th result - ''%%[%%//beg//,//end//%%]%%'' is a glob qualifier causing the pattern to only return the results between //beg// and //end// as if they were an array (//beg// and //end// can be expressions) - ''%%[%%//BASE//%%]%%//N//'' inside an arthemitic expression, means the integer //N// expressed in the base //BASE// (This is a depreciated form; ''//BASE//#//N//'' is preferred) - ''%%[%%#//BASE//%%]%% inside an arthemitic expression, sets the base for output - ''%%[%%##//BASE//%%]%% inside an arthemitic expression, sets the base for output, but doesn't display a base prefix - **Other meanings not yet listed here...** ==== \ ==== - ''\//C//'' quotes the character - ''\//%%[newline]%%//'' removes the newline, i.e. acts as a line continuation ==== ] ==== - See ''['' ==== ^ ==== - ''%%[%%^//class//%%]%%'' is a glob pattern meaning any single character not in //class// - ''^//pat//'' is an EXTENDED_GLOB globbing pattern meaning anything that doesn't match //pat// - ''^'' is a glob quantifier which negates the following quantifiers - ''^'' is a history word selector which selects the first argument (i.e. a synonym for ''1'') - ''${^//var//}'' is a parameter expansion form that causes the elements of var to be expanded like brace expansion ==== _ ==== - ''_'' is a shell variable automatically set (within the shell) to the last argument of the previous command, and (within a command) to the command's full pathname ==== { ==== - ''{//list//}'' groups the commands in //list//, so they act like a single command, e.g. they can be redirected as a whole - ''${//var//}'' performs parameter substitution/expansion, and allows parameter expansion flags and alternative parameter expansion forms (for which, see under their sections in this page) ==== | ==== - ''||'' is used to connect pipelines (or single simple commands) into an OR sublist - ''|'' , the pipe character, is used to redirect the output of one command into the input of another, forming a pipeline - ''(//pat1//|//pat2//)'' is a glob pattern that matches either //pat1// or //pat2// - ''//EXP1// || //EXP2//'' is a conditional expression operator which is true if either //EXP1// or //EXP2// are true - **Other meanings not yet listed here...** ==== } ==== - See ''{'' ==== ~ ==== - ''//pat//~//exclude_pat//'' is an EXTENDED_GLOB globbing pattern meaning anything that matches //pat// and doesn't match //exclude_pat//