User Tools

Site Tools


unix_survival

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
unix_survival [2020/04/08 21:24]
joshd
unix_survival [2020/04/08 23:16]
joshd
Line 1: Line 1:
 **UNIX Command Reference** **UNIX Command Reference**
  
-The command prompt in UNIX is called the //shell// Here is a list of common UNIX commands which will work across many different versions of UNIX with discrepancies in Example/Notes.+The command prompt in UNIX is called the //shell//, which typically uses a dollar sign ($) as its prompt.  Here is a list of common UNIX commands which will work across many different versions of UNIX with discrepancies in Example/Notes.
  
 ||Command||Description||Examples||Notes|| ||Command||Description||Examples||Notes||
Line 142: Line 142:
 <code> <code>
 $ cc table.c $ cc table.c
-./a.out+./a.out
 1 x 1 = 1       1 x 2 = 2       1 x 3 = 3       1 x 4 = 4 1 x 1 = 1       1 x 2 = 2       1 x 3 = 3       1 x 4 = 4
 2 x 1 = 2       2 x 2 = 4       2 x 3 = 6       2 x 4 = 8 2 x 1 = 2       2 x 2 = 4       2 x 3 = 6       2 x 4 = 8
Line 150: Line 150:
 </code> </code>
  
 +** Shell Programming **
 +
 +The shell itself is programmable via /shell scripts/ A shell script can invoke any of the standard UNIX tools as well as other shell scripts, and can make use of control constructs, including loops and comparisons.  As with C, a complete tutorial is beyond the scope of this page but we'll provide a few examples to get you started.  The below examples are for // /bin/sh//, the //Bourne shell//, as this is available on all online UNIX systems.  Other common shells are //ksh, csh, tcsh, and bash//.
 +
 +As with the C examples above, we'll use //ed// to create our source files.  (Short shell scripting can also be done interactively at the command line.)
 +
 +<code>
 +$ ed hello.sh
 +#!/bin/sh
 +
 +echo "Hello, world!"
 +.
 +w
 +33
 +q
 +$
 +</code>
 +
 +The first line (//#!/bin/sh//) is sometimes referred to as the "shebang" line (because UNIX programmers are weird) and tells the operating system what shell to invoke to execute the script file -- in this case the Bourne shell, in /bin/sh.
 +
 +Now we've created the script, and there it is on disk:
 +
 +<code>
 +$ ls -l hello.sh
 +-rw-rw-rw-   1 user       user             33 Apr  9 05:56 hello.sh
 +</code>
 +
 +But if we try to run it, we get:
 +
 +<code>
 +$ ./hello.sh
 +sh: ./hello.sh: Execute permission denied.
 +</code>
 +
 +(The exact message may vary depending on what UNIX you're on.)  This is telling us that the script we created doesn't have the //execute bit// set (only the //read// and //write// bits indicated by //rw//) -- so it cannot be run.  The //chmod// command can be used to set the execute bit on our new shell script:
 +
 +<code>
 +$ chmod u+x hello.sh
 +$ ls -l hello.sh
 +-rwxrw-rw-   1 root       sys             33 Apr  9 05:56 hello.sh
 +$
 +</code>
 +
 +As you can see the hello.sh file now has the //execute bit// set (see the "x" in the file listing above).  Now it can be executed:
 +
 +<code>
 +$ ./hello.sh
 +Hello, world!
 +$
 +</code>
  
unix_survival.txt · Last modified: 2020/04/08 23:16 by joshd