PkgBlog: bin

A set of unrelated misc. utils that Slackware apparently needs.
Package series/name: a/bin-11.1-x86_64-1
Official release: source and package
Blog entry created: 2019-01-17 and last updated 2019-01-21
Tagged: series_a misc text_utils retro_computing

This is a very Slackware-specific package. I don’t think I can improve much upon the official description from the slack-desc file:

"The bin package is a collection of miscellaneous command-line utilities. Some of these (such as 'tempfile') are used in system scripts."

The utils

bban

  • Location: /usr/bin/bban

This one is just silly! I couldn’t even find a script reference to this executable anywhere on my system. For all I know, it’s never used.

Okay, so what is it? Well, run it without any parameters and you get this:

$ bban
Usage: bban [-abcdefghijklmnopqrstuvwx] textarg [-] [...]
[-] interpolate from stdin into command line.
-w#   (Width) The page width is set to #.
-i#   (Indent) # extra blanks are left-inserted into each output line.
-b#   (Blank lines) # extra blank lines will be output before the text
-lrc  (Left, Right, Centered) ;justification of output
-jo   (Jammed,Open) -j) omit normal 1-space border on top & left
-tv   (Tall,Vertically normal)
-fh   (Fat,Horizontally normal)
-ms   (Mark string,Self) -m) next input arg. forms cyclic banner chars
	-s) each text argument character used in forming itself.
-kd   (marK,Default mark) use the text argument string to mark itself
-au   (Asis,Uppercase) affect marking characters from -s or -k
-pn   (Positive,Negative)
-ex   (Echo,eXpand)
-g    (Global)
-q    (Quit)
The default flag settings are: -lovhsupxw120i0b0
bban -jm # text (Gives results similar to the banner command)
bban -m \ EST -b-8ils EST
bban -jmn NUTS <12 underscores> -tfow72 ____NUTS____ -w72 <12 more>'
bban -j LO VE | bban -j -

Uh, what!?

I think my favorite part is this line:

The default flag settings are: -lovhsupxw120i0b0

So it didn’t take very long for me to give up trying to figure it out and just type 'foo' as a parameter:

$ bban foo


  FFFFFF    OOOO     OOOO
  F        O    O   O    O
  FFFFF    O    O   O    O
  F        O    O   O    O
  F        O    O   O    O
  F         OOOO     OOOO

Oh, ha ha! bban as in banner! I get it.

Actually, I’m rather pleased to have found this. I thought I had to install FIGlet to generate text banners. Now I know that I’ve got the minimalistic ability to do so out of the box with any default Slackware installation.

diskcopy

  • Location: /usr/bin/diskcopy

This is exactly what it sounds like. It’s a 9-line shell script for copying floppy disks by writing to a temporary file with the dd command and then writing that to another floppy with, again, dd.

Looks like this script was last updated September, 2008. I don’t know about you, but I hadn’t touched a floppy disk a number of years before 2008.

fromdos

  • Location: /usr/bin/fromdos

I’m pleased to say that fromdos actually has a man page (written in 1997). It’s for converting DOS-style line endings (CRLF) to UNIX-style (LF).

Getting files in DOS/Windows-style line-endings is something I run into less and less these days - and having it actually be a problem is even more rare. But it absolutely happens. And when it does, I’ll try to remember I have this.

mktemp

  • Location: /usr/bin/mktemp

This one is a little more standard. I’ve definitely seen it around. The man page says mktemp "appeared in OpenBSD 2.1."

Mostly used for scripts, this handy utility is a safe way to create a unique directory name (which, by default, will be created in /tmp).

Simple usage:

$ mktemp
tmp.fyTVvE

With a "template" (a string with placeholder XXXXXX to be replaced with the random chars):

$ mktemp -t fartXXXXXX
fartQbI7Ve

It has to be six 'X’s and they have to be at the end. I tried.

savelog

  • Location: /usr/bin/savelog

Another shell script - and this one dates back to 1987!

savelog explains its usage at the command line, in comments at the top of the script, and it even has a man page!

It’s a log compression and rotation script. I found some references to it on my Slackware system including this document about running Linux in an evironmentally-friendly manner: /usr/doc/Linux-HOWTOs/Ecology-HOWTO.

"Shorten the Log Files: usually the files in /var/log. There are some nice helpers for this task around, e.g. savelog."

So there you go. Running savelog could help save the Earth one byte at a time!

sysvbanner

  • Location: /usr/bin/sysvbanner

Yup, you guessed it! It’s another ASCII banner program!

$ sysvbanner foo

 ######   ####    ####
 #       #    #  #    #
 #####   #    #  #    #
 #       #    #  #    #
 #       #    #  #    #
 #        ####    ####

It doesn’t take any options. It just prints its arguments and that’s that.

I didn’t find any reference to this being used anywhere on my Slackware system either. Weird.

tempfile

  • Location: /usr/bin/tempfile

Does for files what mktemp does for directories. You can read all about in the man page. I also think it’s a little less silly because instead of a half-baked "template", it lets you specify a prefix and suffix for the file name.

todos

  • Location: /usr/bin/todos

Oh man, I was hoping this was some really early command-line productivity software.

Nope, it’s 'to DOS'. It’s the counterpart to fromdos. Booooooo.

Naw, I’m just kidding. It’s great that Slackware has this baked in. I’ve actually installed a Perl utility several times before to perform this task. I had no idea I already had what I needed with the default Slackware install (but I had my suspicions!)

Discovering these things is what this Slackware package blog is all about!

xx

  • Location: /usr/bin/xx

This is a very short shell script. I’m also guessing it’s pretty old since it doesn’t even have the standard #!/path/to/bin line at the top we’re all used to seeing.

So what does it do? Well, there are more comment lines than source lines and they’re pretty entertaining.

It’s a site:https://en.wikipedia.org/wiki/Uuencoding[uuencoded] file extractor.

I remember uuencoding from the olde days of newsgroup binaries. I guess that’s still a thing, but I’m not sure if they still use uuencoding.

Anyway, this script is like a horse whip polishing kit in the age of the automobile. But I’m never one to scoff at old tools. Heck, I just might end up using this for some reason some day.

fbset

  • Location: /usr/sbin/fbset

This one has a manpage, but the description begins with "This documentation is out of date!!" Still, any documentation is almost always better than no documentation, right?

Anyway, here’s the short description:

"fbset - show and modify frame buffer device settings"

The full description has more detail, but to really understand the context for this command, the Wikipedia page on the Linux framebuffer is very helpful.

But I’ll be honest, I finally threw in the towel on this command. Here’s how far I got:

Running fbset on it’s own will print out information about the current frame buffer. However, if like me, you didn’t pick one of the VESA options for the LILO boot configuration when you first installed Slackware, then you won’t have a framebuffer device at all:

$ fbset
open /dev/fb0: No such file or directory

After doing a little reading, I found that you can tell the Kernel to use a VESA framebuffer withe vga kernel parameter.

This can be specified in /etc/lilo.conf.

# Normal VGA console
#vga = normal
# Ask for video mode at boot (time out to normal in 30s)
#vga = ask
# VESA framebuffer console @ 1024x768x64k
vga=791

Once you’ve made a change, run the lilo command to change the stored boot settings and reboot to see what happens.

You can learn a lot more than you might want to know about the vga parameter in the Linux Kernel svga.txt document.

If you keep the normal setting, you’ll have the standard 80x25 text mode which every VGA device supports.

Well, I managed to get a nice VESA framebuffer for my Linux console so I could see four copies of Tux while I booted and a much more reasonable text size on my modern screen.

But try as I might, I couldn’t change the video mode with fbset. It simply returned without error.

Apparently I’m not alone: fbset, doesn’t do anything…​ does yours work? (linuxquestions.org).

And the conclusion there, thanks to "spikeygg", is that fbset cannot change the VESA framebuffer anyway.

While I had a VESA framebuffer, though, I did have a little fun by installing the site:https://slackbuilds.org/repository/14.2/graphics/fim/[fim] (Fbi IMproved, a framebuffer image viewer based on Fbi) package from SlackBuilds.org:

$ sudo sbopkg -i fim

Then I was able to view an image in the Linux framebuffer console without having to start X!

$ fim tux.png

But as fun as that was, I found that X now had an intolerably slow refresh rate. Switching LILO back to vga=normal solved the problem.

I’ve had VESA framebuffers with no problem before, so I’m sure I could eventually have found a setting that pleased by myself and the computer. But quite frankly, I can’t be bothered right now.

Conclusion

Well, this is not the most exciting or satisfying Slackware package. But at least it didn’t take long to explore.

I could never anticipated the life changes which would cause me to put this PkgBlog project on hold for four months. But I’m getting right back on the horse and hoping to continue with regular updates from here on out.

Happy hacking in 2019!