TOPIC 5.0 LINUX SHELLS SHELL SCRIPT Shell is the interface between end user and the Linux system, similar to the commands in Windows Typical operations performed by shell scripts include file manipulation, program execution, text printing. EXAMPLE OF A SHELL SCRIPT Use text editor to generate the “first” file #!/bin/sh # first # this file looks for the files containing POSIX # and print it for file in * do if grep –q POSIX $file then echo $file fi done exit 0 % /bin/sh first % chmod +x first %./first IMPORTANCE OF A SHELL SCRIPT easy program or file selection, quick start, and interactive debugging. A shell script can be used to provide a sequencing and decision-making linkage around existing programs Non-expert users can use scripting to tailor the behaviour of programs. VARIOUS OF LINUX SHELLS Bourne shell (sh commands) C shell (csh commands) Bourne-Again shell (bash commands) Korn shells (ksh commands) Almquist shells (ash commands) BOURNE SHELL (sh commands) The Bourne shell, or sh, was the default Unix shell of Unix Version 7, It replaced the Thompson shell, but the executable file had the same name, sh. It was developed by Stephen Bourne, and released in 1977 in the Version 7 Unix. It remains a popular default shell for Unix accounts. The binary program of the Bourne shell or a compatible program is located at /bin/sh on most Unix systems Its command interpreter contained all the features that are commonly considered to produce structured programs. Although it is used as an interactive command interpreter, it was always intended as a scripting language. C SHELL (csh commands) The C shell is a Unix shell that was created by Bill Joy in the late 1970s. It has been distributed widely in 1978. The C shell is a command processor that's typically run in a text window, allowing the user to type commands which cause actions. The C shell can also read commands from a file, called a script. C shell has an interactive features and overall style. Its new features made it easier and faster to use. And the overall style of the language looked more like C and was seen as more readable. BOURNE-AGAIN SHELL (bash commands) Bash is the shell, or command language interpreter, that will appear in the GNU operating system. Bash is an sh-compatible shell that incorporates useful features from the Korn shell (ksh) and C shell (csh). It offers functional improvements over sh for both programming and interactive use. In addition, most sh scripts can be run by Bash without modification. The manual is available online at www.gnu.org/software/bash/manual/. BASH can be downloaded at http://ftp.gnu.org/gnu/bash/ KORN SHELL (ksh commands) The Korn shell (ksh) is a UNIX shell which was developed by David Korn in the early 1980s. It is backwards-compatible with the Bourne shell but includes many features of the C shell as well, such as a command history The main advantage of ksh over the traditional Unix shell is in its use as a programming language. Several features were gradually added, while maintaining strong backwards compatibility with the Bourne shell. ALMQUIST SHELL (ash commands) The Almquist shell (also known as A Shell, ash) was originally developed by Kenneth Almquist‘s it is a fast, small, POSIX-compatible Unix shell designed to replace the Bourne shell in later BSD distributions. Originally it did not feature line editing or command history mechanisms - should be moved into the terminal driver; ash are installed as the default shell (/bin/sh) on FreeBSD, NetBSD, DragonFly BSD and Minix. Debian's version of ash is known as Debian Almquist Shell (dash). METHODS TO GET SHELL INTERFACE Shell Prompts It looks like an MS-DOS screen. Users type commands at a shell prompt, the shell interprets these commands, and then the shell tells the OS what to do. Linux functions can be completed faster from the shell prompt than from a GUI. METHODS TO GET SHELL INTERFACE Terminal Windows synonymous with a command line shell or text terminal, the term terminal covers all remote terminals, including graphical interfaces. A terminal emulator inside a GUI is often called as terminal window. A terminal window allows the user access to Command Line Interfaces (CLI) and Text User Interface applications. On Unix-like OS, it is common to have one or more terminal windows connected to the local machine. METHODS TO GET SHELL INTERFACE Virtual Terminal In open systems, a virtual terminal (VT) is an application service that: Allows host terminals on a multi-user network to interact with other hosts regardless of terminal type and characteristics, Allows remote log-on by LAN managers for the purpose of management, Allows users to access information from another host processor for transaction processing, Serves as a backup facility. ITU-T defines a virtual terminal protocol based on the OSI application layer protocols. LINUX TEXT EDITOR vi editor Vi is often the default editor that pops up when we're ready to write an e-mail message or when we're posting a News message. Vi is complicated and seems difficult to learn at first. it is often the default for Unix and Linux systems. pico (Pine composer) editor Pico is a simple text editor that provides straight-forward options and easy-to-use commands. it provides everything necessary to write long documents with minimal hassles. Pico is not very good when manipulating certain types of files such as making changes to .cgi files LINUX TEXT EDITOR emacs (Editor Macros) editor Emacs falls somewhere between the straightforward Pico and the complicated Vi. Unlike Vi, we don't need to switch between modes to perform basic text editing functions. powerful commands themselves are difficult to remember. mcedit editor (Midnight Commander Editor) mcedit is a link to mc, the main GNU Midnight Commander executable. Executing GNU Midnight Commander under this name requests staring the internal editor and opening the file specified on the command line. The editor is based on the terminal version of cooledit (standalone editor for X Window System). LINUX TEXT EDITOR joe (Joe’s Own Editor) JOE is a full featured terminal-based screen editor It is distributed under the GNU General Public License (GPL). JOE has been around since 1988 It is comes standard with many Linux distributions. JOE is being maintained by its original author Joseph Allen JOE is written in C and its only dependency is libc. LINUX TEXT EDITOR Graphical text editors: Nedit editor already installed in Computer Systems smaller and easier to use/customise than emacs easy to get it to do syntax colouring for Java/HTML etc suitable for Unix/Linux only (see below) impossible to use via telnet/ssh more difficult than emacs Xedit editor It is a text editor for the X Window System on Linux and UNIX It is a visual text editor for the virtual machine operating system