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!
- Server Hardening
- May 2016 Issue of Linux Journal
- EnterpriseDB's EDB Postgres Advanced Server and EDB Postgres Enterprise Manager
- The Humble Hacker?
- BitTorrent Inc.'s Sync
- The Death of RoboVM
- The US Government and Open-Source Software
- New Container Image Standard Promises More Portable Apps
- Open-Source Project Secretly Funded by CIA
- ACI Worldwide's UP Retail Payments
In modern computer systems, privacy and security are mandatory. However, connections from the outside over public networks automatically imply risks. One easily available solution to avoid eavesdroppers’ attempts is SSH. But, its wide adoption during the past 21 years has made it a target for attackers, so hardening your system properly is a must.
Additionally, in highly regulated markets, you must comply with specific operational requirements, proving that you conform to standards and even that you have included new mandatory authentication methods, such as two-factor authentication. In this ebook, I discuss SSH and how to configure and manage it to guarantee that your network is safe, your data is secure and that you comply with relevant regulations.Get the Guide