Writing about bash

2012

You can use the command ls --color (or an alias) to show directories with colours for folders, files, links, etc. However, you may not realise these colours can be easily configured using bashrc and a configuration file.

Edit your .bashrc file (in your home directory) to include the following line …

memcached is a general-purpose distributed memory caching system originally developed by Danga Interactive for LiveJournal but now used by many other sites. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source (such …

A quick one-liner to recursively search files for a given text string.

Open up a terminal session and enter the following - replacing "foo" with the text to search for.

python
:::sh
find . -exec grep -l "foo" {} \;

You can also limit the search to files with a particular extension (e.g …

Screen is a neat little program that allows you to use multiple virtual terminals in a single session on Unix/Linux and Mac. However, it does more than just that. It can also allow you to share your current session on a machine with another user - allowing you to collaboratively …

Bash command substitution performs a given command replacing the marker with the resulting standard output. It is particularly useful when you want to store the output of a command in a variable or as an alternative method of chaining multiple commands together.

Bash command substitution is achieved by wrapping your …

A quick method to remove duplicates from text files - including for example CSV files - where multiple records have been added (perhaps automatically) at different times resulting in multiple copies of the same record scattered throughout the file. Here is a simple one-liner bash command to remove duplicates using sort.

This …

2011

System request (often abbreviated SysRq or Sys Req) is a key on keyboards for PCs that has no standard use. This key can be traced back to the operator interrupt key of the IBM System/370 mainframe computer. But under Linux there's a bunch of useful things available via this …

Brace expansion is one of the most powerful bash tricks with the potential to save you considerable time. Here are some common use cases.

Be careful with the use of spaces as these will stop expansion working. If you have any text containing spaces, wrap it in quotes. However, the …

Find the currently running processes on your system that were not started by yourself. A great way to find out what is hogging your system on multiple-user setups or remote logins.

Open up a terminal session and enter:

python
ps aux | grep -v `whoami`

ps aux returns (a) all processes …

Often forgotten the file command will give you a simple summary of a file's type and content.

At the prompt enter file <filename> where <filename> is the name of the file you are interested in.

You will receive output detailing the files contents, e.g.

A Word Document.doc: Composite …

Update your session to new settings in .bash_profile without logging out and back in again.

At the prompt enter:

source ~/.bash_profile

add the following line to your .bash_profile or .bash_aliases file alias reload='source $HOME/.bash_profile' after running source ~/.bash_profile the command reload will be available to do the same …

Find the pids of all instances/processes of a given program running on your system

Open a terminal and enter ps ax | grep "firefox" ...replacing 'firefox' with the name of the program you are looking for.

The columns in the output are as follows: (1) pid 'process id' (2) tty …

Create your own bash pipes to send program output between shells, processes and users.

You may already be familiar with the | command commonly used to send the output of one command into another, e.g. cat /var/log/messages | less. Here we create user-defined pipes to carry output between shells …

CDPATH is an environment variable which tells the cd command where to look for the specified folder. By including the parent folders of commonly used locations you can access folders more easily - and without typing an entire path.

Open up your shell profile file .bashrc (Linux) or .bash_profile (Mac).

Somewhere …

ifconfig.me is a web service that displays information about your connection, including IP address, hostname and User Agent string. Helpfully it provides a simplified interface that can be easily queried to get this information from the command line.

All commands are variations on the below. The full list is …

Re-run previously entered command as root user.

python
sudo !!

!! is automatically substituted to the content of the previous command. Turning the above line into sudo <your command here>.

Bash history expansion allows you to quickly re-run previous commands using ! and the number of the command in your history.

method/1492/Screen Shot 2012-04-22 at 16.03.03.png

You can adjust the size of the history by setting the HISTSIZE variable in the shell e.g. export HISTSIZE=1000. You can clear the current history with history -c …

Interactively search through your command line history with a simple keyboard shortcut.

method/1491/Screen Shot 2012-04-22 at 15.55.21.png

At a new shell prompt (bash or Terminal.app on Mac) press Ctrl-R

Start typing the search string to lookup in your bash history. As you type the top matching command in your history will appear.

Hit Return …

GNU Screen is a command-line application that allows use of multiple virtual sessions within a single real terminal or remote session. Importantly, it allows for persistent running of command-line applications independent of the shell that initiated them program, meaning active applications can persist during disconnection.

This is just one of …

When in a repository directory you can show the name of the currently checked out Git branch in the prompt, making it easier to track where you are (and where you're about to commit).

method/1472/GitBranchName_1.png

The following instructions are written for Mac OS X (Lion) or later, using a terminal with …

Show a warning in the Terminal's prompt when the current working directory is no longer where the shell expects it to be. (e.g. it was deleted or replaced by a new, different directory with the same name by some other app).

method/1471/TerminalPWDChecks.png

Why is this useful? Take the scenario where …

Established 1980