I find these two words appear together often, especially mentioned as tool and utility for the Unix operating system. So I am wondering about the difference between them.
They are used pretty interchangeably when talking about software. One explanation from Wikipedia:
Utility software is system software designed to help analyze, configure, optimize or maintain a computer. A single piece of utility software is usually called a utility or tool.
"Tool" is sometimes reserved for items that are more robust, such as having a GUI or more functionality. One example of this distinction can be found in the description of the Visual Studio power tools:
Power Tools are a set of enhancements, tools and command-line utilities.
However, that distinction is mostly a matter of preference.
Both tool and utility are nouns, but, while tool is a concrete noun, utility is an abstract noun, meaning the use one gets out of something. In computing, of course, both are Metaphors, since all computing terms are metaphors. But they're different metaphors.
Utility, on the other hand, refers to a particular kind of low-level "tool" programs, the "utility programs". This is the same construction as "utility outfielder" -- on the other hand, "utility crew" is a different construction that refers to the extension of Utility/ies to refer to electric, gas, water, sewage, and other common civic services.
"Utility programs" are the ones that do general-purpose software scutwork, like copying, compressing, sorting, and filtering. Many UNIX™ tool programs are utility programs --
rev, sort, ls, mv, head, etc.