= Your Survival Guide to Unix at the CBSU = What you see below probably seems like a list of arbitrary incantations and may put you off ever going near a unix command line. However, you'll soon find that simple combinations of unix commands (possibly written as a shell script) can do things instantly that would take hours of pointing and clicking on a Mac or PC. == Commands for Navigation, File Manipulation etc. == || '''Function''' || '''Command''' || '''Options''' || || Show contents of current directory || ''ls'' || details: ''ls –l'', hidden files: ''ls –a'', output to file: ''ls > file.txt'', wild cards: ''ls *.txt'' || || like ''ls'', but can provide lots of SAMFS specific information || ''sls'' || ''sls –D /imaging/xy01/experiment1/image1.nii'' || || Change directory || ''cd '' || e.g. ''cd /home/myname/mydatadir'', one up: ''cd ..'' (e.g. ''cd ../batchfiles''), to home directory: ''cd ~'' || ||Make directory || ''mkdir '' || || || Copy file/directory || ''cp '' || Copy directories: ''cp -r '' || || Move file/directory || ''mv '' || || || Delete file/directory || ''rm '' || delete directory: ''rm –r '', suppress warning prompt: ''rm -f '' || || Create link between a new filename and an existing file || ''ln '' || symbolic link: ''ln -s '', to see whether a file is "real" or a symbolic link, use ''ls -l'' || || Find a file in directory structure || ''find'' || find ''myfile.txt'' in current directory and below: ''find . -name myfile.txt'', wildcards: ''find . -name \*results\*.txt'' || || Search for files using specified criteria || ''sfind'' || ''sfind /imaging/xy01/experiment1 –type f –offline –name “*.nii”'' || || Find letter string within text || ''grep'' || ''grep error logfile.txt'', ''ps -ef | grep '' || || See list of previous commands || ''history'' || || || Execute command from history list || ''!'', where ''x'' is number in history list || e.g. ''!112'' to get command 112 from ''history'' list || || Send output of a command to text file || ''>'' || e.g. ''ls -l > listoffiles.txt'', ''>>'' appends instead of overwriting || || Send output of a command directly to another command ("pipes") || ''|'' || e.g. '' ls -l | grep myfile.txt '' || || Send output of a command to text file AND standard output (screen) || ''tee'' || e.g. ''ls -l | tee listoffiles.txt'', ''tee -a'' appends instead of overwriting || || Run progress in background (keep command prompt) || ''&'' || e.g. ''matlab &'', ''runmybatch.sh &'' || || Changing access permissions || ''chmod'' || e.g. ''chmod 755 '' or ''chmod go-w '' || || Changing group of a file || ''chgrp'' || e.g. ''chgrp imaging '' || || Create shortcut for command || ''alias'' || e.g. ''alias cd_batch "cd "'', ''alias h history'' || || Convert text files from DOS to Unix || ''dos2unix '' || || || Edit files || ''nedit'', ''emacs'', ''vi'' || e.g. type ''nedit &'' to keep command prompt || || Help on linux commands || ''man '' || turn page using space bar, quit typing ''q'' || || Short description of commands || ''whatis '' || || = System-Related Commands = || Show load of linux boxes || ''showload'' || || || Disk usage information || ''du'', ''sdu'' || By default, ''du'' will only show online data. ''sdu'' will show on- and off- line data, ''sdu –sh /imaging/xy01/experiment1'' || || Change linux box || ''ssh '' || e.g. ''ssh l42'' || || Show your jobs/processes in current session || jobs || || || Show current processes || ''ps'' || more details: ''ps -ef'' || || Kill a process || ''kill'' || ''kill '', where '''' is from ''ps'' output || || Stage offline data back to disk || ''stage'' || ''stage /imaging/xy01/experiment1/image1.nii'' || || Show most CPU-intensive tasks on current processor || ''top'' || || || Checking where an executable file is located || ''which '' || || || Show name of current linux box || ''hostname'' || ip address: ''hostname -i'' || || Show features of current linux box || ''uname'' || more details: ''uname -a'' || || Check your user name || ''whoami'' || || || Get time or date || ''time'', ''date'' || || == Useful Tricks == || Use cursor keys up/down to get previous commands || || Copy/paste: mark text with left mouse button, click to destination, click middle mouse button || || Auto-complete commands: start typing, then “Tab” to complete to next unique possibility || || Type the beginning of a previously used command, then simultaneously press ''Esc p'' to autocomplete to last used command with same beginning || || Move cursor to beginning ''Ctrl+a'' or end ''Ctrl+e'' of command line || || Run linux commands from within matlab using ''! '' (e.g. ''! hostname'') or ''[s,r] = unix()'' (e.g., ''[s,r] = unix('hostname')''), where ''s'' returns the status (0=pass, nonzero=fail) and ''r'' is the result (e.g., 'l41'). || == General == || Overview of CBU computing: http://imaging.mrc-cbu.cam.ac.uk/meg/Beginners/MatlabIntroCBU?action=AttachFile&do=get&target=RussellComputing.pdf || || Computing on Intranet: http://intranet.mrc-cbu.cam.ac.uk/computing/ || || Intro to Unix: http://www.ee.surrey.ac.uk/Teaching/Unix/ || || More [wiki:CbuMeg:Beginners computing-related intros] || || Primer on [wiki:CbuMeg:AnalyzingData/Primer_ShellScripting shell scripting] || || VNC (wiki:CbuImaging:UsingVNC): start Putty, ''vncserver –geometry 1280x1024 –name , for OpenGL graphics: ''vncserver.glx -geometry 1280x1024 -name '' '' || || Access home space: Windows \\home\username; Linux /home/username || || Access imaging space: Windows \\samfs-lh\imaging; Linux /imaging/username || || 32-bit machines: l21, l24-31, l33-l36, l37-l42; 64-bit machines: l43-l63; OpenGL machines: l37-l42 ||