Short Tips

# 2 Short Tips

Contents of this section

## 2.1 Moving directories between filesystems. Alan Cox, `A.Cox@swansea.ac.uk`

Quick way to move an entire tree of files from one disk to another

> `

>     (cd /source/directory; tar cf - . ) | (cd /dest/directory; tar xvfp -)

> `

## 2.2 Pointer to patch for GNU Make 3.70 to change VPATH behavior. Ted Stern, `stern@amath.washington.edu`

I don't know if many people have this problem, but there is a "feature" of GNU make version 3.70 that I don't like. It is that VPATH acts funny if you give it an absolute pathname. There is an extremely solid patch that fixes this, which you can get from Paul D. Smith `<psmith@wellfleet.com>`. He also posts the documentation and patch after every revision of GNU make on the newsgroup 'gnu.utils.bug'. Generally, I apply this patch and recompile gmake on every system I have access to.

## 2.3 How do I stop my system from fscking on each reboot? Dale Lutz, `dal@wimsey.com`

Q: How do I stop e2fsck from checking my disk every time I boot up.

A: When you rebuild the kernel, the filesystem is marked as 'dirty' and so your disk will be checked with each boot. The fix is to run:

rdev -R /zImage 1

This fixes the kernel so that it is no longer convinced that the filesystem is dirty.

Note: If using lilo, then add `read-only` to your linux setup in your lilo config file (Usually /etc/lilo.conf)

## 2.4 How to avoid fscks caused by "device busy" at reboot time. Jon Tombs, `jon@gtex02.us.es`

If you often get device busy errors on shutdown that leave the filesystem in need of an fsck upon reboot, here is a simple fix:

To `/etc/brc` or `/sbin/brc`, add the line

> `

>     mount -o remount,ro /mount.dir

> `

for all your mounted filesystems except /, before the call to umount -a. This means if, for some reason, shutdown fails to kill all processes and umount the disks they will still be clean on reboot. Saves a lot of time at reboot for me

## 2.5 How to print pages with a margin for hole punching. Mike Dickey, `mdickey@thorplus.lib.purdue.edu`

> `

>             #!/bin/sh
>             # /usr/local/bin/print
>             # a simple formatted printout, to enable someone to
>             # 3-hole punch the output and put it in a binder

>             cat $1 | pr -t -o 5 -w 85 | lpr

> `

## 2.6 A way to search through trees of files for a particular regular expression. Raul Deluth Miller, `rockwell@nova.umd.edu`

I call this script 'forall'. Use it like this:

> `

>     forall /usr/include grep -i ioctl
>     forall /usr/man grep ioctl

> `

Here's forall:

> `

>     #!/bin/sh
>     if [ 1 = `expr 2 \> $#` ]
>     then
>             echo Usage: $0 dir cmd [optargs]
>             exit 1
>     fi
>     dir=$1
>     shift
>     find $dir -type f -print | xargs "$@"

> `

## 2.7 A script for cleaning up after programs that creat autosave and backup files. Barry Tolnas, `tolnas@nestor.engr.utk.edu`

Here is a simple two-liner which recursively descends a directory hierarchy removing emacs auto-save (~) and backup (#) files, .o files, and TeX .log files. It also compresses .tex files and README files. I call it 'squeeze' on my system.

> `

>     #!/bin/sh
>     #SQUEEZE removes unnecessary files and compresses .tex and README files
>     #By Barry tolnas, tolnas@sun1.engr.utk.edu
>     #
>     echo squeezing $PWD
>     find  $PWD \( -name \*~ -or -name \*.o -or -name \*.log -or -name \*\#\) -exec
>     rm -f {} \;
>     find $PWD \( -name \*.tex -or -name \*README\* -or -name \*readme\* \) -exec gzip -9 {} \;

> `

Next Chapter, Previous Chapter

Table of contents of this chapter, General table of contents

Top of the document, Beginning of this Chapter