Wednesday, March 4, 2009

0) Understanding Unix Environment

{This is still work in progress..}

Unix File System

The Unix File System is a hierarchical file system.

/ is root of the system
/var is a directory in root
/var/www is the full path of the sub-directory in "var"
/var/www/htdocs is the full path of the sub-sub-directory in "/var/www" and so on...

Some examples

1. To know in which directory you are currently in: pwd

# It shows the path of the present working directory.

2. Navigate: cd
# If you want to get into a certain directory, for example:
cd /var/www/htdocs/db

3. To list the content of a directory: ls
# To get long directory listing: ls -l

4. Getting the source code: lynx -source
# Example
lynx -source http://aps.unmc.edu/AP/database/query_output.php?ID=00286
# lynx is a text-based browser. -source tells lynx NOT to display the HTML code, but to return the raw HTML code.

5. Unix command history
# Just press the ''Arrow up'' key to see your previous command
# Whatever you do, double check

6. Get the internet page to your folder
:Example: to put the internet page to the dir where you are at now, key in
lynx -source internet_address.html > your_pagename.html

7. Change mode
: ''chmod'' takes several arguments
: -x is to make executable
: ''chmod -x programfile'' will make program executable rather than just a plain text file.

Questions

1. Why put /var/www/htdocs/db/myprogram in front of myprogram?
: This is because whenever you execute a program, Unix shell needs to find the path of that program.
: In this case, we spell out the full directory path so that Unix shell knows where that program is.

2. Why then can we use the ''lynx'' command and don't have to put the full path?
: This is because lynx command is already in the Shell's list of known paths.
: Later on, we will show you what is the current known paths, e.g. echo $PATH

Command Line Arguments

1. Command Line command without arguments
: For example ''pwd'' doesn't need to take arguments

2. Command line command with one argument
: For example ''ls -l'' takes one argument, the flag ''-l'' to give a ''l''ong listing.

3. Command line command with two arguments
: For example ''lynx -source http://www.google.com''
: lynx the command
: -source the first argument
: http://www.google.com as the second argument

Loop Control

How do we make the numbers autoincrement without us to put in the numbers ourselves?

1. Make 6 into a program to create multiple files
:(1)pseudo code for ''my_program''
for (i=0;i<100;i++)> your_pagename[i].html}

:(2)Change the file to executable file
:(3)Key in [path]/my_program
:(4)chmod +x my_program (This is to make the file executable.)

Learning Unix Commands

'''Environment Control'''

# refers to comments

1) cd d # Change to directory d
2) mkdir d #Create new directory d
3) rmdir d #Remove directory d

4) rm -r existingdirectories # Will delete the existing directory named 'existingdirectories' and all directories and files below it.

5) rm -rf existingdirectories # Will delete the existing directory named 'existingdirectories' and all directories and files below it. Even if it runs into an exception that it would usually prompt for user interaction.
the r is recursive and the f is force.

Be careful with the "rm -r" command. Don't run it as root. And stay away from the root directory if you plan on running it.
6) mv f1 [f2...] d #Move file f to directory d
7) mv d1 d2 #Rename directory d1 as d2
8) passwd #Change password
9) alias name1 name2 #Create command alias (csh/tcsh)
10) alias name1="name2" #Create command alias (ksh/bash)
11) unalias name1[na2...] #Remove command alias na
12) ssh nd #Login securely to remote node
13) exit #End terminal session
14) setenv name v #Set env var to value v (csh/tcsh)
export name="v" #set environment variable to value v (ksh/bash)

Miscellaneous commands

1)
 ls 
# is to list the directory

2)
cp 
# copy

3)
wc 
# word count

4)
ls -al | grep root |awk '{print "file: $9, S8" }' 
# to extract the 8th and the 9th column; details of all the files/directories called root is ls

5)
wc -l 
# count number of lines

6)
 > 
# is to funnel to a new file

7)
 ls -al | grep root |awk '{print "file: $9, S8" }' > x.file 
# transfer the output to a file name, in this case called x.file

8)
 pico x.file 
# a text editor that helps you read the x file; to get out from pico, type ctrl x; pico is very sophisticated

9)
 vi x.file 
# a text editor that helps you read the x file

10)
 :q 
# helps exit vi, which is very obscure.

11)
 :q! 
# helps exit vi, which is very obscure.

12)
 pwd 
# print the current working directory

13)
 cd 
# is to change the directory

14)
 tab 
#use it to automatically fill in the blanks; auto completion

15)
 key up and down 
# help you look at commands typed earlier

16)
 echo "ls -al /root/Desktop/ |awk '{print $5 "b", S9 }' " >tinwee 
# creates an executable file

17)
 ./tinwee 
# executing tinwee, but will not work because you have no permission

18)
 chmod 755 tinwee 
# give full access to run tinwee

19)
 pico tinwee 
# to make the program more generic by modifying the code

20)
 ls -al $1 |awk '{print $5 "bytes", $9 } 
#change the code to more generic instead of hardwiring it

21)
 tinwee / 
# takes / as $1, which in this case is root; note that this $1 is different from the #awk $1

22)
 ln tinwee t 
# creating a shortname or short cut (soft link) for tinwee (alias); make sure it is unique alias

23)
 echo $PATH | sed 's/:/\n/g' 
# this is to show the path of all the directories and files line by #line

24)
 echo $PATH | sed 's/:/\n/g' |more 
# show little by little

25)
 echo $PATH | sed 's/:/\n/g' |less 
# show less

26)
 echo $PATH | sed 's/:/\n/g' |cat 
# to show all

27)
 echo $PATH | sed 's/:/\n/g' |tac 
# to show in reverse order

28)
 echo $PATH | sed 's/:/\n/g' |less |rev 
# show less but in reverse order

29)
 q 
# to quit while looking at the results of these

30)
 ctrl + C 
#to quit while looking at these

31) Create a translation tool, simple one

echo "ATGCTTA"
" |rev |tac |tr "atcg" "tagc"

# rev reverses the sequence, tac show it in reverse order and tr does the translation

32)
alias 
#does not link a file but substitutes for the name

33)
 >> 
#will append to the bottom of a file that already exists

34)
 > 
#append to a new file

35) Creata database of your own
lynx http://aps.unmc.edu/AP/database/query_output.php?ID=00286 > AP00286.html 
#saves the web page to AP00286.html but it is not saving the source code

lynx -source http://aps.unmc.edu/AP/database/query_output.php?ID=00286 > AP00286.html

#saves the web page to AP00286.html and this time it is saving the source code
echo "lynx -source http://aps.unmc.edu/AP/database/query_output.php?ID=00286 > AP00286.html" >getapd

pico getapd 
# read the getapd file
change
lynx -source http://aps.unmc.edu/AP/database/query_output.php?ID=00286 > AP00286.html
to
lynx -source http://aps.unmc.edu/AP/database/query_output.php?ID=0$1 > AP0$1.html 


# this is making the code generic

getapd AP00287 
# type on the command prompt to download the record 00287 without typing the whole command

pico getapd 
# open the getapd file to make the command more generic


for i in 'Seq -w 1137`
do
lynx -source http://aps.unmc.edu/AP/database/query_output.php?ID=0$i > AP0$i.html
sleep 3
done


./getapd 
#run getapd for automatic download

36.
" " 
# double quotes are used whe you want to evaluate the variable. For example "$PATH" will evaluate the dollar sign and give you relevant matches
37.
' ' 
# are used when one wants to print the special characters without evaluating them. For example, '$PATH' will return $PATH

No comments:

Post a Comment