This is some output from a run of my shell program. Note the jobs
run in the background, the history command, and the !num commands.
% ./cs31shell
cs31shell> ls
Makefile history_bash myparseline.h parsecmd.o sleeper.c
cs31shell infloop.c parsecmd.c sample_output
cs31shell.c myparseline.c parsecmd.h sleeper
cs31shell> ls -l -a
total 84
drwx------ 2 newhall users 4096 Nov 10 20:42 .
drwx------ 4 newhall users 4096 Nov 10 20:16 ..
...
cs31shell> whoami
newhall
cs31shell> ./sleeper &
cs31shell> ./sleeper &
cs31shell> ./sleeper 10 &
cs31shell> ps w
PID TTY STAT TIME COMMAND
12174 pts/3 Ss 0:00 bash
21553 pts/8 S+ 0:00 ./cs31shell
21594 pts/8 S+ 0:00 ./sleeper # background job
21596 pts/8 S+ 0:00 ./sleeper # background job
21606 pts/8 S+ 0:00 ./sleeper 10 # background job
21616 pts/8 R+ 0:00 ps w
cs31shell> ./sleeper 20 &
cs31shell> ps w
PID TTY STAT TIME COMMAND
12174 pts/3 Ss 0:00 bash
21553 pts/8 S+ 0:00 ./cs31shell
21606 pts/8 S+ 0:00 ./sleeper 10 # background job (previous one exited)
21626 pts/8 S+ 0:00 ./sleeper 20 # background job
21627 pts/8 R+ 0:00 ps w
cs31shell> blah
blah: command not found
cs31shell> ps w
PID TTY STAT TIME COMMAND
12174 pts/3 Ss 0:00 bash
21553 pts/8 S+ 0:00 ./cs31shell
21626 pts/8 S+ 0:00 ./sleeper 20 # background job (sleeper 10& exited)
21666 pts/8 R+ 0:00 ps w
cs31shell> history
2 whoami
3 ./sleeper &
4 ./sleeper &
5 ./sleeper 10 &
6 ps w
7 ./sleeper 20 &
8 ps w
9 blah
10 ps w
11 history
cs31shell> !4 # runs: ./sleeper &
cs31shell> !10 # runs: ps w
PID TTY STAT TIME COMMAND
12174 pts/3 Ss 0:00 bash
21553 pts/8 S+ 0:00 ./cs31shell
21626 pts/8 S+ 0:00 ./sleeper 20
21686 pts/8 S+ 0:00 ./sleeper
21687 pts/8 R+ 0:00 ps w
cs31shell> !10 # runs: ps w
PID TTY STAT TIME COMMAND
12174 pts/3 Ss 0:00 bash
21553 pts/8 S+ 0:00 ./cs31shell
21717 pts/8 R+ 0:00 ps w
cs31shell> history
6 ps w
7 ./sleeper 20 &
8 ps w
9 blah
10 ps w
11 history
12 ./sleeper & # this was added from !4
13 ps w # this was added from !10
14 ps w # this was added from !10
15 history
cs31shell> !3
!3: not found
cs31shell> !12 # runs: ./sleeper &
cs31shell> !13 # runs: ps w
PID TTY STAT TIME COMMAND
12174 pts/3 Ss 0:00 bash
21553 pts/8 S+ 0:00 ./cs31shell
21748 pts/8 S+ 0:00 ./sleeper
21758 pts/8 R+ 0:00 ps w
cs31shell> history
9 blah
10 ps w
11 history
12 ./sleeper &
13 ps w
14 ps w
15 history
16 ./sleeper &
17 ps w
18 history
cs31shell> ps w
PID TTY STAT TIME COMMAND
12174 pts/3 Ss 0:00 bash
21553 pts/8 S+ 0:00 ./cs31shell
21748 pts/8 S+ 0:00 ./sleeper
21768 pts/8 R+ 0:00 ps w
cs31shell> exit
bye bye