System administration command logger
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


adl (which stands for "admin log") is a tool for recording the commands you type on the command line while administering your computer.

So for example, when you install a package or edit a config file, you can use adl to keep a track of the changes you've made.

Your actions are logged to /root/LOG, in the form of a shell script. This makes it very easy to:

  • repeat all these commands if you later need to re-install your computer (by running sh LOG), and
  • remind yourself how you installed or configured something.

See the announcement for more details.


Move the adl script to somewhere in your $PATH, and make sure it's executable. For example, you might choose to put it in /usr/local/bin:

$ sudo cp adl /usr/local/bin/
$ sudo chmod +x /usr/local/bin/adl


To record a command in the LOG file, prefix it with adl. The command you type will be executed, and then recorded in the log.

So to give you an example, on a Debian-based computer, this command would install the ssh package, and append 'apt-get install ssh' to the LOG file:

# adl apt-get install ssh

You can add block comments to document a group of commands with the -C switch:

# adl -C "Installing and configuring Apache"

If you want to record a change to a config file, use the -e switch to open it in your editor:

# adl -e /etc/hosts

When you save the file and quit your editor, adl will record the change you made in a manner that can be repeated automatically with the patch command.

Imagine that you've just used adl to edit the /etc/hosts file, adding the IP address for a computer called "batman". The text that's written to the LOG file when you quit your editor might look like this:

patch /etc/hosts <<'EOPATCH'
--- /etc/hosts.orig	2017-10-03 21:49:49.143301665 +0100
+++ /etc/hosts	2017-10-03 21:50:00.663741961 +0100
@@ -1,6 +1,8 @@	localhost	robin.lan	robin
+	batman.lan	batman
 # The following lines are desirable for IPv6 capable hosts
 ::1     localhost ip6-localhost ip6-loopback
 ff02::1 ip6-allnodes

If we later wanted to repeat that edit for some reason, we could execute the above code as part of a script, and it would take care of it for us.

That's pretty much it. adl records your system administration commands, as you execute them, in a manner that allows you to just execute them all again later.

It's basic, yet powerful. I often find myself referring to the LOG file simply to remind myself how I achieved something, and to provide me with a boiler plate for reproducing it on other computers.