4

Such as cp, ls, grep, ps...

Are they stand-alone applications pre-installed on the operating system or the innate part of the operating system?

xczzhh
  • 2,185

3 Answers3

10

In Ubuntu you will find Coreutils installed .

This package contains the basic file, shell and text manipulation utilities which are expected to exist on every operating system.

Specifically, this package includes: arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir dircolors dirname du echo env expand expr factor false flock fmt fold groups head hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir runcon sha*sum seq shred sleep sort split stat stty sum sync tac tail tee test timeout touch tr true truncate tsort tty uname unexpand uniq unlink users vdir wc who whoami yes

Core GNU utilities .

You will find most of the basic commands from Core Utilities description page, said that , Linux is just a Name of Kernel, Whereas Ubuntu is an Entire Advanced Integrated OS of such utilities. As in Question Such as cp, ls, grep, ps...

 Are they stand-alone applications pre-installed on the operating
 system or the innate part of the operating system?

They together actually forms Ubuntu/Linux Operating System , Either of them existing standalone doesn't help much.

Shell is basically Bridge between kernel and the user, a Command Interpreter where user can type command and the command is conveyed to the kernel and it will be executed.And it is Different from Kernel , refer basic image below

enter image description here

And for more descriptive image

enter image description here

File Manager mostly forms the Front-End of common Core Utilities.


So how does that innate thing happens , its because ,

Linux is Monolithic kernel where all services (file system, VFS, device drivers, etc) as well as core functionality (scheduling, memory allocation, etc) are a tight knit group sharing the same space. It provides the shortest path to a working, stable kernel .Whereas Memory, Process and Device managing are the functions of any Kernel.

There is also a very good description provided here at How to understand the Ubuntu file system layout?

Additions related to Libraries-

The GNU C Library and GCC GNU Compiler Collection is most important Library and Core requirement of Ubuntu/Linux Operating system. One of the reasons is Kernel is written Primary in C and hardware specific code using Assembly language.

To some extent "OS is made up of two parts, i.e., Kernel and Shell" holds true , for example Servers , and Minimal Linux based Distros. But for a fully fledged Ubuntu Desktop you need more then just Kernel and Shell.

Gtk (Gnome) is based on C and C++ , Qt(Kde) uses mostly C++ i guess , they don't have any libraries in common. Which is why they provide different User experience.

For utilities ( packages ) , you will find Python pre-installed in Ubuntu & Ubuntu-distros , to provide extended functionalities to python based Applications ( Like Window managers i guess) and Scripts . As i mentioned early "They together actually forms Ubuntu/Linux Operating System , Either of them existing standalone doesn't help much."

You can further refer the question How can I know if my an application on my desktop environment is loading other DE's modules, libraries, etc? .

atenz
  • 12,772
  • Thank you so much for the descriptive answer. According to your answer, may I conclude that the various (GNU)utilities are neither part of the shell nor part of the kernel? But this leads me to another question, why it is said everywhere that OS is made up of two parts, i.e., Kernel and Shell, which is obviously not true because there are many other parts like libraries and utilities? – xczzhh Jul 12 '12 at 02:27
  • I edited the answer to include more info. – atenz Jul 12 '12 at 05:35
  • Thank you for the clarification. Excuse my limited experience of different liinux distros, but what's it like to use a Minimal Linux Based Distros? What kind of commands would make it work? For example, in a full-fledged distro like Ubuntu, we would usually use the utility apt-get to install applications, and grep to search key words and etc... How could the Minimal Linux based Distros accomplish these tasks? or they just don't do these things? – xczzhh Jul 12 '12 at 06:48
  • If it don't do things , it ain't Linux, you can refer the web or explore this Distrowatch site or see List of Linux distributions for all that Linux world can Offer. Also it would off-topic too :). All the Linux based are different in packaging , support and Development. But all the above mentioned utilities forms the core part of any Linux Distro. – atenz Jul 12 '12 at 06:57
3

Linux is but a kernel, allowing you to run executables with ELF headers. It contains only the most important files necessary to boot--itself, and calls init, which may just load upstart. However, it is important as it is needed to get at even the most basic utilities.

init is responsible for starting a login prompt, which can be considered an "innate part of the Operating System." It will load a shell. While necessary for proper Linux use, it is not part of the kernel, but still very innate. A few commands are part of this shell, and available as executables in /usr/bin, /bin, or /sbin. ps and grep are separate executables that are not necessarily "innate". A complete list of what I consider "innate parts of the Operating System":

  • The Kernel (Linux)
  • Filesystem drivers (only sysfs, mount, and drivers necessary for mounting the root filesystems, /bin, and /sbin,)
  • A logon shell, necessary for doing "anything", which includes essential commands not included in /bin/, /sbin, or /usr/bin.
  • Many commands in /bin and /sbin.
  • Effectively, libc, as almost every program uses it.
  • Drivers necessary to get any disks, or other critical hardware working
  • According to Debian package policy, dpkg(and its dependencies) are essential as they allow one to get additional utilities, although one may introduce important executables from external media
Eliah Kagan
  • 117,780
nanofarad
  • 20,717
  • I learned from a book that an operating system(the kernel) is made up of four essential parts: memory manager, process manager, device manager and file manager. Could you tell me the relationship between the four parts and the various utilities? Are the utilities are just the some kind of "add-ons" to the BIG FOUR? Thank you :) – xczzhh Jul 09 '12 at 11:54
  • @xczzhh The first three are part of my first entry in the list, and the file manager is partly filesystem code and partly the shell that lets you traverse folders. However, the kernel is still involved by maintaining a system-wide list of filesystem mounts. – nanofarad Jul 09 '12 at 11:56
  • Thank you again. But, is file manager like a file system such as NTFS/FAT? Seems to me that a disk drive can be formatted with various file system types... PS, am I right to say that some management functions(memory managing, process managing and device managing) are actualized by using the various utilities? If so, Can I say the utilities that are performing these tasks are innate? – xczzhh Jul 09 '12 at 12:10
  • @xczzhh A fie manager is a system for looking at folder structure and keeping track of it. Support for filesystems is in separate drivers, and the same file manager can support multiple file systems, as it gets file lists from the kernel that gets them from the driver. – nanofarad Jul 09 '12 at 12:12
  • 1
    No problem. (1) init doesn't load upstart. There is no upstart executable. upstart is init--it's the implementation of init designed by Canonical for Ubuntu (which can also be used on other OSes that use Linux and GNU libc). (2) mount is not a driver, and neither is anything else in /bin. Drivers are either built into the kernel, or are kernel modules. Sometimes something can be called a driver if it runs in userspace through a userspace driver framework (which is itself a kernel module, or built into the kernel). But /bin and /sbin contents aren't drivers. – Eliah Kagan Jul 11 '12 at 13:14
1

Command line tools such as ls, grep, cat and many others comprise the 'GNU coreutils', which is the standard toolset present on any GNU/Linux system. For a very useful summary of the utilities, and about how to use them, enter this in terminal:

info coreutils

To output it to file:

info coreutils > coreutils.txt

(In answer to your other question, they are not part of the kernel or integrated within it. They are used in your terminal shell session as tools to achieve what you want to do.)