This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
unix_survival [2020/04/08 21:08] joshd |
unix_survival [2020/04/08 23:16] (current) joshd |
||
---|---|---|---|
Line 1: | Line 1: | ||
**UNIX Command Reference** | **UNIX Command Reference** | ||
- | The command prompt in UNIX is called the // | + | 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/ |
||Command||Description||Examples||Notes|| | ||Command||Description||Examples||Notes|| | ||
Line 102: | Line 102: | ||
</ | </ | ||
+ | Here's a more complex program. | ||
+ | < | ||
+ | $ ed table.c | ||
+ | ?table.c | ||
+ | a | ||
+ | int main(argc, argv) | ||
+ | int argc; | ||
+ | char** argv; | ||
+ | { | ||
+ | int i,j; | ||
+ | | ||
+ | /* Use nested ' | ||
+ | for(i=1; | ||
+ | { | ||
+ | for(j=1; | ||
+ | { | ||
+ | /* ' | ||
+ | printf(" | ||
+ | } | ||
+ | | ||
+ | /* ' | ||
+ | for the next row of the table */ | ||
+ | printf(" | ||
+ | } | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | . | ||
+ | w | ||
+ | 516 | ||
+ | q | ||
+ | $ | ||
+ | </ | ||
+ | |||
+ | Compiling this as in the above example and running it yields: | ||
+ | |||
+ | |||
+ | < | ||
+ | $ cc table.c | ||
+ | $ ./a.out | ||
+ | 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 | ||
+ | 3 x 1 = 3 3 x 2 = 6 3 x 3 = 9 3 x 4 = 12 | ||
+ | 4 x 1 = 4 4 x 2 = 8 4 x 3 = 12 4 x 4 = 16 | ||
+ | $ | ||
+ | </ | ||
+ | |||
+ | ** Shell Programming ** | ||
+ | |||
+ | The shell itself is programmable via /shell scripts/ | ||
+ | |||
+ | As with the C examples above, we'll use //ed// to create our source files. | ||
+ | |||
+ | < | ||
+ | $ ed hello.sh | ||
+ | #!/bin/sh | ||
+ | |||
+ | echo " | ||
+ | . | ||
+ | w | ||
+ | 33 | ||
+ | q | ||
+ | $ | ||
+ | </ | ||
+ | |||
+ | The first line (//# | ||
+ | |||
+ | Now we've created the script, and there it is on disk: | ||
+ | |||
+ | < | ||
+ | $ ls -l hello.sh | ||
+ | -rw-rw-rw- | ||
+ | </ | ||
+ | |||
+ | But if we try to run it, we get: | ||
+ | |||
+ | < | ||
+ | $ ./hello.sh | ||
+ | sh: ./hello.sh: Execute permission denied. | ||
+ | </ | ||
+ | |||
+ | (The exact message may vary depending on what UNIX you're on.) This is telling us that the script we created doesn' | ||
+ | |||
+ | < | ||
+ | $ chmod u+x hello.sh | ||
+ | $ ls -l hello.sh | ||
+ | -rwxrw-rw- | ||
+ | $ | ||
+ | </ | ||
+ | |||
+ | As you can see the hello.sh file now has the //execute bit// set (see the " | ||
+ | |||
+ | < | ||
+ | $ ./hello.sh | ||
+ | Hello, world! | ||
+ | $ | ||
+ | </ | ||