Get more work done in less time and keystrokes, using the command line interface on Linux, Mac, & other UNIX-ish systems.
Switch directories with”$OLDPWD” or “-”
$OLDPWD variable evaluates to the path of the previously visited directory. The hyphen(-) symbol as shorthand on most shells.
Both are quick way to hop back-and-forth between any two directories.
mannycrafts@devunstuck:/opt/bitnami/wordpress$ cd wp-admin/ mannycrafts@devunstuck:/opt/bitnami/wordpress/wp-admin$ cd - /opt/bitnami/wordpress mannycrafts@devunstuck:/opt/bitnami/wordpress$ echo $OLDPWD /opt/bitnami/wordpress/wp-admin mannycrafts@devunstuck:/opt/bitnami/wordpress$ cd $OLDPWD mannycrafts@devunstuck:/opt/bitnami/wordpress/wp-admin$ pwd /opt/bitnami/wordpress/wp-admin
Most of us learn to exit out of file directories by typing
cd .. into one prompt after another. Eventually we might graduate to using sequences of dots and slashes eg.
../../../.. at the prompt. But even this method is not lazy enough..
#travel up through directories, one level per up period alias ..="cd .." alias ...="cd ../.." alias ....="cd ../../.." alias .....="cd ../../../.." alias ......="cd ../../../../.." alias .......="cd ../../../../../.."
This trick won’t work out of the box on certain Linux distributions and shells. See Max Hoffman‘s guide on making this more broadly compatible:
Keep colors on redirected output
Text color is often lost when output for commands like
ls -la is redirected or piped to pagers( e.g. less).
grep to keep terminal color codes.
mannycrafts@devunstuck:/opt/bitnami/wordpress$ ls -la --color=always | less -R
Other programs (e.g.,
pod2text ) accept a plain
--color flag with no additional parameters.
Neat filename output with ls -1
ls -l ( lowercase L ) will output a list of files with several other details, but sometimes it’s more information than desired( e.g. when piping files as input ).
To list just the filenames, use the
-1 ( number one ) flag.
mannycrafts@devunstuck:/opt/bitnami/wordpress$ ls -1 admin-wp index.php licenses license.txt mannycrafts-wp.log readme.html tmp wp-activate.php wp-admin wp-blog-header.php
Use Explain Shell
Use Explain Shell web app to decipher unfamiliar commands and options without having to dig through the man pages for each flag.
Set $MANPAGER To Vim
Vim natively man page awareness comes in handy, When you need to go down the rabbit hole…or man hole 💩 for any programs or tools.
man pages for most programs are littered with references to other executables. The risk of losing your precious train of thought is highest while opening and closing many different man pages while doing this sort of research.
To set vim as your $MANPAGER run the following command( or place in ~/.bash_profile ) :
export MANPAGER="/bin/sh -c \"col -b | vim -c 'set ft=man ts=8 nomod nolist nonu noma' -\""
Now you can quickly jump to any manpage listed under the cursor, using the CTRL-K command
Use Vim’s CTRL-O, CTRL-I key combo to jump traverse back through visited man pages.
Full-text search man pages
Most Linux users will be aware of the -k flag for finding programs by keywords. This search is fast but only checks program descriptions.
For a more thorough search, use
man -K thesearchterm and browse through results using CTRL-D to skip irrelevant ones, till the one you are searching for turns up.
It could take a few minutes for the full-text search of all available man pages to complete.
$ man convert No manual entry for convert $ man -K convert --Man-- next: rst-buildhtml(1) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ] --Man-- next: rst2html(1) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ] --Man-- next: rst2html4(1) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ] --Man-- next: rst2html5(1) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ] --Man-- next: rst2latex(1) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]