Operation from document

Documentation is important. Even if you work alone. It saves time  in the future, and the future comes very soon. But writing what you did after the work is hard.

So my way is to write what I will do before the work, and use that note as a script. I usually do not type in the command line directly.

For example, when you want to build GNU tools, you sometimes have to tweak around the options. It would be nice if you can save what you did for the future reference. I usually use meta-level Makefile; for example,

    LIBUSB = libusb-0.1.12
    ROOTFS = $(HOME)/build/rootfs
    cd $(LIBUSB); ./configure \
    --host=mips-ce3m-linux \
    --prefix=$(ROOTFS) \
    2>&1 | tee $(LIBUSB)-configure.log
    $(MAKE) -C $(LIBUSB) clean
    $(MAKE) -C $(LIBUSB) 2>&1 | tee $(LIBUSB)-make.log
    $(MAKE) -C $(LIBUSB) install 2>&1 | tee $(LIBUSB)-install.log

There is no need of further writing.

For more interactive case, I write the command sequence in my note, which is a big text file: ~/Note. For example,

    objcopy -O binary linux/vmlinux /export/vmlinux.bin
    ssh windows 'lenghthy-ugly-command'

On Emacs, I use F1 key to send those lines to the shell.

    (global-set-key '[f1] (lambda () 
            "Send the current line to the other window."
            (let ((a (progn (beginning-of-line) (point)))
                  (b (progn (end-of-line) (point))))
              (kill-ring-save a b))
            (other-window 1) (goto-char (point-max)) 
            (yank) (comint-send-input)
            (other-window 1) (end-of-line 2)))