DirB, Directory Bookmarks for Bash
Now it's possible to move to a directory using cd or g. Wouldn't it be simpler to have one way that worked for both bookmarks and directory paths? Of course it would. So, DirB's g command has been extended to be able to replace cd fully:
% pwd /home/Desktop % g /tmp % pwd /tmp
The g command behaves the same as the cd command if the first character of the argument is a period (.) or if the argument is not the name of a saved bookmark. The special case of the first character being a period allows you to move to a current subdirectory that has the same name as a previously saved bookmark:
% cd /tmp % mkdir d % g ./d % pwd /tmp/d
If you use the command: g d instead of g ./d above, DirB takes you to your desktop, as a bookmark for the desktop with the name of d already exists.
If the argument to g is the relative or absolute path of a directory and there is no bookmark by that name, you are taken to the specified path:
% cd /tmp % mkdir subdir % g subdir % pwd /tmp/subdir
As with the cd command, if you enter the g command without an argument, you go to your home directory:
% cd /tmp % g % pwd /home
Most of the source code directories I work in are organized with the same layout. From the application's source code directory, I frequently need to refer to header files in my standard library. These headers are located two directories up and two directories down in the filesystem: ../../stdlib/inc.
DirB can save relative bookmarks or bookmarks of any specified path. It is not necessary to be in the directory to be bookmarked. A longer version of the s command can be used to specify a bookmark's path:
% g projA % pwd /home/projectA/source/application/main % s stdh ../../stdlib/inc % g stdh % pwd /home/projectA/source/stdlib/inc
Once the relative bookmark has been created with the s command, relative movements can be made easily from anywhere that the relative path exists:
% g projB % pwd /home/projectB/source/application/main % g stdh % pwd /home/projectB/source/application/main
This longer version of the s command sets a full path directory bookmark without changing to the target directory first:
% g projA % pwd /home/projectA/source/application/main % s t /tmp % pwd /home/projectA/source/application/main % d t /tmp
Note that the current working directory was not changed by the s command and that the bookmark was set to the argument of the s command and not the current directory. The bookmark can be used later, the same as simpler bookmarks:
% g t % pwd /tmp
As the g command extends Bash's built-in cd command, DirB has the p command to extend the shell's pushd command and also replaces the most common usage of the shell's popd command.
In its most-used form, the p command changes to a new directory, while remembering the current directory on a stack. The state of the directory stack then is printed:
% g % pwd /home % p /tmp /tmp ~
The tilde (~) is Bash's shortcut for the home directory. The target just as easily can be a bookmark:
% p d ~/Desktop /tmp ~
The directory stack listing is done with one directory per line, instead of the default listing style of pushd with all the directories printed across the line. This is a personal preference and is accomplished by discarding the output from the invoked pushd command and then running a dirs -p command afterward.
Except for bookmark targets and the target dash (-), the p command works just as Bash's pushd command. In fact, all the real work is accomplished, behind the scenes, by pushd. So the normal pushd behavior, as well as the enhanced bookmark functionality, is valid (and useful):
% p directory # adds dir to top of dir stack % p bookmark # adds bookmark to dir stack % p # swaps top two stack entries % p +n # rotate nth entry from top to top % p -n # rotate nth entry from bottom to top
To rotate the directory stack, so that the bottom directory moves to the top of the stack as the current directory, use p -0. In addition to replacing pushd, the p command also can replace the shell's popd command in its simplest form:
% g % pwd /home % p /tmp /tmp ~ % p - ~
If the full functionality of the popd command is needed, the standard popd command (along with pushd and cd) still is available and can be used alongside the DirB commands.
To get a listing of the current directory stack, the shell's dirs command works as it did before DirB.
Fast/Flexible Linux OS Recovery
On Demand Now
In this live one-hour webinar, learn how to enhance your existing backup strategies for complete disaster recovery preparedness using Storix System Backup Administrator (SBAdmin), a highly flexible full-system recovery solution for UNIX and Linux systems.
Join Linux Journal's Shawn Powers and David Huffman, President/CEO, Storix, Inc.
Free to Linux Journal readers.Register Now!
|Secure Desktops with Qubes: Introduction||May 27, 2016|
|Chris Birchall's Re-Engineering Legacy Software (Manning Publications)||May 26, 2016|
|ServersCheck's Thermal Imaging Camera Sensor||May 25, 2016|
|Petros Koutoupis' RapidDisk||May 24, 2016|
|The Italian Army Switches to LibreOffice||May 23, 2016|
|PeaZip||May 20, 2016|
- Download "Linux Management with Red Hat Satellite: Measuring Business Impact and ROI"
- Secure Desktops with Qubes: Introduction
- Chris Birchall's Re-Engineering Legacy Software (Manning Publications)
- The Italian Army Switches to LibreOffice
- Linux Mint 18
- Petros Koutoupis' RapidDisk
- ServersCheck's Thermal Imaging Camera Sensor
- Oracle vs. Google: Round 2
- The FBI and the Mozilla Foundation Lock Horns over Known Security Hole
Until recently, IBM’s Power Platform was looked upon as being the system that hosted IBM’s flavor of UNIX and proprietary operating system called IBM i. These servers often are found in medium-size businesses running ERP, CRM and financials for on-premise customers. By enabling the Power platform to run the Linux OS, IBM now has positioned Power to be the platform of choice for those already running Linux that are facing scalability issues, especially customers looking at analytics, big data or cloud computing.
￼Running Linux on IBM’s Power hardware offers some obvious benefits, including improved processing speed and memory bandwidth, inherent security, and simpler deployment and management. But if you look beyond the impressive architecture, you’ll also find an open ecosystem that has given rise to a strong, innovative community, as well as an inventory of system and network management applications that really help leverage the benefits offered by running Linux on Power.Get the Guide