========
CS 279 - Week 1 Lecture 2 - 2022-08-24
========
today we will
========
* what's an operating system? what's a command shell?
* a few words about some common UNIX/Linux shell programs
* what is a shell script?
* how to start a shell script
* basic UNIX/Linux command syntax
* trying to get to our first bash shell script
* [did not reach] START our discussion of UNIX/Linux filesystem and
file-related commands
* prep for next class
=====
* the app you download for clicker questions
is named "pointSolutions" on Android
(and if you search for TurningPoint the pointSolutions
app comes up, also)
=====
* favorite quick'n'sleazy definition of an
operating system (OS):
an operating system is the INTERFACE between a
person (or an application program) and the
computer hardware
* you can have a graphical user interface
front end for an OS --
you can also have a COMMAND SHELL, at which
you type desired operating systems commands
* you type the command you want at a PROMPT
* when you type the enter/return key at the end
of your command,
THEN it is interpreted/executed,
its output (if any) is printed to the screen,
then when done, it displays the prompt again
(to show it is ready for the next command)
====
a few words about some UNIX/Linux shells
====
* there are at least 18 kinds of different UNIX/Linux
command shell programs/interpeters out there...!
* you can choose which you use, by the way
(more on that later!)
* Five of the significant shells:
* the Bourne shell: sh
* the C shell: csh
* the Korn shell: ksh
* the z shell: zsh
* GNU's "Bourne-again shell": bash
* Bourne shell -- sh -- written by Stephen Bourne
at AT&T -- the original UNIX command line interpreter
* intro'd basic features common to all these
shells --
* piping
* here documents
* command substitution
* variables
* control structures
* filename wildcarding <-- may also be called
globbing...?
* The C shell, csh, was written by Bill Joy while
a grad student at UC Berkeley
* modeled more (its control structures and
expression grammar) on the C language
* intro'd some influential features for
interactive work:
* the history and editing mechanisms
* aliases
* directory stacks
* tilde notation
* job control
* and more
* these two influenced many of the subsequent shells,
happily many of the strengths of both
(and of other subsequent shells)
are brought together in bash
* bash:
IS from GNU
* is sh-compatible, incorporates useful features
from ksh and csh
* intended to conform to the POSIX standard
=====
* what is a shell script, then?
* basically, a text file of
shell commands or executable statements
* how does the OS know which shell to use to run those
commands?
...good practice: is for the 1st line of
a shell script to include an special indication
of WHICH shell interpreter to use to execute
that script
* course text, 2021 edition, Section 23.3, p. 173:
* should start a script with
#!
followed by the full pathname of the shell
interpreter to be used for running that script
#! is often pronounced/read as "she-bang"
* in most Linux systems, the full path (at least
virtual) for the bash shell is:
/bin/bash
* so, you SHOULD start a bash shell with:
#!/bin/bash
* we need a command or two,
and maybe some basic command syntax...
=====
Basic UNIX/Linux command syntax
=====
* starts with the name of the desired command
separated from its option(s) or command-line arguments
by one or more blanks
and options are written as a dash: -
followed by one or more letters
(whether the order of these matters depends on the
command...!)
* example:
most UNIX/Linux commands have a manual page you
can access from the shell --
man
amongst its arguments and options is to put
the name of the command you want to read the man page of
man man
...asks to display the UNIX/Linux manual
page for the man command
* There's also an echo command,
it echoes or prints the values of its command-line argument
expressions to standard output (by default, the screen)
* has a -n option, means do not echo a newline
character at the end of its output
* to run a shell script,
it needs to be executable...
chmod lets you change the mode, or permissions,
for a file
one ham-handed way to do this:
chmod +x hello
and now, typing ./ and the script name
will run this script:
./hello