split et impera ===================== Internet access has not always been as fast and widespread as in these days. In the late 90s I didn't have an Internet connection from home, and I used my uni account to get all sorts of software for my first GNU/Linux box (a RH 5.x). Well, the uni connection was *fast* (10-100Mb/s from the i486 "workstations", when the very best you could do from home was 33-56Kb/s). For those who remember it, that was the heyday of "sunsites", Archie, and yes, gopher as well. The only problem was that floppy disks were the only way to carry home whatever you had downloaded [->a]. And floppy disks were formatted at 1.44MB [->b]. How to bring home the latest GNU emacs-20, which was distributed as a 12MB tar.gz? Simple: you used `split(1)`, an ancient tool of great power: $ split -b 1420k emacs-20.3.tar.gz When split(1) was finished, you would have: $ ls emacs-20.3.tar.gz xaa xab xac xad xae xaf xag xah xai xaj $ split(1) had "split" the original file into chunks of 1420KB (see the option '-b 1420k'). Each of them would easily fit in a single 1.44MB floppy. Now I just had to mcopy(1) them onto 10 floppies, carry the floppies home, mcopy(1) the ten files into a folder of my desktop computer, and then give: $ cat xa* > emacs-20.3.tar.gz [->c] The original split(1) could only split a file in chunks containing a certain number of lines (1000 by default), but then evolved to allow splitting in chunks of a given size. The csplit(1) tool is a close relative of split(1), which can split a file using regular expressions. It might be very useful, for instance, to split a file in "records". -+-+-+- cat(1) appeared in UNIXv1 (1971) split(1) appeared in UNIXv3 (1973) mcopy(1) is part of GNU mtools, has been in any GNU/Linux distro since Slackware 1.0.1 (1993), but I suspect is older than that csplit(1) appeared in UNIX PWB (1977-1979) -+-+-+- [*a] you downloaded stuff in /tmp, since the user quota was at 10MB, and I used them up by compiling wmaker, links, and ncftp [*b] you could actually format those floppies to safely contain about 1.7MB, and even to less-than-safely contain about 2MB... [*c] Unfortunately, it was quite common for at least one of the 10 floppies to be broken, so I had to wait one or two days to come back to uni, hope that the machine I had used was free (/tmp was local), hope that nobody had rebooted it and the admin had not wiped /tmp, get the missing chunk, copy it into a new floppy, and wait until evening to have my whole tar.gz ready to be uncompressed and compiled. This is also how I got the first Linux 2.2 kernel.