Working under your qandc account A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 1 Connection from PC to qandc server • In order to get into the qandc servee, we need a secure shell application that facilitates the connection. • One simple software that is free and it is also downloaded in our computers at CSUSM computer labs is called putty. • PuTTY is a free implementation of Telnet and SSH (secure shell) for Windows and Unix platforms, along with an Xterm terminal that allows us to interactively with Unix operating system. • You can download putty to your home computer. The site is: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 2 Downloading Putty • Once you enter the web site, click on the following link that shows below: A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 3 Downloading Putty • Save the application anywhere in your computer. I usually put it in my desktop. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 4 Installing Putty • Now double click on the downloaded putty application to get connected to the qandc server • Once you double click you should see the following. Click on the run button to start the application. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 5 Connection to qandc server using Putty • Make sure the category is session. The port is 22, and connection type is SSH. Then type qandc.csusm.edu for the Host Name. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 6 Connection to qandc server using Putty • Type your user id and password and you enter the UNIX environment A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 7 Connection to qandc server using Putty • Type “ls” at the prompt line to see the content of the current directory. • You may not have any file under your home directory at this time. • In mine, my files and folders are shown in different colors. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 8 Connection to qandc server using Putty • You can remove the default colors setting, as follows. Right click on the header of the terminal and select “Change Setting…” from the menu. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 9 • The following window appears. • Select “Colours” from the Category section as shown below and uncheck the “Allow terminal to specify ANSI colours” option. • Then click on “Apply” button to save the setting • This gives simple black and whiter terminal. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 10 Logging out from Unix • We will discuss the UNIX commands later. • For now, just type “logout” to exit from Unix and close the terminal. • In conclusion, putty is very simple to install and work with; however, it is limited to simple connection to a particular system such as qandc or cocco or bioinfo servers. • We all want to be able to download our files and place them under our qandc account and. We need to be able to transfer files into and from qandc server. • Thus, we need to have a secure shell that has the capability of transferring files as well. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 11 Windows SSH Secure Shell Initial Connection and Transferring Files. • First we need to download this application. For now, you can download this under your H drive to test.. Then you can download it on your PC at home. • Go to: http://www.colorado.edu/its/docs/authenticate/printouts/win_ssh.html • Click on the link that is shown below: A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 12 Installing SSH Secure Shell • Save the application. You can place it under the H drive. • Double-click on the application and press “run” button to start installation. • Click “next to continue: A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 13 Installing SSH Secure Shell • Accept the License agreement, then click browse and under path type H:\SSH. This installs the application under your H drive . • Next follow the rest of the download procedure until it is complete. • You should be able to see the following icon, which is “SSH Secure File Transfer Client” under your H drive. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 14 Running SSH Secure Shell • To run the program and getting connected to the qandc server simply double click on the application • The following window opens. • Click on “Quick connect” to start the connection to qandc server A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 15 Connecting to qandc server using SSH • Type “qandc.csusm.edu” for the Host Name and your username for the User Name section. Make sure the port is 22. • Click “Connect” and it should ask you for the password. • Note that since this is our private server, the password is permanent and we do not require our users to change it every few months. It is up to you what to set as your password and when you prefer to change it. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 16 Connecting to qandc server using SSH • Once you are successfully connected, you should see the content of your PC on the left side of the window and the content of your qandc server on the right side of the window, as shown below • The same way you navigate through your folders in your PC, you can navigate through your folders in your qandc account Your PC directories A.R. Hadaegh Dr. Ahmad R. Hadaegh your qandc server directories California State University San Marcos (CSUSM) Page 17 Navigating through your directories • Click on the “home” icon of your PC section and the “home” icon of your qandc section. • The PC section shows your drives. You can go to any folder or any drive in your PC. • As you see the default directory of your qandc account is /home/userid A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 18 File Transfer between your PC and your qandc • Transferring a file between the your PC and your qandc account is as simple of drag and drop • Look for a text file of your choice under any of your drives on your PC section and drag and drop it to your /home/username folder of your qandc. • For example, I have chosen the file “StrainB39_Plot1.xls” file and drag it into the “/home/ahadaegh/ folder of my qandc account A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 19 File Transfer between your PC and your qandc • Note that the selected file that I dragged into my qandc account is now successfully copied and it shown under my home folder of my qandc account • Further, the status of all transferred files are also shown in the status window section of the SSH application A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 20 File Transfer between your PC and your qandc • Similarly you can take any file from your qandc account and transfer it to any folder in your PC. • You can also transfer the whole directory from/to your PC or your qandc account. • When you transfer the whole directory, files under that directory are queued and they get transferred one by one. • Select a directory on your PC and drag and drop it to your qandc server. Make sure the directory is not very big in size; otherwise, it may take a while before all the files are transferred. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 21 File Transfer between your PC and your qandc • You can discover about all the available buttons in the SSH application yourself . For example, one of the button that may become handy is the hide/show folder button. • Click the “hide/show local folder” button of your PC section and your qandc section. An explore folder structure appears which allows you to navigate through the folders a lot simpler. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 22 File Transfer between your PC and your qandc • Another option that is quite handy is the “refresh” button. • Occasionally, when you transfer files from/to your PC or qandc account you may not see the file immediately. • What you can do is to click on the refresh button to refresh the directory content. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 23 Creating Terminal and working with UNIX A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 24 Opening a session • You can click on the “New Terminal Window” icon to open a session. • Now you can use Unix commands to communicate with the system interactively. • In this section we introduce simple Unix commands and show how each command correspond to the ones in window. This is your terminal A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 25 What is UNIX? • UNIX is an operating system which was first developed in the 1960s, and has been under constant development ever since. • By operating system, we mean the suite of programs which make the computer work. • It is a stable, multi-user, multi-tasking system for servers, desktops and laptops. • UNIX systems also have a graphical user interface (GUI) similar to Microsoft Windows which provides an easy to use environment. • However, knowledge of UNIX is required for operations which aren't covered by a graphical program, or for when there is no windows interface available • There are many different versions of UNIX, although they share common similarities. The most popular varieties of UNIX are Sun Solaris, GNU/Linux, and MacOS X. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 26 The UNIX operating system • The UNIX operating system is made up of three parts; the kernel, the shell and the programs. The kernel • The kernel of UNIX is the hub of the operating system: it allocates time and memory to programs and handles the file store and communications in response to system calls. • As an illustration of the way that the shell and the kernel work together, suppose a user types rm myfile (which has the effect of removing the file myfile). • The shell searches the filestore for the file containing the program rm, and then requests the kernel, through system calls, to execute the program rm on myfile. • When the process rm myfile has finished running, the shell then returns the UNIX prompt [ahadaegh@qandc ~]$ to the user, indicating that it is waiting for further commands A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 27 The shell • The shell acts as an interface between the user and the kernel. • When a user logs in, the login program checks the username and password, and then starts another program called the shell. • The shell is a command line interpreter (CLI). It interprets the commands the user types in and arranges for them to be carried out. The commands are themselves programs: when they terminate, the shell gives the user another prompt ([ahadaegh@qandc ~]$ on our systems). • The adept user can customize his/her own shell, and users can use different shells on the same machine. The shell that we use is called bash. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 28 Files and processes • Everything in UNIX is either a file or a process. • A process is an executing program identified by a unique PID (process identifier). • A file is a collection of data. They are created by users using text editors, running compilers etc. • Examples of files: • a document (report, essay etc.) • the text of a program written in some high-level programming language instructions comprehensible directly to the machine and incomprehensible to a casual user, for example, a collection of binary digits (an executable or binary file); • a directory, containing information about its contents, which may be a mixture of other directories (subdirectories) and ordinary files. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 29 • All the files are grouped together in the directory structure. • The file-system is arranged in a hierarchical structure, like an inverted tree. The top of the hierarchy is traditionally called root (written as a slash /) / home ahadaegh CPP Bioinfo DataFiles bread NewEhux(June3,201 0) work dgarcia public_htm l ESTWebByMohammd(April23) Documen t A.R. Hadaegh Dr. Ahmad R. Hadaegh SQLTables bin …… cdeleon e tcrouch …… me.cpp …… usr …… …… shizer Strain1516_Plot1.xls …… HIV_Protease all_databases.sq l CodeForFeb18.txt California State University San Marcos (CSUSM) QuickSearchCode.txt Page 30 Listing files and directories • ls (list) • When you first login, your current working directory is your home directory. • Your home directory has the same name as your user-name, for example, jsmith, and it is where your personal files and subdirectories are saved. • To find out what is in your home directory, type $ ls • The ls command ( lowercase L and lowercase S ) lists the contents of your current working directory. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 31 Making Directories • mkdir (make directory) • We will now make a subdirectory in your home directory to hold the files you will be creating and using in the course of this tutorial. • To make a subdirectory called unixstuff in your current working directory type: $ mkdir unixstuff • To see the directory you have just created, type: $ ls A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 32 cd (change directory) • The command cd directory means change the current working directory to 'directory'. • The current working directory may be thought of as the directory you are in, i.e. your current position in the file-system tree. • To change to the directory you have just made, type $ cd unixstuff • Type ls to see the contents (which should be empty) • Now create a subdirectory called “backup” under the unixstuff directory $ mkdir backup • To see the directory you have just created, type $ ls A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 33 Exercise 1 • On your PC create 6 simple text files called home1.txt home2.txt, unix1.txt, unix2.txt, backup1.txt, backup2.txt • Use SSH to transfer these files from your PC to appropriate directories: • Place home1.txt, and home2.txt under your home directory, unix1.txt and unix2.txt under your unixstuff directory and backup1.txt and backup2.txt under your backup directory A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 34 The directories . and .. • From you terminal Type $ cd /home/unixstuff to get back to your unixstuff directory, and then type $ ls -a • As you can see, in the unixstuff directory (and in all other directories), there are two special directories called (.) and (..) • In UNIX, (.) means the current directory, so typing $ cd . means stay where you are (the unixstuff directory). Note that there is a space between cd and the dot • This may not seem very useful at first, but using (.) as the name of the current directory will save a lot of typing, as we shall see later. • (..) means the parent of the current directory, so typing $ cd .. • will take you one directory up the hierarchy (back to your home directory). • Note: typing cd with no argument always returns you to your home directory. This is very useful if you are lost in the file system. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 35 Pathnames pwd (print working directory) • Pathnames enable you to work out where you are in relation to the whole file-system. • For example, to find out the absolute pathname of your homedirectory, type cd to get back to your home-directory and then type $ pwd • The full pathname for the backup directory looks something like this: /home/ahmadtest/unixstuff/backup • which means that backup is in the sub-directory unixstuff which in turn is located under the ahadaegh sub-directory, which is under the home sub-directory, which is in the top-level root directory called “/”. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 36 / home dgarcia bread work ahmadTest …… cdeleone tcrouch unixstuff home1.txt home2.txt backup unix1.txt unix1.txt backup1.txt A.R. Hadaegh Dr. Ahmad R. Hadaegh bin …… usr …… …… shizer backup2.txt California State University San Marcos (CSUSM) Page 37 Understanding Pathnames • Move to your home directory by typing $ cd • Now type: $ ls unixstuff to list the consents of your unixstuff directory. • Now type: $ ls backups • You will get a message like this – backups: No such file or directory • The reason is, backups is not in your current working directory. • To use a command on a file (or directory) not in the current working directory (the directory you are currently in), you must either cd to the correct directory, or specify its full pathname. • To list the contents of your backups directory, you must type $ ls unixstuff/backups A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 38 ~ (your home directory) • Home directories can also be referred to by the tilde ~ character. It can be used to specify paths starting at your home directory. So typing: $ ls ~/unixstuff • will list the contents of your unixstuff directory, no matter where you currently are in the file system. • What do you think the following would list? $ ls ~ • What do you think the following would list? $ ls ~/.. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 39 Summary Command Meaning ls list files and directories ls -a list all files and directories mkdir make a directory cd directory change to named directory cd change to home-directory cd ~ change to home-directory cd .. change to parent directory pwd display the path of the current directory A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 40 Exercise 2 • • • • Go to the site http://genome.jgi-psf.org/ Under Amoebozoa, choose Dictyostelium purpureum QSDP1 Click on the DOWNLOAD to get into the download page Click on OK to accept the Policy • Download the following files and place them under your desktop • Proteins: Dicpu1_best_proteins.fasta.gz • Transcripts: Dicpu1_best_transcripts.fasta.gz • Genes: Dicpu1_best_genes.gff.gz • EST cluster consensi: Dicpu1_EST_cluster_consensi.fasta.gz • Use either command line or SSH to Create 4 subdirectories called EST, Protein, Gene, and Transcripts under your home directory • Use SSH to transfer protein file into protein directory, Gene file into the gene directory and so on • Create a terminal (If you do not have one opened yet) and use the commands cd, ls and pwd to explore the file system. (Remember, if you get lost, type cd by itself to return to your home-directory) A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 41 Copying Files cp (copy) • cp file1 file2 is the command which makes a copy of file1 in the current working directory and calls it file2 • To test this first, under your home directory create a sub directory called testForCopyCmd. • Then type: $ cd testForCopyCmd • Then at the UNIX prompt, type, $ cp /home/ahmadtest/unixstuff/unix1.txt . • Note: Don't forget the dot . at the end • Remember, in UNIX, the dot means the current directory. • The above command means copy the file unix1.txt to the current directory, keeping the name the same. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 42 Moving files mv (move) • mv file1 file2 moves (or renames) file1 to file2 • To test this, first create couple of simple text files called p1.txt and p2.txt and transfer them to your home directory using SSH. • To move a file from one place to another, use the mv command. This has the effect of moving rather than copying the file, so you end up with only one file rather than two. • It can also be used to rename a file, by moving the file to the same directory, but giving it a different name. • Change the directory to your unixstuff directory. Then, under the unixstuff directory, type $ mv ../p1.txt . $ mv ../p2.txt . • Now Type $ ls and to see if it has worked. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 43 Removing files and directories • rm (remove), rmdir (remove directory) • To delete (remove) a file, use the rm command. As an example, we are going to create a copy of the science.txt file then delete it. • Inside your unixstuff directory, type $ rm p1.txt $ ls • You can use the $rmdir directoryName command to remove a directory (make sure the directory is empty first). • Try to remove the backups directory. You will not be able to since UNIX will not let you remove a non-empty directory. • Also, the command $ rm * removes all the files but not the the directories under a directory. It does not remove hidden files either • The command $ rm –r directoryName removes a directory and all of its subdirectories and files under that directory A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 44 clear (clear screen) • Before you start the next section, you may like to clear the terminal window of the previous commands so the output of the following commands can be clearly understood. • At the prompt, type $ clear • This will clear all text and leave you with the % prompt at the top of the window. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 45 Displaying the contents of a file on the screen • cat (concatenate) • The command cat can be used to display the contents of a file on the screen. • From your desktop, create a text file called science.txt. • Go the following site: http://cropsci.illinois.edu/academics/grad/bioinformatics.cfm and copy the article and paste it into the science.txt file • Then use SSH to transfer the file under your home directory. • Now from the terminal, go to your home directory and type cat science.txt • As you can see, the file is longer than the size of the window, so it scrolls past making it unreadable A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 46 Less • The command “less” writes the contents of a file onto the screen a page at a time. Type: $ less science.txt • Press the [space-bar] if you want to see another page, and type [q] if you want to quit reading. • As you can see, “less” is used in preference to cat for long files. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 47 Head • The head command writes the first ten lines of a file to the screen. • First clear the screen then type $ head science.txt • Then type: $ head -5 science.txt • What difference did the -5 do to the head command? tail • The tail command writes the last ten lines of a file to the screen. • Clear the screen and type $ tail science.txt • How can you view the last 15 lines of the file? A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 48 Simple searching using “less” • Using “less”, you can search though a text file for a keyword (pattern). For example, to search through home1.txt for the word 'science', type $ less science.txt • then, still in “less”, type a forward slash [/] followed by the word to search for the word “science” as follows: /science • As you can see, “less” finds and highlights the keyword. Type “n” to search for the next occurrence of the word “science”. • To search the previous word, you can hold the shift key down and type “n”. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 49 “grep” command for searching words • grep is one of many standard UNIX utilities. It searches files for specified words or patterns. First clear the screen, then type $ grep science science.txt • As you can see, grep has printed out each line containing the word science. • Try typing $ grep Science science.txt • The grep command is case sensitive; it distinguishes between “Science” and “science”. • To ignore upper/lower case distinctions, use the -i option, i.e. type: $ grep -i science science.txt A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 50 • To search for a phrase or pattern, you must enclose it in single quotes (the apostrophe symbol). For example to search for spinning top, type $ grep -i 'Crop Sciences' science.txt • Some of the other options of grep are: • -v display those lines that do NOT match • -n precede each matching line with the line number • -c print only the total count of matched lines • Try some of them and see the different results. • Don't forget, you can use more than one option at a time. • For example, the number of lines without the words science or Science is: $ grep -ivc science science.txt A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 51 wc (word count) • A handy little utility is the wc command, short for word count. To do a word count on science.txt, type: $ wc -w science.txt • To find out how many lines the file has, type $ wc -l science.txt • Important Note: To find out how many occurrences of a particular word like ‘GC’ appears in the science.txt file we do the following: $ grep -o 'GC' science.txt | wc –w A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 52 Summary: Command Meaning cp file1 file2 mv file1 file2 copy file1 and call it file2 move or rename file1 to file2 rm file remove a file rmdir directory remove a directory cat file display a file less file display a file a page at a time head file display the first few lines of a file tail file display the last few lines of a file grep 'keyword' file search a file for keywords wc file A.R. Hadaegh Dr. Ahmad R. Hadaegh count number of lines/words/characters in file California State University San Marcos (CSUSM) Page 53 Exercise 3 • Under your desktop, create a file called fasta.txt. • Go to the site: http://www.dalkescientific.com/writings/NBN/parsing.html • Copy the couple of sequences that is shown there and paste it into your fasta.txt file • Save the file, and use SSH to place it under your home directory • Use grep command to search for the number of sequences. You can do that by finding the number of lines that contains ‘>’ • Find out the total number of lines that have at least one GC word in there • Find out the total number of GC words in the file A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 54 Appending files and Redirection • Create couple of files called list1.txt and list2.txt in your desktop. • Write the following text in list1.txt: • Peach • Orannge • Grape • Do the same for list2.txt and write • Pear • Bannana • Apple • Use SSH to transfer these two files in your home directory in unix • The following command $ cat list.txt list2.txt > biglist.txt • Appends the content of the two files and put the result into another file called biglist.txt A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 55 Sorting the data in a file • The command sort alphabetically or numerically sorts a list. Type • $ sort biglist.txt • The sorted result appears on the screen. • You can sort the data and place the result in another file as follows: • $ sort biglist.txt > slist.txt • Use cat to read the contents of the file slist.txt A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 56 • What if we have multiple numerical and non-numerical data like the following: Sequence Name tRNA ------------CELF22B7 1 CELF22B7 2 CELF22B7 3 CELF22B7 4 CELF22B7 5 tRNA Bounds Begin End ------12619 12738 19480 19561 26367 26439 26992 26920 23765 23694 tRNA Type ---Leu Ser Phe Phe Pro Anti Codon ----CAA AGA GAA GAA CGG Intron Begin ----12657 0 0 0 0 Bounds End ----12692 0 0 0 0 Cove Score ----60.01 80.44 80.32 80.32 75.76 • Then the following sorts it based on the 9th column (Cove Score) and redirect the results into a file called “sortedData.txt” as follows: $ sort –k9n myData.txt > sortedData • Note that –k9 refers to the column 9 and option ‘n’ means it is a numerical column. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 57 • To sort the same thing is revere order, we add the option ‘r’ . $ sort –k9nr myData.txt > sortedData • You can also sort based on multiple columns like: $ sort –k9n –k4 > sortedData • This command sorts it based on column 9 and then within column 9 it sorts it based on column 4. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 58 • To see who is on the system with you, type $ who • Also typing: $ who | sort • This gives the same result as “who”, but quicker and cleaner. • To find out how many users are logged on, type $ who | wc -l A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 59 Summary Command Meaning command > file redirect standard output to a file command >> file append standard output to a file command < file redirect standard input from a file command1 | command2 pipe the output of command1 to the input of command2 cat file1 file2 > file0 concatenate file1 and file2 to file0 sort sort data who list users currently logged in A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 60 Exercise 4 • Go to the following site http://wheat.pw.usda.gov/NSF/curator/nsf_contributor/ksu/ksu_genbank_number.txt • Copy the data (not the header part) and place into a file called wheatEST.txt under your desktop • Transfer the file into your EST or your home directory • Sort the file based on the 1nd column and direct the results into a file called “sorted-EST-Id.txt”. Note that the first column is numeric • Sort the file based on the 3rd column and direct the results into a file called “sorted-AccNo.txt”. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 61 The * wildcard • The character * is called a wildcard, and will match against none or more character(s) in a file (or directory) name. • For example, in your unixstuff directory, type $ ls list* • This will list all files in the current directory starting with the word “list” • Or typing” $ ls *list • will list all files in the current directory ending with the word “list” A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 62 On-line Manuals • There are on-line manuals which gives information about most commands. • The manual pages tell you which options a particular command can take, and how each option modifies the behavior of the command. Type man command to read the manual page for a particular command. • For example, to find out more about the wc (word count) command, type: $ man wc • Alternatively, $ whatis wc • gives a one-line description of the command, but omits any information about options etc. • When you are not sure of the exact name of a command, $ man –k keyword • For example, $ man -k copy prints all the command that explains about the copy command in unix A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 63 File system security (access rights) • In your unixstuff directory, type $ ls -l • Where “l” represents “long listing” . You will see that you now get lots of details about the contents of your directory, similar to the example below. • Each file (and directory) has associated access rights, which may be found by typing ls -l. Also, ls -lg gives additional information as to which group owns the file (beng95 in the following example): drwxr-xr-x 3 ahadaegh faculty 4096 Feb 5 2009 BioInfo • In the left-hand column is a 10 symbol string consisting of the symbols d, r, w, x, -, and, occasionally, s or S. • If d is present, it will be at the left hand end of the string, and indicates a directory: otherwise - will be the starting symbol of the string. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 64 • The 9 remaining symbols indicate the permissions, or access rights, and are taken as three groups of 3. • The left group of 3 gives the file permissions for the user that owns the file (or directory) (ahadaegh in the above example); • the middle group gives the permissions for the group of people to whom the file (or directory) belongs (faculty in the above example); • the rightmost group gives the permissions for all others. • The symbols r, w, etc., have slightly different meanings depending on whether they refer to a simple file or to a directory. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 65 Access rights on files. • r (or -), indicates read permission (or otherwise), that is, the presence or absence of permission to read and copy the file • w (or -), indicates write permission (or otherwise), that is, the permission (or otherwise) to change a file • x (or -), indicates execution permission (or otherwise), that is, the permission to execute a file, where appropriate • Access rights on directories • r allows users to list files in the directory; • w means that users may delete files from the directory or move files into it; • x means the right to access files in the directory. This implies that you may read files in the directory provided you have read permission on the individual files. • So, in order to read a file, you must have execute permission on the directory containing that file, and hence on any directory containing that directory as a subdirectory, and so on, up the tree. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 66 Some Example: -rwxrwxrwx A file that everyone can read, write and execute (and delete). -rw------- A file that only the owner can read and write, no-one else can read or write, and no-one has execution rights (e.g. your mailbox file). A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 67 chmod (changing a file mode) • Only the owner of a file can use “chmod” command to change the permissions of a file. The options of “chmod” are as follows Symbol A.R. Hadaegh Dr. Ahmad R. Hadaegh Meaning u user g group o other a all r read w write (and delete) x execute (and access directory) + add permission - take away permission California State University San Marcos (CSUSM) Page 68 • For example, to remove read write and execute permissions on the file biglist for the group and others, type $ chmod go-rwx biglist.txt • This will leave the other permissions unaffected. • To give read and write permissions on the file biglist to all, $ chmod a+rw biglist.txt A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 69 Processes and Jobs • A process is an executing program identified by a unique PID (process identifier). To see information about your processes, with their associated PID and status, type : $ ps • A process may be in the foreground, in the background, or be suspended. In general the shell does not return the UNIX prompt until the current process has finished executing. • Some processes take a long time to run and hold up the terminal. • Backgrounding a long process has the effect that the UNIX prompt is returned immediately, and other tasks can be carried out while the original process continues executing. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 70 Running background processes • To background a process, type an & at the end of the command line. For example, the command sleep waits a given number of seconds before continuing. Type: $ sleep 10 • This will wait 10 seconds before returning the command prompt [ahadaegh@qandc ~]$. Until the command prompt is returned, you can do nothing except wait. • To run sleep in the background, type $ sleep 10 & [1] 6259 • The & runs the job in the background and returns the prompt straight away, allowing you do run other programs while waiting for that one to finish. • The first line in the above example is typed in by the user; the next line, indicating job number and PID, is returned by the machine. The user is be notified of a job number (numbered from 1) enclosed in square brackets, together with a PID and is notified when a background process is finished. Backgrounding is useful for jobs which will take a long time to complete. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 71 Killing a process • It is sometimes necessary to kill a process (for example, when an executing program is in an infinite loop) • To kill a job running in the foreground, type ^C (control c). For example, run $ sleep 100 • You can type ^C too kill the process. • You can run the program in the background as follow: $ sleep 100 & • Type: $ jobs to see the job number of the process: • If it is job number 4, type $ kill %4 • To check whether this has worked, examine the job list again to see if the process has been removed. A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 72 ps (process status) • Alternatively, processes can be killed by finding their process numbers (PIDs) and using kill PID_number $ sleep 1000 & Now type: $ ps • You may getting something like this: PID TT S TIME COMMAND 20077 pts/5 S 0:05 sleep 1000 21563 pts/5 T 0:00 netscape 21873 pts/5 S 0:25 nedit • To kill off the process sleep 1000, type: $ kill 20077 • Where 20077 is the process id of the job. • Now type ps again to see if it has been removed from the list. • If a process refuses to be killed, uses the -9 option, i.e. type $ kill -9 20077 A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 73 Summary: Command ls -lag chmod [options] file command & ^C ^Z bg kill %1 ps kill 26152 A.R. Hadaegh Dr. Ahmad R. Hadaegh Meaning list access rights for all files change access rights for named file run command in background kill the job running in the foreground suspend the job running in the foreground background the suspended job kill job number 1 list current processes kill process number 26152 California State University San Marcos (CSUSM) Page 74 Other useful UNIX commands • gzip: This reduces the size of a file, thus freeing valuable disk space. For example, type $ ls -l science.txt • and note the size of the file using ls -l . Then to compress science.txt, type: $ gzip science.txt • This will compress the file and place it in a file called science.txt.gz • To see the change in size, type ls -l again. • To expand the file, use the gunzip command. $ gunzip science.txt.gz A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 75 • zcat: zcat will read gzipped files without needing to uncompress them first. $ zcat science.txt.gz • If the text scrolls too fast for you, pipe the output though less $ zcat science.txt.gz | less • file: file classifies the named files according to the type of data they contain, for example ascii (text), pictures, compressed data, etc.. To report on all files in your home directory, type: $ file * • diff: This command compares the contents of two files and displays the differences. Suppose you have a file called file1 and you edit some part of it and save it as file2. To see the differences type: $ diff file1 file2 A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 76 Exercise 5 • Remember the Protein, EST, and others that you downloaded and placed in proper directories in previous exercise, • Use gunzip to uncompress them and use less or more command to see the content of the file A.R. Hadaegh Dr. Ahmad R. Hadaegh California State University San Marcos (CSUSM) Page 77