Linux and Shell programming ( B.tech 3rd semester)
Unix
·
Unix is
an Operating System that is truly the base of all Operating Systems like
Ubuntu, Solaris, POSIX, etc.
·
Unix operating system is a set of program
that play a role as a connection between the computer and the user.
·
It was originally meant for programmers
developing software rather than non-programmers.
·
The shell is a command line interpreter.
·
Unix was considered to be the heart of the
operating System. The system
linux Architecture:-
The main concept that
combines all the versions of linuix is the following four area:
- ·
Keranl
- ·
Shell
- ·
Command and Utilities
- ·
Files and Directories
Structure of Unix OS are as
follows
- 1UNIX is a family of multitasking,
multiuser computer operating systems.
- 2 It was originally developed for mini
computers.
- 3.
UNIX has a reputation for stability,
security, and scalability.
key features of UNIX
include:
1. Multiuser
support: UNIX allows multiple users to simultaneously access the same system
and share resources.
2. Multitasking:
UNIX is capable of running multiple processes at the same time.
3. Shell
scripting: UNIX provides a powerful scripting language that allows users to
automate tasks.
4. Security:
UNIX has a robust security model that includes file permissions, user accounts,
and network security features.
5. Portability:
UNIX can run on a wide variety of hardware platforms, from small embedded
systems to large mainframe computers.
6. Communication:
UNIX supports communication methods using the write command, mail command, etc.
7. Process
Tracking: UNIX maintains a record of the jobs that the user creates.
Linux Command
Sudo:-
Linux sudo command
stands for Super User Do. Generally, it is applied as a prefix of a
few commands that superuser is allowed to execute.
Syntax
$ sudo OPTION... COMMAND
Option in sudo command:-
1) -V: It stands for version. This option
enables the sudo command for printing the number of the version and exit.
2) -l: It stands for list. This option
will help to printout the various commands permitted the user over the current
host.
3) -h
or -help: The
h stands for help in this option.
4) -v: It stands for validate.
5) -k: It stands for kill. This
option invalidates the timestamp of the user to sudo.
6) -b: It stands for background
7) -K: This option is the same as the -k option.
However, it stands for sure kill.
8) -p: It stands for prompt.
This option permits us for overriding the password prompt (default) and apply a
custom one. A few percent escapes are permitted which are as follows:
·
%u is developed to the login
name of the invoking user.
·
%U is developed to the user's
login name
·
%h is developed to the hostname
(local) without any name of the domain.
·
%H is developed to the hostname
(local) with the name of the domain (only when the hostname of the machine is
completely qualified)
·
%% (two consecutive characters)
can be broken into an individual % character.
Man Command
The
"man" is a short term for manual page. The man command
in Linux is used to display the manual pages for other
commands and utilities. It provides detailed documentation about the usage,
options, and functionality of commands, making it an essential tool for both
beginners and experienced users.
Syntax:-
$ man
[option] [command]
For
example: To view the manual for the “ls”
command execute the following command:
$ man ls
Navigating
Manual Pages
- Spacebar: Move
forward one page.
- Enter: Move
forward one line.
- B: Move
backward one page.
- Q: Quit
the manual viewer.
Sections
in Manual Pages
- NAME: Provides
the name and a brief description of the command.
- SYNOPSIS: Describes
the syntax of the command.
- DESCRIPTION: Offers
a detailed explanation of the command’s functionality.
- OPTIONS: Lists
the available command-line options and their descriptions.
- EXAMPLES: Provides
practical examples demonstrating command usage.
- SEE ALSO: Suggests
related commands or resources.
echo
The echo command
in Linux is a built-in command that allows users to display lines of text or
strings that are passed as arguments. It is commonly used in shell scripts and
batch files to output status text to the screen or a file.
Syntax:
$ echo [string]
$ echo "Geeks for Geeks"
Output:- Geeks for Geeks
Options
Available in `echo` command in Linux
1. \b : it
removes all the spaces in between the text
Example:- echo -e "Geeks \bfor \bGeeks"
Output:- GeeksforGeeks
2. \c : suppress
trailing new line with backspace interpreter ‘-e‘ to continue without emitting
new line. text after \c is not printed and omitted trailing new line.
Example:- echo -e
"Geeks \cfor Geeks"
Output:- Geeks
3. \n : this option
creates a new line from where it is used.
Example:- echo -e "Geeks \nfor
\nGeeks"
Output:- Geeks
For
Geeks
4. \t : this option is used to create
horizontal tab spaces.
Example: echo -e "Geeks \tfor \tGeeks"
Output:- Geeks
for Geeks
5. \r : carriage
return with backspace interpreter ‘-e‘ to have specified carriage return in
output. Text before \r is not printed.
Example: echo -e "Geeks \rfor Geeks
Output:- for Geeks
6. \v
: this option
is used to create vertical tab spaces.
Example: echo -e "Geeks
\vfor \vGeeks
Output:- Geeks
for
Geeks
7. \a : alert return with backspace interpreter
‘-e‘ to have sound alert.
Example: echo -e "\aGeeks for Geeks"
8. echo
*: this command will print all files/folders, similar to ls
command.
Example: echo *
10. Redirecting `echo` Output:-
The output
of the `echo` can be redirected to a file instead of displaying it on the
terminal. We can achieve this by using the `>` or `>>` operators for
output redirection.
Example: echo "Welcome GFG" > output.txt
This will
write the output of the echo command to the file name `output.txt`. File will
be overwritten if it already exists.
If we want
to append the output in an existing file, we use `>>` instead of `>`.
Printf command in Linux
Uname command
Umask:-
Umask
is a shell built in command though it is also exists as an external command. A
user can also use this command to set a new default value.
The
UNIX system has the following default permission for all files and directories
·
rw-rw-rw- (octal 666) for regular files
·
rwxrwxrwx (octal 777) for directories
Syntax:-
$ umsak
Output-
022
Gzip:-
The
gzip command in Linux is popular file comparison utility that can compress
individual file to save disk space and make then easier to move to backups or
archives.
Syntax:-
gzip file_name
Output:-
above file name is converting in zip file(file_name.gz)
Tar:-
For
creating a disk archive that contain a group of file or directory structure, we
need to use tar.
Option:-
-c
– create an archive
-x
– extract files from archive
-t
– display files in archive
Find:-
·
It is recursively examines all files in
the directories specified in path_list
·
It then match each files for one or more
selecton_criteria.
·
It take some action on those selected
files.
Telnet:-
·
It is used for remote communication and
control.
·
Execute the talent commend followed by the
host name or Ip address.
Syntax:
$ telnet 192.168.35.12
ftp: -
·
It is used to transfer files between
hosts.
·
Syntax:- $ ftp Saturn
Satrun is host name.
·
After establishing a connection with
satrun, ftp prompt for the username and
password.
·
To quit ftp, break the connection with
close.
unlink:-
·
It is used for delete a specified file
name.
·
Unlink can only remove one file at a time.
·
Suntax:- $ unlink file_name
du and df:-
du
command measurers the disk space occupied by files and directories
df
command define the number of blocks used, number of block available and the
directories where the file system is mounted.
Mount:-
Mount
command is used to mount the filesystem found on a device a big tree structure
rooted at ‘/’.
Syntax:-
$ mount
Umount;-
Umound
command can be used to detach these devices from the tree.
ulimit:-
Ulimit
is a admin access required Linux shell command which is used to see, set, or
limit the resources usage of current user.
Suntax:-
$ ulimit
Arp:-
Arp
stands for address resolution protocol.
It
handle the mapping between an internet protocol (IP)address and media access
control (MAC) address.
Cmp:-
·
It is used for comparing two files
·
Syntax: $ cmp file1 file2
Comm:-
comm
command compare two sorted files line by line and write to standard output.
Syntax:-
$ comm file1 file2
Tr:-
Tr
command is used for translating or deleting characters.
Syntax:
cat file_name | tr [a-z] [A-Z]
Output:-
all file character display in capital letters
Cpio:-
Cpio
stands for copy in copy out.
It
is used for processing the archieve files like *.cpuo or *.tar.
Option:
-i
-extract file
-o
-create the archive file and it runs only in copy out mode
-p
-pass-through run-in copy pass mode
-t
- print a table of content
Unit-2
Linux File System
·
A Linux file system is a structured
collection of files on a disk drive or a partition.
·
A partition is a segment of memory and
contains some specific data. In our machine, there can be various partitions of
the memory.
·
The general-purpose computer system needs
to store data systematically so that we can easily access the files in less
time.
·
It stores the data on hard disks
(HDD) or some equivalent storage type. There may be below reasons for
maintaining the file system:
·
Primarily the computer saves
data to the RAM storage; it may lose the data if it gets turned off. However,
there is non-volatile RAM (Flash RAM and SSD) that is available to maintain the
data after the power interruption.
·
Data storage is preferred on
hard drives as compared to standard RAM as RAM costs more than disk space. The
hard disks costs are dropping gradually comparatively the RAM.
The Linux file
system contains the following sections:
·
The root directory (/)
·
A specific data storage format (EXT3, EXT4, BTRFS, XFS and so on)
·
A partition or logical volume having a particular file system.
The Architecture of a File System:
A
file system mainly consists of 3 layers. From top to bottom:
Logical
file system interacts with the user application
with the help of an API to provide open, read, close, etc. operations and
passes requests to the layer below.
Virtual
file system enables multiple instances of the
physical file system to run concurrently.
Physical
file system handles the physical aspect of the
disk while managing and storing physical memory blocks being read and written.
Linux File System Structure
Linux file
system has a hierarchal file structure as it contains a root directory and its
subdirectories. All other directories can be accessed from the root directory.
A partition usually has only one file system, but it may have more than one
file system.
Linux file
system contains two-part file system software implementation architecture.
Consider the below image:
File descriptors in linux
File
Descriptors are non-negative integers that act as an abstract handle to “Files”
or I/O resources (like pipes, sockets, or data
streams). These descriptors help us interact with these I/O resources and make
working with them very easy.
Every
process has it’s own set of file descriptors. Most processes (except for some
daemons) have these three File Descriptors :
Descriptive Name |
File Number |
Description |
Standard In |
0 |
Input from the keyboard |
Standard Out |
1 |
Output to the console |
Standard Error |
2 |
Error output to the console |
System calls
·
A system calls is a procedure that
provides the interface between a process and the operating system. It is the
way by which a computer program requests a service from the kernel of the operating
system.
·
Different operating systems execute
different system calls.
·
In Linux, making a system call involves
transferring control from unprivileged user mode to privileged kernel mode; the
details of this transfer vary from architecture to architecture. The libraries
take care of collecting the system-call arguments and, if necessary, arranging
those arguments in the special form necessary to make the system call.
System calls are divided into 5
categories mainly :
·
Process Control
·
File Management
·
Device Management
·
Information Maintenance
·
Communication
Process Control :
This
system calls perform the task of process creation, process termination, etc.
The Linux System calls under this are fork() , exit() , exec().
·
fork()
- A
new process is created by the fork() system call.
- A
new process may be created with fork() without a new program being
run-the new sub-process simply continues to execute exactly the same
program that the first (parent) process was running.
- It
is one of the most widely used system calls under process management.
·
exit()
- The
exit() system call is used by a program to terminate its execution.
- The
operating system reclaims resources that were used by the process after
the exit() system call.
·
exec()
- A
new program will start executing after a call to exec()
- Running
a new program does not require that a new process be created first: any
process may call exec() at any time. The currently running program is
immediately terminated, and the new program starts executing in the
context of the existing process.
File Management :
File management system calls handle file
manipulation jobs like creating a file, reading, and writing, etc. The Linux
System calls under this are open(), read(), write(),
close().
·
open():
- It
is the system call to open a file.
- This
system call just opens the file, to perform operations such as read and
write, we need to execute different system call to perform the
operations.
·
read():
- This
system call opens the file in reading mode
- We
can not edit the files with this system call.
- Multiple
processes can execute the read() system call on the same file
simultaneously.
·
write():
- This
system call opens the file in writing mode
- We
can edit the files with this system call.
- Multiple
processes can not execute the write() system call on the same file
simultaneously.
·
close():
- This
system call closes the opened file.
Device Management :
Device management does the job of device
manipulation like reading from device buffers, writing into device buffers,
etc. The Linux System calls under this is ioctl().
·
ioctl():
- ioctl()
is referred to as Input and Output Control.
- ioctl
is a system call for device-specific input/output operations and other
operations which cannot be expressed by regular system calls.
Information Maintenance:
It handles information and its transfer
between the OS and the user program. In addition, OS keeps the information
about all its processes and system calls are used to access this information.
The System calls under this are getpid(), alarm(), sleep().
·
getpid():
- getpid
stands for Get the Process ID.
- The
getpid() function shall return the process ID of the calling process.
- The
getpid() function shall always be successful and no return value is
reserved to indicate an error.
·
alarm():
- This
system call sets an alarm clock for the delivery of a signal that when it
has to be reached.
- It
arranges for a signal to be delivered to the calling process.
·
sleep():
- This
System call suspends the execution of the currently running process for
some interval of time
- Meanwhile,
during this interval, another process is given chance to execute
Communication :
These
types of system calls are specially used for inter-process communications.
Two
models are used for inter-process communication
1. Message Passing(processes exchange messages
with one another)
2. Shared memory(processes share memory region
to communicate)
The system calls under this are pipe() , shmget() ,mmap().
·
pipe():
- The
pipe() system call is used to communicate between different Linux
processes.
- It
is mainly used for inter-process communication.
- The
pipe() system function is used to open file descriptors.
·
shmget():
- shmget
stands for shared memory segment.
- It
is mainly used for Shared memory communication.
- This
system call is used to access the shared memory and access the messages
in order to communicate with the process.
·
mmap():
- This
function call is used to map or unmap files or devices into memory.
- The
mmap() system call is responsible for mapping the content of the file to
the virtual memory space of the process.
Device drivers
Drivers are used to help
the hardware devices interact with the operating system. In windows, all the
devices and drivers are grouped together in a single console called device
manager. In Linux, even the hardware devices are treated like ordinary files,
which makes it easier for the software to interact with the device drivers.
When a device is connected to the system, a device file is created in /dev directory.
Most Common types of devices in
Linux:
1. Character
devices – These devices transmit the data character by
characters, like a mouse or a keyboard.
2. Block
devices – These devices transfer unit of data storage called
a block, USB drives, hard drives, and CD ROMs
Disk and Driver Commands
1. fdisk –
It stands for format disk. This command is used to display the partitions on a
disk and other details related to the file system.
Syntax: $sudo fdisk -l
2. sfdisk –
This command displays the partitions on the disk, the size of each partition in MB, etc.
3. parted –
This command helps list and modify the partitions of the disk.
Syntax: $sudo parted -l
4. df –
Displays the details of the file system. Using grep we can filter real hard
disk files.
Syntax: $df -h | grep ^/dev
5. lsblk –
List details about the block devices.
Syntax: $lsbl
6. Lseek:- The lseek function in Linux is used to change the file offset (position) within an open file. It allows you to move the read/write pointer to a specific position within the file.
Syntax: off_t lseek(int fd, off_t offset, int whence);
7. Symlink:-
· It is also called symbolic link or soft link.
· It is similar to shortcuts and points to another file or folder on your computer.
· Sym(soft) link are created using “ln” command with -s option
· Syntax: $ ln -s option
$ ln -s(path-to-file) symboliclink_file_name
· Example: ln -ltrh
Display total file
· $ ln -s file.txt filename
$ ln -ltrh
8. Unlink:- It remove the symbolic link
Syntax:- $ unlink
9. Stat:- stat is a linux command line utility that displays a detailed information about a file or a file system. It retrieves information such as file type; access rights in octal and human-readable; SELinux security context string; time of file creation, last data modification time,
Comments
Post a Comment