.TH "xd" "1" "1994\-2023" "xd\&.5\&.00\&.01" "xd \- fast directory changes" .PP .SH "NAME" xd \- eXtra fast Directory changer .PP .SH "SYNOPSIS" \fBxd\fP [OPTIONS] \fIarguments\fP .PP .SH "DESCRIPTION" .PP The program \fBxd\fP is used to perform e\fBX\fPtra fast \fBD\fPirectory changes\&. Usually to change a directory the user is required to enter a command like, e\&.g\&., \fIcd /usr/local/bin\fP, possibly using shell completion\&. Often this is a tedious task: shell completion shows all entries, including files, when we\(cq\&re only interested in directories and the full specification of our intented directory may eventually require many keyboard actions\&. .PP \fIXd\fP was designed a long time ago (in the early 90s) to reduce the effort of changing directories\&. Often we\(cq\&re well aware to which directory we want to change, and it\(cq\&s easy to provide the initial directory characters of that directory\&. E\&.g\&., if the intent is to \fIcd\fP to \fI/usr/local/bin\fP, it\(cq\&s easy to specify the letters \fIulb\fP\&. .PP \fIXd\fP capitalizes on this capability\&. By providing the initial directory characters of directories \fIxd\fP determines the expansion(s) allowing you to do fast directory changes\&. So, after entering the command \fIxd ulb\fP \fIxd\fP may directly perform the change\-directory to \fI/usr/local/bin\fP\&. .PP Often, however, multiple alternatives can match the specified series of characters\&. E\&.g\&., when entering \fIxd ulb\fP \fIxd\fP may find several alternatives, like .nf 1: /usr/lib/base\-config 2: /usr/lib/bonobo 3: /usr/lib/bonobo\-activation 4: /usr/local/bin .fi If these are the alternatives, then this is exactly what \fIxd\fP shows you\&. Then, by simply pressing the \fI4\fP key (\fIno\fP \fIEnter\fP key required) \fIxd\fP performs the required \fI/usr/local/bin\fP (see also the section \fBDIRECT KEY ENTRY\fP)\&. .PP \fIXd\(cq\&s\fP behavior can be fine\-tuned in various ways: .IP o by default (as specified by the configuration file, see below) \fIxd\fP looks for expansions starting at the user\(cq\&s home directory or at the system\(cq\&s root directory; .IP .IP o initial character \fB/\fP: if the first character of the command is \fI/\fP then all expansions are performed from the system\(cq\&s root directory\&. E\&.g\&., \fIxd /t\fP produces \fI/tmp\fP but not \fI/home/user/tmp\fP; .IP .IP o initial character \fB\&.\fP: if the first character of the command is \fI\&.\fP then by default all expansions are performed from the user\(cq\&s home directory\&. E\&.g\&., \fIxd \&.t\fP results in \fI/home/user/tmp\fP but not in \fI/tmp\fP\&. The home directory recognition character can be altered using the \fI\-\-homedir\-char\fP option, see below (section \fBOPTIONS\fP)\&. When merely specifying \fIxd \&.\fP then \fIxd\fP changes the current directory to the user\(cq\&s home directory\&. .IP .IP o initial character \fB0\fP: If the first character of the command is \fI0\fP, then all expansions start at the current working directory\&. When merely specifying \fIxd 0\fP then \fIxd\fP returns leaving the current directory unchanged\&. When additional characters are appended to 0 then this command operates like the following, starting from the current working directory; .IP .IP o initial character \fB1\&.\&.9\fP: If the first character of the command is a digit between \fI1\fP and \fI9\fP then all expansions start at that parent directory level of the current working directory (up to the system\(cq\&s root directory)\&. E\&.g\&., if the current working directory is \fI/usr/share/doc\fP then \fIxd 2lb\fP will offer the alternative \fI/usr/local/bin\fP: two steps up, then look for directories starting with \fIl\fP and therein directories starting with \fIb\fP\&. When merely specifying one of these characters \fIxd\fP changes the current directory to the indicated parent, up to the root\-directory (e\&.g\&., specifying \fIxd 5\fP at \fI/usr/bin\fP changes the current directory to the root\-directory) .IP .IP o separators (space, and the forward slash (`\fI/\fP\(cq\&)): sometimes it is clear that there are many alternatives and the intention is to reduce that number\&. By using separators subsequently nested directories must start with the characters between the separators\&. E\&.g\&., \fIxd u l bi\fP doesn\(cq\&t produce the alternative \fI/usr/lib/base\-config\fP anymore, since \fIbase\-config\fP does not start with \fIbi\fP\&. In this case only \fI/usr/local/bin\fP is produced\&. When used as initial character in a pattern the forward slash always indicates the root\-directory; .IP .IP o search patterns may contain dots (like \fI\&.s\fP)\&. In such cases the dot represents hidden directories\&. However, \fIxd\fP usually also finds patterns containing \fI/\&./\fP, as the current directory matches the dot\&. Such patterns are considered spurious and are not reported\&. .PP If there\(cq\&s only one solution, \fIXd\fP prepares for a direct directory change to the solution\(cq\&s directory\&. .PP If there are multiple solutions, then by default lists of at most 62 alternatives (10 for the numbers 0\&.\&.9, 26 for the letters a\&.\&.z and 26 for the letters A\&.\&.Z) are written to the standard error stream from which the user may select an alternative by simply pressing the key associated with the selection of choice\&. If no selection is requested any other key may be pressed (e\&.g\&., the space bar or the \fIEnter\fP key)\&. If there is no solutioon \fIxd\fP writes the text \fINo Solutions\fP to the standard error stream\&. .PP When \fIxd\fP is given at least one argument, all its output is sent to the standard error stream, except for the selected directory name which should become the next working directory\&. .PP \fIXd\fP may insert the \fIcd\fP command directly into the command shell from where \fIxd\fP was called\&. See also section \fBSHELL SCRIPTS\fP)\&. In this mode of operation \fIxd\fP returns a single dot if no selection is made, preventing an unintended change of directory\&. .PP If no selection is made or if the selection process is aborted a single dot is written to the standard output stream\&. Usually \fIxd\fP will be called by a shell alias, providing the \fIcd\fP command with \fIxd\fP\(cq\&s output (see below at the \fBSHELL SCRIPTS\fP section) executing \fIcd `xd $*`\fP\&. The default dot produced by \fIxd\fP prevents an unintended change of directory\&. .PP When \fIxd\fP is merely given an initial directory specification, like a single dot (\fI\&.\fP) or digit (a digit in the set \fI[0\&.\&.9]\fP) then \fIxd\fP returns the implied path\&. Specifying a parent before the root\-directory (E\&.g\&., entering `\fIxd 5\fP\(cq\& when the current working directory is `\fI/tmp\fP\(cq\&) results in writing the root directory (`\fI/\fP\(cq\&) to the standard output stream\&. .PP If \fIxd\fP is called without arguments its \fIusage\fP information is written to the standard error stream\&. .PP \fIXd\fP may be further configured using options and a configuration file, discussed in the \fBOPTIONS\fP and \fBCONFIGURATION FILE\fP sections below\&. .PP .SH "DIRECT KEY ENTRY" .PP To pass the directory change command to the shell\(cq\&s input buffer \fBxd\fP calls the function \fBioctl\fP(2)\&. That function is still available, although it\(cq\&s also considered a somewhat deprecated function\&. But even though it\(cq\&s available, by default it may not work\&. The program \fBsysctl\fP(8) shows the values of system variables, among which \fIdev\&.tty\&.legacy_tiocsti\fP: .nf sysctl \-a | grep tiocsti dev\&.tty\&.legacy_tiocsti = 0 .fi If, at your computer, \fIsysctl\fP shows \fIdev\&.tty\&.legacy_tiocsti = 0\fP then define a file \fI/etc/sysctl\&.d/tiocsti\&.conf\fP containing the line .nf dev\&.tty\&.legacy_tiocsti=1 .fi Then, after rebooting \fIioctl\fP will work as described in its man\-page\&. .PP Alternatively, a shell script or alias can be defined to pass the command to your shell\&. E\&.g\&., when using the \fItcsh\fP shell program the following alias can be defined: .nf alias xd \(cq\&cd `\exd \-\-no\-input \e!*`\(cq\& .fi Or, when using \fIbash\fP, define a function \fIxd\fP calling, e\&.g\&., \fI/usr/bin/xd\fP: .nf xd() { cd `/usr/bin/xd \-\-no\-input \(dq\&$*\(dq\&` } .fi .PP .SH "GENERALIZED DIRECTORY SEARCH" .PP \fIXd\fP also supports generalized directory search commands (GDS)\&. When GDS is requested separators are no longer required, and \fIxd\fP finds all possible alternatives resulting from all possible sequential combinations of the initial search command\&. GDS is activated either by specifying the \fI\-g\fP option or by entering \fIgeneralized\-search\fP in \fIxd\fP\(cq\&s configuration file\&. Alternatively, when the latter is specified then the \fI\-\-traditional\fP command line option suppresses GDS\&. .PP When using GDS each initial substring of the command to \fIxd\fP is considered as the initial characters of a directory\&. E\&.g\&., if the command \fIxd tmps\fP is entered using GDS then directories matching the following search patterns will be found; .IP o \fI/t*/m*/p*/s*/\fP .IP o \fI/t*/m*/ps*/\fP .IP o \fI/t*/mp*/s*/\fP .IP o \fI/t*/mps*/\fP .IP o \fI/tm*/p*/s*/\fP .IP o \fI/tm*/ps*/\fP .IP o \fI/tmp*/s*/\fP .IP o \fI/tmps*/\fP With the traditional processing mode only the first one of these alternative patterns is considered\&. .PP Multiple command line arguments, the slash, and the underscore can still be used with GDS\&. In this case they force a directory change using the considered patterns\&. E\&.g\&., with the command \fIxd tm/ps\fP the following patterns will be considered: .IP o \fI/t*/m*/p*/s*/\fP .IP o \fI/t*/m*/ps*/\fP .IP o \fI/tm*/p*/s*/\fP .IP o \fI/tm*/ps*/\fP In this set all of the previous patterns showing the \fI\&.\&.\&.mp\&.\&.\&.\fP combination were dropped, as a directory change is forced between the \fIm\fP and \fIp\fP characters\&. .PP .SH "RETURN VALUES" .PP \fIXd\fP may return the following values to its caller, allowing scripts calling \fIxd\fP to make decisions that depend on the actually performed action by \fIxd\fP: .IP o 0 is returned if \fIxd\fP issued a \fIcd\fP command; .IP o 1 is returned if \fIxd\fP received a non\-space character, not selecting a directory to change to\&. When the \fIinput\fP option has been specified this character is inserted into the command shell\(cq\&s input buffer; .IP o 2 is returned if \fIxd\fP received a space (or Enter) character, indicating that \fIxd\fP should perform no further action; .IP o 3 is returned if no directory was found matching the argument passed to \fIxd\fP; .IP o 4 is returned if the \fI\-\-help\fP or \fI\-\-version\fP option was specified (see their descriptions in the \fIOPTIONS\fP section); .IP o 5 is returned if an error was encountered (e\&.g\&., when a non\-existing configuration file is specified)\&. .PP .SH "OPTIONS" .PP If available, single letter options are listed between parentheses following their associated long\-option variants\&. Single letter options require arguments if their associated long options require arguments as well\&. .PP Most options can also be specified in \fIxd\(cq\&s\fP configuration file, in which case the long option variants must be used, omitting the initial two dashes (see the section \fICONFIGURATION FILE\fP below for specific details about the configuration file\&. .PP By default the options can also be specified in the configuration file\&. If an option cannot be specifiied in the configuration file it is explicitly stated at its description\&. .PP Options that are specified as command\-line options take priority over options specified in the configuration file\&. .PP .IP o \fB\-\-add\-root\fP \fIcondition\fP .br If the search starts at the user\(cq\&s home directory an additional search starting at the system\(cq\&s root directory may be performed as well, depending on the value specified for the \fIadd\-root\fP option\&. Conditions are .RS .IP o \fInever\fP (no additional search is performed), .IP o \fIif\-empty\fP (an additional search is performed if the initial search did not yield any directory), .IP o \fIalways\fP (an additional search is always performed); .RE .IP o \fB\-\-all\fP \fB\-a\fP .br If the configuration file (see below) contains \fIignore\fP directives then those directives are ignored when computing the alternatives from which the user may select a directory to change to; .IP .IP o \fB\-\-block\-size\fP=\fInr\fP (\fB\-b\fP) .br The possible directories matching \fIxd\(cq\&s\fP argument are listed in blocks of \fI\fP elements\&. the possible directories matching \fIxd\(cq\&s\fP argument are listed in blocks of \fI\fP elements\&. The built\-in minimum block size is 5\&. If there are fewer alternatives then this built\-in minimum then the actually available alternatives are displayed; .IP When alternatives are split up in blocks, a \fI+\fP is displayed after listing the first block, a \fI\-\fP is displayed after listing the last block, and \fI\-+\fP is displayed after listing the intermediate blocks\&. In these cases, pressing \- redisplays the previous block, pressing + displays the next block; .IP Although these block\-end prompts only show \- and +, the characters , and < (usually combined in one key) can be used instead of \-, while \&. and > (also usually combined in one key) can be used instead of +\&. .IP .IP o \fB\-\-config\-file\fP=\fIfilename\fP (\fB\-c\fP) .br The name of an \fIxd\fP configuration file\&. By default \fIxd\fP looks for the file \fI\&.xdrc\fP in the user\(cq\&s home directory\&. The existence of the default file is optional\&. .IP This option cannot be specified in the configuration file; .IP .IP o \fB\-\-directories\fP \fIinclusion\fP .br Directories may be also be reached via symbolic links\&. The (default) inclusion type \fIall\fP adds these symbolic links to the list of alternatives\&. The inclusion type \fIunique\fP prevents symbolic links from being added to the list of alternatives; .IP .IP o \fB\-\-generalized\-search\fP \fB\-g\fP .br When specified \fIxd\fP uses GDS unless the directive \fItraditional\fP is specified in the configuration file; .IP .IP o \fB\-\-help\fP (\fB\-h\fP) .br Basic usage information is written to the standard error stream, whereafter \fIxd\fP terminates\&. .IP This option cannot be specified in the configuration file; .IP .IP o \fB\-\-homedir\-char\fP \fIch\fP .br By default an initial dot character (`\fI\&.\fP\(cq\&) initiates a search from the user\(cq\&s home directory\&. There is a slight disadvantage to using the dot, as it is also be the initial character of `hidden\(cq\& directories\&. Assuming that you have a directory \fI~/\&.ssh\fP then the command to xd to that directory would be \fIxd \&.\&.s\fP, the first dot being the home directory indicator, after which \fI\&.s\fP is used to find \fI\&.ssh\fP\&. The option \fI\-\-homedir\-char\fP can be used to specify another character\&. Homedir characters cannot be digits or a slash (`\fI/\fP\(cq\&) as these are used to specify, respectively, parent directories and the computer\(cq\&s root directory\&. Characters like ``\fI, @ % ^\fP\(cq\&\(cq\& or maybe `\fIH\fP\(cq\& (assuming that it doesn\(cq\&t interfere with an existing directory beginning with \fIH\fP) could be used as homedir\-characters, other than the default dot character\&. .IP Caveat: command shells by default interpret characters like ``\fI~ $ \(cq\& \(dq\& ` < > |\fP\(cq\&\(cq\& etc\&., which therefore should probably not be specified as home directory specifiers; .IP .IP o \fB\-\-history\fP \fI[filename]\fP .br A history of previously made choices is kept in the file \fIfilename\fP\&. If \fI\-\-history\fP is specified, but the filename is left empty the history file \fI$HOME/\&.xd\&.his\fP is used\&. This file should only be modified by \fIxd\fP itself\&. If you can\(cq\&t resist editing it then use the following example showing the format of the lines in the history file\&. .nf 1292596154 1 /home/frank/svn/xd/ .fi The first field is the time (in seconds since the epoch) the entry was written, the second field is the number of times the entry has been selected and the third field is the associated path\&. .IP The following \fIhistory\-\&.\&.\&.\fP options are only interpreted if the \fIhistory\fP option is also specified\&. .IP .IP o \fB\-\-history\-lifetime\fP \fIspec\fP .br The lifetime of the entries in the history file\&. The specification consists of a number followed by \fID, W, M\fP or \fIY\fP, representing, resp\&. days, weeks, months, or years\&. A month is considered a period of 30 days, a year a period of 365 days\&. If the specification is omitted a lifetime of \fI1M\fP (one month) is used\&. Entries older than \fIhistory\-lifetime\fP are disregarded as history\-items and are removed from the history file; .IP .IP o \fB\-\-history\-maxsize\fP \fInr\fP .br The maximum number of entries the history file may contain\&. By default there is no limit\&. When \fIhistory\-maxsize\fP is specified and more than the maximum number of history items are found in the history file then the \fInr\fP most popular choices are kept\&. Usually the cut\-off point will be somewhere within a popularity category\&. In that case the most recently selected alternatives within that category are kept; .IP .IP o \fB\-\-history\-position\fP \fI[top|bottom]\fP .br Previously found alternatives are displayed either at the top of the list or at the bottom of the list\&. If this option is omitted then the elements in the history are intermixed with new alternatives\&. The next option \fIhistory\-separate\fP is only used when this option is also specified\&. By merely specifying \fIhistory\-position\fP the history items are shown at the top of the list; .IP .IP o \fB\-\-history\-separate\fP .br When specified a blank line is written between the items in the history and new alternatives (not previously selected)\&. This option is only interpreted when the previous option is also specified; .IP .IP o \fB\-\-icase\fP \fB\-i\fP .br Specify this option to use case\-insensitive pattern matching\&. E\&.g\&., specifying \fIxd /ub\fP returns the directory \fI/usr/bin\fP, but not a directory like \fI/UnSpecified/Books\fP, which is returned by \fIxd /UB\fP\&. However, \fIxd \-i /ub\fP (using any letter casing for the specification) returns both directories\&. The option \fIicase\fP could of course be specified in the configuration file, which which case case\-insensitive matching is used by default\&. In the latter case specifying \fI\-i\fP as a command line option reverts the matching procedure to case\-sensitive directory matching\&. In general, when an even number of \fIicase\fP specifications is provided \fIxd\fP uses case\-sensitive directory matching, while an odd number of \fIicase\fP specifications results in case\-insensitive directory matching; .IP .IP o \fBignore\fP \fIpath\fP .br This option cannot be specified as command\-line option\&. Instead, the configuration file may contain multiple \fIignore\fP directives which are (different from the way other directives are handled) all interpreted\&. Each \fIignore\fP directive is followed by a path specification as shown in a list of alternatives produced by \fIxd\fP or an initial substring of such a path terminating in a \fI*\fP character\&. When \fIxd\fP encounters a path matching any of the \fIignore\fP directives (interpreting the final \fI*\fP as `any further directory name\(cq\& specification) it will not display that path in its list of alternatives\&. .IP This directive is overruled by the \fI\-\-\-all\fP command line option; .IP .IP o \fB\-\-input\fP .br \fIXd\fP itself issues the \fIcd\fP command for the selected directory to the shell, and enters other (non alternative\-selecting characters) into the shell\(cq\&s input\&. .IP By specifying this option (or by entering \fIinput\fP in the configuration file) an extra shell alias or script is not necessary\&. In this \fIinput\fP mode \fIxd\fP directly inserts the requested \fIcd\fP command into the shell\(cq\&s input buffer\&. This mode has an additional feature: if a key is pressed that is not assiciated with a possible directory then the current directory is kept, and the character corresponding to the pressed key is entered into the shell\(cq\&s input buffer\&. E\&.g\&., if \fIxd ulb\fP shows a list of five alternatives, but the \fIL\fP key is pressed then \fIxd\fP ends and the shell\(cq\&s input buffer shows \fIl\fP\&. Merely pressing \fIs\fP + Enter will then show the current directory content\&. To merely end \fIxd\fP in this mode the space bar or Enter key can be pressed; .IP To merely end \fIxd\fP press the Enter key or space\-bar; .IP .IP o \fB\-\-no\-input\fP .br The \fIno\-input\fP option can only be specified as a command\-line option and suppresses the \fIinput\fP option\&. The \fIno\-input\fP option has no effect if the \fIinput\fP option is not specified\&. .IP By suppressing the \fIinput\fP mode \fIxd\fP writes the name of the directory to change to to its standard output stream\&. This allows shell functions to process the directory returned by \fIxd\fP\&. An example of its use is the function \fIpxd\fP (\fIpushd\fP using \fIxd\fP) shown in section \fISHELL SCRIPTS\fP; .IP .IP o \fB\-\-start\-at\fP \fIorigin\fP .br Defines the default start location of directory searches\&. Origin \fIhome\fP (the default) results in all default searches to start at the user\(cq\&s home directory\&. Origin \fIroot\fP results in searches to begin at the disk\(cq\&s root (\fI/\fP) directory; .IP .IP o \fB\-\-traditional\fP .br \fIXd\fP does not use GDS but uses its traditional mode\&. It overrules a \fIgeneralized\-search\fP directive specified in the configuration file as well as the \fI\-g\fP option; .IP .IP o \fB\-\-verbose\fP (\fB\-V\fP) .br More extensive information about the actions taken by the \fIxd\fP program is written to the standard error stream\&. .IP This option cannot be specified in the configuration file; .IP .IP o \fB\-\-version\fP (\fB\-v\fP) .br \fIXd\fP\(cq\&s version number is written to the standard error stream whereafter \fIxd\fP terminates\&. .IP This option cannot be specified in the configuration file\&. .PP .SH "CONFGURATION FILE" .PP The default configuration file is \fI\&.xdrc\fP in the user\(cq\&s home directory\&. It may be overruled by the program\(cq\&s \fI\-\-config\-file\fP command\-line option\&. .PP Empty lines are ignored\&. Information at and beyond \fI#\fP\-characters is interpreted as comment and is also ignored\&. .PP Directives in \fIxd\fP configuration files follow the pattern .nf directive value .fi (for some directives there is no \fIvalue\fP term)\&. .PP A line may at most contain one directive, but white space (including comment at the end of the line) is OK\&. The same directive may be specified multiple times, in which case the \fIlast\fP directive will be used (except for the \fIignore\fP directive, which are all interpreted)\&. All directives are interpreted \fIcase sensitively\fP unless option \fIicase\fP is specified\&. Non\-empty lines not beginning with a recognized directive are silently ignored\&. .PP .SH "SHELL SCRIPTS" .PP Assuming \fIxd\fP is installed in \fI/usr/bin\fP scripts can be defined around \fIxd\fP for various shell programs\&. This allows the shell to change directories under control of \fIxd\fP\&. .PP .IP o Example 1\&. .IP To use \fIxd\fP in combination with the \fIpushd\fP shell command \fIxd\fP itself should not perform directory changes\&. In such cases the \fIno\-input\fP option should be specified in the shell function combining \fIpushd\fP and \fIxd\fP\&. .IP To use \fIxd\fP with the \fBbash\fP(1)\-shell, the following function can be used (which could be added to, e\&.g\&., \fI\&.bash_login\fP): .nf pxd() # function to do `pushd` using `xd` { pushd \(dq\&`/usr/bin/xd \-\-no\-input $*`\(dq\& } .fi To use \fIxd\fP with the \fBtcsh\fP(1)\-shell, the following alias can be defined in, e\&.g\&., the \fI~/\&.alias\fP file: .nf alias pxd \(cq\&pushd `\exd \-\-no\-input \e!*`\(cq\& .fi .IP .IP o Example 2\&. .IP If the \fIinput\fP option is specified (as command\-line or configuration file option) then this example can be ignored\&. .IP To use \fIxd\fP with the \fBbash\fP(1)\-shell, the following function can be used (which could be added to, e\&.g\&., \fI\&.bash_login\fP): .nf xd() # function to do `cd` using `xd` { cd \(dq\&`/usr/bin/xd $*`\(dq\& } .fi To use \fIxd\fP with the \fBtcsh\fP(1)\-shell, the following alias can be defined in, e\&.g\&., the \fI~/\&.alias\fP file: .nf alias xd \(cq\&cd `\exd \e!*`\(cq\& .fi Having defined the \fIxd\fP alias or script \fIxd \&.\&.\&.\fP commands results in the automatic (or optional) change of the current working directory .PP If your system uses blanks in directory names, the above tcsh\-alias cannot be used as the blanks are interpreted as argument\-separaters\&. In that case the following alias can be defined as the \fIxd\fP alias: .nf alias xd \(cq\&setenv XD \(dq\&`\exd \e!*`\(dq\&;cd \(dq\&$XD\(dq\&\(cq\& .fi .PP .SH "EXAMPLES" .PP .nf xd ulb \- all directories starting subsequently, with u, l and b origin is default, or specified in \&.xdrc as home or root xd 0t \- all directories starting with t below the cwd xd 2t \- all directories starting at the `grandparent\(cq\& (2 steps up) of the cwd xd \-\-start\-at root t \- all directories at the root starting with t xd \&.\&. \- all directories starting with a dot in the cwd xd \&. \- the user\(cq\&s home directory xd 0 \- the current working directory xd 1 \- the current directory\(cq\&s parent directory .fi Assuming the following directories exist: .nf /usr/lib/bonobo /usr/lib/bonobo\-activation /usr/local/bin .fi then the following two \fIignore\fP specifications in \fIxd\fP\(cq\&s configuration file will result in ignoring the \fIbonobo\fP directory alternatives: .PP First specification: .nf ignore /usr/lib/bonobo ignore /usr/lib/bonobo\-activation .fi Second specification: .nf ignore /usr/lib/bonobo* .fi .PP .SH "FILES" .IP o \fB$HOME/\&.xdrc\fP: Default location of the configuration file .IP o \fIhttps://fbb\-git\&.gitlab\&.io/xd/\fP: Home directory .PP .SH "SEE ALSO" \fBbash\fP(1), \fBioctl\fP(2), \fBsysctl\fP(8), \fBtcsh\fP(1) .PP .SH "BUGS" .PP None reported .PP .SH "ABOUT xd" .PP The program \fIxd\fP was initially (before 1994) written for the MS\-DOS platform\&. In 1994 it was redesigned to work under Unix (Linux, AIX) and it was converted to \fBC++\fP\&. The original \fBC++\fP code is still available from tag \fIstart\fP (\fIhttps://gitlab\&.com/fbb\-git/xd/tags\fP, find the \fIstart\fP tag and download) and is funny to look at as it is a remarkable illustration of \fBC++\fP code written by \fBC\fP programmers who had just learned about \fBC++\fP\&. Versions \fI2\&.x\fP were used until 2008, and in late August 2008 I rewrote \fIxd\fP completely, reflecting my then views about \fBC++\fP, eventually resulting in versions \fI3\&.x\&.y\fP and beyond\&. The \fI3\&.x\&.y\fP and later versions extensively use the facilities offered by the \fBbobcat\fP(7) library\&. .PP .SH "ACKNOWLEDGEMENTS" .PP GDS was added to \fIxd\fP following a suggestion by Bram Neijt (bram at neijt dot nl)\&. .PP .SH "AUTHOR" .PP Frank B\&. Brokken (f\&.b\&.brokken@rug\&.nl)\&.