Friendlier shell errors

Helping people get started with Linux shells, I've noticed they tend to make two common mistakes vastly more than any others:

  1. Typing a file path without a slash, like etc/fstab
  2. typing just a filename, without a command in front of it

But as a newbie, all you know is that you type a command and get some message like "Permission denied." Why was permission denied? How are you to figure out what the real problem was? And why can't the shell help you with that?

That's what this bash function is all about. Add it to your .bashrc (or the .bashrc belonging to a friend you're introducing to Linux) and it will give you some help as you learn.

Download: bash-errs-0.1

Sample error handling:

The first line in each case is the shell's normal error message; the rest is added by this function.
$ geosched.html
bash: ./geosched.html: Permission denied

geosched.html is an HTML file. Did you want to run: firefox geosched.html

$ screenshot.jpg
bash: ./screenshot.jpg: Permission denied

screenshot.jpg is an image file. Did you want to run:
    pho screenshot.jpg
    gimp screenshot.jpg

$ .bashrc
bash: ./.bashrc: Permission denied

.bashrc is a text file. Did you want to run:
    less .bashrc
    vim .bashrc

$ ls etc/fstab
/bin/ls: cannot access etc/fstab: No such file or directory

Did you forget the leading slash?
etc/fstab doesn't exist, but /etc/fstab does.

Enjoy! Of course, consider this GPLed free software, share, modify, and by all means send me any improvements so I can include them here.

Further reading

Those of you trying to learn the shell might be interested in some of my short Linux Planet articles:

More Software
Shallowsky Home
mail me