The UNIX Shell
The Unix Shell is basically a command line interpreter. This is also called a shell that gives the used and interface. The user is able to use the cell to run programs, tweak setting and many other uses. There are two main shells the Bourne shell and the C shell.
Example of a linux shell
Environment variable
Environment variables are a set of named values that impact running programs and process. They set the stage for the operating environment. These variables are stored as temporary setting files. The stored values can be change but are typically established when the system starts. Tweaking these value give you control over things like your logname, mail server, pager or where your home file is.
lab46:~$ env EDITOR=nano TERM=xterm SHELL=/bin/bash SSH_CLIENT=24.94.52.91 56204 22 SSH_TTY=/dev/pts/90 USER=skinney1 LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd =40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=0 1;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*. tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz =01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.d eb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;3 1:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=0 1;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.t iff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01; 35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4 v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35: *.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01; 35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv= 01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*. mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;3 6:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36: MAIL=/home/skinney1/Maildir PATH=/home/skinney1/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games LC_COLLATE=C PWD=/home/skinney1 LANG=en_US HISTCONTROL=ignoreboth SHLVL=1 HOME=/home/skinney1 LOGNAME=skinney1 SSH_CONNECTION=24.94.52.91 56204 10.80.2.38 22 _=/usr/bin/env EDITOR=nano
$PATH
PATH is the environmental variable that is a list of files that my shell accesses, searches through, read/writes etc.
You are able to edit your path by using a PATH= command. This is highly recommended only at the administrator level. The example i found shows PATH=$PATH\:/dir/path ; export PATH
lab46:~$ $PATH -bash: /home/skinney1/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games: No such file or directory lab46:~$
wildcards
A wildcard is basically a value that fills in as a include all value. The computer sees the wildcard as meaning it could be any value holding to what ever part is placed with it. For example a search for “*XYZ” will come back with all items that matches the XYZ at the end.
There are a few different types of wildacards; ? Matches any one character in a filename. * Matches any character or characters in a filename. [ ] Matches one of the characters included inside the [ ] symbols.
Example of a * wildcard search
lab46:~/junk$ find de* dem1.c dem1.out dem2.c dem2.out dem3.c dem3.out dem4.c dem4.out
Tab completion
Tab completion directs the shell to search the current directory and auto fill in the remainder of the name.
The example shows the contents of a file and the result of tab filling in the remainder of the content. The only trick with using tab completion is if there are multiple files that meet what you have entered then it will do nothing.
lab46:~/src/cprog/classproject$ ls 6 char.out encipherexample.c hint1.out script1.sh 7 cipher.txt encipherexample1.c message.in script2.c Suzy.c color.sh encipherexample2.c ob1 test1.c a.out count.sh encrpit.out proj0.c typec.c age.sh cprog2.c enter.txt project1.c typec.out backup.sh date excipherexample3.c project1.c.save typecast.c bignum.c encipher.c exit.txt rand.sh typecast.out bignum.out encipher.out func.c range var.c bignum1.c encipher1.c hint1.c range.c var.out char.c encipher1.out hint1.c.save range.out lab46:~/src/cprog/classproject$ ls cprog2.c
Job Control
Job control is the ability to send running programs to the background within a shell. This can be beneficial when doing a large search quarry or when you need to do another element of a larger task. This is controlled by a list that the shell keeps that logs what is being done. This allows it to keep track of what processes are being run within the group. The
lab46:~$ top $ lab46:~$ % bg top top - 11:59:47 up 72 days, 19:20, 7 users, load average: 0.00, 0.00, 0.00 Tasks: 329 total, 1 running, 328 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1568604k total, 1314012k used, 254592k free, 216856k buffers Swap: 524280k total, 98664k used, 425616k free, 467392k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 17843 skinney1 38 18 11000 1432 932 R 1 0.1 0:00.08 top 1 root 20 0 8356 700 592 S 0 0.0 0:50.92 init 2 root 20 0 0 0 0 S 0 0.0 0:00.30 kthreadd 3 root RT 0 0 0 0 S 0 0.0 0:06.00 migration/0 4 root 20 0 0 0 0 S 0 0.0 0:11.50 ksoftirqd/0 5 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/0 6 root RT 0 0 0 0 S 0 0.0 0:05.07 migration/1 7 root 20 0 0 0 0 S 0 0.0 0:04.58 ksoftirqd/1
The UNIX Programming Environment
Demonstration of the chosen keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki code block, an example follows:
/* * Sample code block */ #include <stdio.h> int main() { return(0); }
Alternatively (or additionally), if you want to demonstrate something on the command-line, you can do so as follows:
lab46:~$ cd src lab46:~/src$ gcc -o hello hello.c lab46:~/src$ ./hello Hello, World! lab46:~/src$
Compiler, Assembler, Linker, Loader
Compiler The compiler translate high-level languages programs into assembly language.
Assembler
The assembler converts assembly language into object files. These contain a combination of machine instructions. They also convert decimal numbers in to programmer binary.
Linker
The linker merges the object files and creates the executable file. It has basically three tasks; searched the program to find routines, determine memory locations and resolves reference among the files.
Loader
The loader is the part of the OS that takes the executable file and brings it out in the open and starts running it.
Source file => Assembler => Object File \ Source file => Assembler => Object File ---> Linker ---> Executable File Source file => Assembler => Object File / | library
Connect to the lab46 server via my Droid phone.
Explore the options available, install and connect.
There are many apps and programs that allow you to connect to a server. ConnectBot, Better Terminal Emulator, Irssi ConnectBot and the list goes on. I am going to attempt the connection by using a method that stays as close to the command line as i can.
The simplest way to connect was found with Irssi's droid app. The connection is simply added as name@lab46.corning-cc.edu:22 and off you go. The method i was after was using the typically built in Unix SSH program. This was not possible to achieve. Being Unix, on a rooted droid one should be able to download the SSH program and be off and running. I left it with what worked. Connecting with other methods seemed to be and annoying task.
Mission accomplished. I would still like to find a way to install the basic SSH program.