Bash Shell Introduction By Arun Bagul


Published on

This ppt is about BASH shell , introduction to bash, how commands are executed in bash , command types etc

Published in: Technology

Bash Shell Introduction By Arun Bagul

  1. 1. ***               BASH (Bourne Again SHell)               *** 1) What is shell ? Shell is tool/utility by which USER interacts with OS (kernel). Shell read (get) commands from  keyboard (entered by user on comand line) Shell is the command­line INTERPRETER that executes (run) commands.             Linux OS  ========================================================  # ­­­­­­­­­­­­­­­­­                              ­­­­­­­­­­­­­                                #  # |  ls |          ­­­­­­­            |           |                                #  # |  pwd |<­­­>| BASH | <­­­>   | KERNEL |                             #  # |  ifconfig |          ­­­­­­­            |                   |           #  # |­­­­­­­­­­­­­­­|                          ­­­­­­­­­­­­­­                                #  #  linux commands                                #   #======================================================= 2) How to get list of  SHELLs ­   /etc/shells is a text file which contains the full pathnames of valid login shells on your linux  system! root@mylaptop:~# cat /etc/shells  # /etc/shells: valid login shells /bin/csh /bin/sh /bin/ksh /bin/tcsh /bin/bash /bin/rbash  ... root@mylaptop:~#  sh ­ Standard shell  available on linux ksh ­ Korn shell csh ­ C ­ shell tcsh ­ Turbo C­shell bash ­ Bourne Again Shell (BASH) rbash  ­ Restricted bash shell *** Shortcut for bash command line ­ ctrl+c  ­ intrupt command execution (stop command) ctrl+l  ­ clear screen OR clear command ctrl+d  ­ close/exit from shell OR exit command ctrl+a  ­ go to begining of command line ctrl+e  ­ go to end of command line ctrl+w  ­ delete/erase one previous word              altr+d  ­ delete/erase next one word             ctrl+u  ­ delete/erase text from the current cursor position to the begining of the line
  2. 2.             ctrl+k  ­ delete/erase text from the current cursor position to the end of the line ctrl+y  ­ undo changes  3) Pipe and Output redirection   * Pipe ­ A pipe is a way to connect the output of one program to the input of another program  without any temporary file root@mylaptop:/var# ls  | wc ­l root@mylaptop:/var# ls  | sort  root@mylaptop:/var# pwd | ls ­l  * Redirections ­ Before a command is executed, its input and output may be redirected using a  special notation interpreted by the shell. Redirection may also be used to open and close files for the  current shell execution environment. Redirections are processed in the order they appear, from left  to right.  Device   File Descriptor standard input         0 standard output       1 standard error          2 root@mylaptop:~# ls ­l /dev/stdin   lrwxrwxrwx 1 root root 15 2008­10­05 12:42 /dev/stdin ­> /proc/self/fd/0 root@mylaptop:~# ls ­l /dev/stdout   lrwxrwxrwx 1 root root 15 2008­10­05 12:42 /dev/stdout ­> /proc/self/fd/1 root@mylaptop:~# ls ­l /dev/stderr   lrwxrwxrwx 1 root root 15 2008­10­05 12:42 /dev/stderr ­> /proc/self/fd/2 root@mylaptop:~#  ** redirects both standard output (file descriptor 1) and standard error (file descriptor 2) to the file  dirlist   # ls > dirlist 2>&1    ** redirects only the standard output to file dirlist, because the standard error was duplicated as  standard output before the standard output was     redirected to dirlist.    # ls 2>&1 > dirlist   root@mylaptop:~# ls ­l > /tmp/mylist       ( redirect only standard output to file '/tmp/mylist' )   root@mylaptop:~# ls ­lMM > /tmp/mylist      ls: invalid option ­­ M     Try `ls ­­help' for more information.   root@mylaptop:~# ls ­lMM 2> /tmp/mylist    ( redirect only standard error to file '/tmp/mylist' )   root@mylaptop:~#   **  Appending Redirected Output            root@mylaptop:~# ls ­l  >>  /tmp/mylist       root@mylaptop:~# 
  3. 3.      root@mylaptop:~# ls ­l  >>  /tmp/mylist   2>&1      root@mylaptop:~#   ** NOTE :: There are two formats for redirecting standard output and standard error   arun@mylaptop:~$ find /  ­name quot;*.confquot;   > /tmp/mylist     find: /etc/ssl/private: Permission denied     find: /etc/chatscripts: Permission denied     find: /etc/jabberd2: Permission denied     ...   arun@mylaptop:~$ find /  ­name quot;*.confquot;   &> /tmp/mylist   arun@mylaptop:~$    arun@mylaptop:~$ find /  ­name quot;*.confquot;   >& /tmp/mylist   arun@mylaptop:~$    ==>> First is preferred. This is semantically equivalent to   arun@mylaptop:~$ find /  ­name quot;*.confquot;   > /tmp/mylist  2>&1   arun@mylaptop:~$   **  Redirecting Input ­ Redirection of input causes the file to be opened for reading on file  descriptor n, or the standard input (file descriptor 0) if n is not specified...     # command_name [n]< /path_of_file      root@mylaptop:~# while read line > do > echo $line > done  < /tmp/mylist Desktop etc_ORIG      root@mylaptop:~#       root@mylaptop:~# wc ­l <  /tmp/mylist 6      root@mylaptop:~#      4) Types of variables in Bash ­      There are two types of variables in Bash shell...    A) System variables ­ Created and maintained by Linux (BASH) itself. This type of variable  defined in CAPITAL LETTERS.      root@mylaptop:~# env
  4. 4. ORACLE_BASE=/u01/app         SHELL=/bin/bash USERNAME=arun LOGNAME=root HOME=/root SESSION_MANAGER=local/­unix/6670 MAIL=/var/mail/root DESKTOP_SESSION=default PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games PWD=/root   ...      root@mylaptop:~#       ** env command gives list of all system and user defined variables       root@mylaptop:~# echo $PATH     /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games       root@mylaptop:~#        root@mylaptop:~# echo $PWD /root       root@mylaptop:~# echo $USER root       root@mylaptop:~#  HOME ­ The current user's home directory; the default for the cd builtin command. The value of  this variable is also used by tilde (~) expansion IFS  ­ (Internal Field Separater) A list of characters that separate fields; used when the shell splits  words as part of expansion.  MAIL ­ If this parameter is set to a filename and the MAILPATH variable is not set, Bash informs  to user of arrival of mail in the specified file.  PATH ­ A colon­separated list of directories in which the shell looks for commands.  PS1  ­ The primary prompt string. The default value is ‘s­v$ ’. PS2  ­ The secondary prompt string. The default value is ‘> ’.  HOSTNAME ­ The name of the current host.  PPID  ­ The process ID of the shell's parent process.    B) User defined variables ­ Created and maintained by user. This type of variable defined in lower  LETTERS.         root@mylaptop:~# num1=10      root@mylaptop:~# num2=30      root@mylaptop:~# expr $num1 + $num2       40      root@mylaptop:~# echo $num1       10      root@mylaptop:~# echo $num2       30      root@mylaptop:~# 
  5. 5.      ** NOTE ­  above user defined variables are available in current shell only!! 5 5) User Profile         /bin/bash     ­ The bash executable        /etc/profile  ­ The systemwide initialization file, executed for login shells        /etc/bash.bashrc ­ The systemwide per­interactive­shell startup file        /etc/bash.logout ­ The systemwide login shell cleanup file, executed when a login shell exits        ~/.bash_profile  ­ The personal initialization file, executed for login shells        ~/.bashrc ­ The individual per­interactive­shell startup file        ~/.bash_logout ­ The individual login shell cleanup file, executed when a login shell exits 6 6) Types of Linux (bash) commands  ­ There are 4 types of commands.  a) Functions b) Aliases  c) Buildin commands (bash) d d) Linux (OS) commands        When you type any command on command prompt, Bash looks for function then Aliases if  both not found then only it will check for buildin command and finally it will search for command  executable binary file in directories list provided by $PATH system variable from Lelt to Right  o order. $PATH variable contains directories separated by quot;:quot; root@mylaptop:~# echo $PATH   /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games r root@mylaptop:~#            ** How to check the command type ­  use quot;typequot; command to check whether command is function ,  a alias , buildin and linux command   root@mylaptop:~# type pwd     pwd is a shell builtin   root@mylaptop:~# type ls    ls is aliased to `ls ­­color=auto'   root@mylaptop:~#    arun@mylaptop:~$ type chmod    chmod is /bin/chmod     arun@mylaptop:~$  * ** How to list all aliases , functions , system and user defined variables   root@mylaptop:~# alias  ­ list all aliases defined      root@mylaptop:~# set    ­ list all functions , user and variables ** How to define and undefine function and how to check the order of command execution ­ 
  6. 6. root@mylaptop:~# pwd /root root@mylaptop:~# function pwd() > { > echo quot;Hey buddy, I am function NOT Aliasquot; > } root@mylaptop:~#  root@mylaptop:~# pwd Hey buddy, I am function NOT Alias root@mylaptop:~#  root@mylaptop:~# unset  pwd root@mylaptop:~#  root@mylaptop:~# pwd /root r root@mylaptop:~#  ** How to create/remove alias ­  * r root@mylaptop:~# netstat ­nlp  | head ­n 30  r root@mylaptop:~# alias check_port='netstat ­nlp  | head ­n 30' root@mylaptop:~# check_port  ... .... root@mylaptop:~#  r root@mylaptop:~# unalias check_port