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.
I tend to use tools for standalone programs designed to do a particular thing, and utils for libraries and components for building applications and tools.
something that helps you to do a particular activity.
because in Unix there are certain tools that executes some specific activity.
to use something in an effective way.
Same way there are some utilities that provides the user to do something very efficiently and effective way.
Regarding apps, utility is a type of tool handling infrastructure as maintenance (copying, formatting, partitioning, compressing, defragmentation). A tool is an app in general with a practical use, like an algorithm calculating some input.