UNIX / Linux commands Basic level
Magali COTTEVIEILLE - September 2009
What is Linux?
Linux is a UNIX system Free Open source Developped in 1991 by Linus Torvalds There are several Linux distributions:
Red Hat Fedora SuSE Mandrake Debian Ubuntu
What is Linux Shell ?
Computers understand the language of 0's and 1's called binary. Shell accepts your instructions or commands in English (mostly) and if it is a valid command, it is passed to the kernel (part of the OS). Several shells available with Linux including: BASH ( Bourne-Again SHell ) Most common shell in Linux. It's Freeware shell. CSH (C SHell)The C shell's syntax and usage are very similar to the C programming language. KSH (Korn SHell) TCSH. TCSH is an enhanced but completely compatible version of the Berkeley UNIX C shell (CSH). Tip: To find your current shell type following command % echo $SHELL Tip2: to know more about a command, dont forget the manual! Ex: % man ls
Files and rights
ls --- lists your files ls -l --- lists your files in 'long format', which contains lots of useful information, e.g. the exact size of the file, who owns the file and who has the right to look at it, and when it was last modified. ls -a --- lists all files, including the ones whose filenames begin in a dot, which you do not always want to see. There are many more options, for example to list files by size, by date, recursively etc. ls lhtr more filename --- shows the first part of a file, just as much as will fit on one screen. Just hit the space bar to see more or q to quit. cat filename --- displays the entire file emacs/kwrite/nedit/ filename --- editors that let you create and edit a file mv filename1 filename2 --- moves a file (i.e. gives it a different name, or moves it into a different directory (see below) cp filename1 filename2 --- copies a file rm filename --- removes a file. It is wise to use the option rm -i, which will ask you for confirmation before actually deleting anything. You can make this your default by making an alias in your .cshrc file. rm r directory --- removes a directory. You can use the option rm rf to avoid confirmation questions chmod options filename --- lets you change the read, write, and execute permissions on your files. The default is that only you can look at them and change them, but you may sometimes want to change these permissions. For example, chmod o+r filename will make the file readable for everyone, and chmod o-r filename will make it unreadable for others again. Note that for someone to be able to actually look at the file the directories it is in need to be at least executable. See help protection for more details.
Files and rights
starbuck 667% ls -lh Refinement_ref4 total 7.3M -rw-rw-r-- 1 magali franklab 4.8K 2008-05-27 -rw-rw-r-- 1 magali franklab 2.8K 2008-05-27 -rw-rw-r-- 1 magali franklab 3.1K 2008-05-27 drwxrwxr-x 3 magali franklab 40K 2009-05-11 -rw-r--r-- 1 magali franklab 15K 2008-05-27 -rw-rw-r-- 1 magali franklab 15K 2008-05-27 -rwxrwxr-x 1 magali franklab 7.0M 2008-05-27 drwxrwxr-x 5 magali franklab 20K 2008-10-06 Rights u g o owner group size date (user, group, others) 15:55 15:55 15:55 16:06 15:55 15:55 15:56 12:10 endmerge.pam endrefine.pam enhance.pam final grploop.pam smangloop.pam spider work name
To change the rights, 2 methods with chmod:
chmod o+r myfile, chmod g-rw myfile, chmod u=rw,go= myfile chmod 777 myfile, chmod 555 myfile
Note: to change the rights on an entire directory:
chmod R 777 mydirectory, chmod -R g+rw .
To change the owner: chown
% chown magali bob myfile
Directories and paths
mkdir dirname --- make a new directory . is your current directoy .. is the upper level directory Paths can be absolute or relative:
/space/Yjjk/tmp/foo.txt is an absolute path. ../tmp.foo.txt is a relative path
cd dirname --- change directory. cd .. will get you one level up from your current position cd without arguments will send you to your home directory, like cd ~ cd ~/tmp = cd /home/magali/tmp pwd tells you where you currently are. du filename --- shows the disk usage of the files and directories in filename (without argument the current directory is used). du -s gives only a total. du h --- human
Finding things
find:
find name refine-settings.pam find name *.pam find name vol0?.spi
grep string filename(s) --- looks for the string in the files:
starbuck 675% grep grploop refine.pam ; grploop <a href="./grploop.pam">grploop.pam</a> ; grploop/smangloop returns [stop] @grploop([ang-step],[ang-limit],[radius],[alignsh],[prjradius],[iter],[grp],[stop],[maxspfreq]) OR
man: the manual pages to find the definition of a command/ options:
% man ps
Job control
List your processes:
top ps ef: to see all the processes ps ef | grep magali: to see magalis processes See man ps for more
Kill a process: kill [options] PID
kill -9 32709
Launch a job in background (to get the prompt back):
./spider spi/dat @apshgrp &
If you forgot to lauch in background as you wanted:
./spider spi/dat @apshgrp Press Ctrl + Z (suspend job) Then type bg to send it in background (Or fg to restore it in foreground)
Launch a executable
The file you call must have the execution rights. If not, youll have an error message. Notion of default path:
If you call spider, it will launch it although you dont have a local copy. Why so? Either because it is defined by your PATH (environment variable):
% which eman /usr/local/EMAN/bin/eman
Either because it is defined so by an alias:
% which spider spider: aliased to /usr/local/spider/bin/spider_linux_mpfftw_opt64
To know the content of you PATH:
% echo $PATH
From a local copy: example: you want to launch SPIDER in your current directory:
% ./spider spi/dat
Generalization: the system must know the path of the file you want to execute
Secure connections and transfers
Connections:
ssh:
ssh 156.111.6.184 ssh X
[email protected]transfers:
sftp [email protected], then put/get scp (-r) files machine:path scp *.pam 156.111.6.184:/usr10/magali
Example: connect and transfer files on the master node of the cluster
Connect with ssh -X [email protected] Check the disk space: /home/magali> df -h ./ Filesystem Size Used Avail Use% Mounted on /dev/sdc1 2.2T 1.3T 985G 56% /master.raid Check the space usage of your files: magali/Master_cluster> du -hs ctftilt 262M ctftilt Transfer files from the cluster to your computer: scp r Xlk 156.111.6.46:/space Note: to log on a node from the master node: % rsh node42
Personalize you start file (.cshrc)
#!/bin/csh # SPIDER users standard cshrc (you may edit this file as you wish) # run spider users startup csh file source ~/.cshrc-spider # NMFF on the computer of the conference room (bb02frank3) ####################################################################### if ($HOSTNAME == bb02frank3.cpmc.columbia.edu) then setenv PATH /usr/local/NMFF/bin:${PATH} setenv LD_LIBRARY_PATH /opt/intel/Compiler/11.0/081/lib/intel64:$LD_LIBRARY_PATH alias nmff 'nmffem.pl < nmff.inp' echo "Hello" alias filter '/usr/local/MMTSB/perl/convpdb.pl' endif # sbgrid ####################################################################### alias sbgrid 'source /programs/labcshrc # Misc ####################################################################### alias ll ls -lh' 10 May 95 al
Miscellaneous
whoami --- returns your username. Sounds useless, but isn't. You may need to find out who it is who forgot to log out somewhere date --- shows the current date and time. Archiving: tar
tar tar tar tar cvf myarchive.tar *.pam cvzf myarchive.tar.gz *.pam xvf myarchive.tar xvzf myarchive.tar.gz
File Compression:
gzip filename --- Produces filename.gz gunzip filename --- uncompresses files compressed by gzip. compress/uncompress: .Z format zip/unzip: .zip format
Redirection: > and |
cat file1.txt file2.txt > file3.txt ps ef | more