Getting started with the Mac Terminal

The Mac operating system is a Unix-based on graphical user interface. You can therefore interact with your Mac computer using many (most) of the same commands used in Unix/Linux systems. Many of these commands achieve the same things that you can achieve using 'point and click' methods. For instance, if you wanted to create a new folder on your Mac desktop you could click on your desktop, select File > New Folder. But you can also create a new folder using Unix commands in Mac's Terminal.app (which can be found in Applications/Utilities/Terminal). This will open a “command line” interface (meaning that you interact with the computer by typing out commands rather than pointing and clicking with your mouse/trackpad). By typing the following commands (press enter/return after each line) you will change the directory of your command-line interface to your desktop and create a new folder entitled “mynewfolder”

cd ~/Desktop mkdir mynewfolder
EVERY Apple computer running OS X is built on the Unix platform and comes with the Terminal app pre-installed. If you have a Mac, you have Terminal! So you can get familiar with the Terminal on your own machine.

At this point you are undoubtedly thinking “It was way easier to just use the trackpad, so why would I ever want to use the command-line!?” However, the command-line gives you direct control over many aspects of your computer that would be hard (or impossible) to access via the graphical interface. More importantly for our purposes, we can write our commands into a text file and then tell the computer to read the commands from that file (this file is called a “bash script” because the particular Unix language that we'll be using is called “bash”.) This is great because it means that every time we do whatever task we've “scripted”, we can be certain that we're doing it exactly the same way we did it last time. Moreover, if we need to run the task 100 times (e.g. we want to create 100 new folders), we can just tell the computer to read the bash script 100 times. Imagine creating those same 100 new folders by pointing and clicking!

The majority of what we do in this course will rely on controlling your computer using the command-line. You should therefore dedicate a sufficient amount of time to getting comfortable with basic Terminal/Unix commands and behaviors. There are tons of useful OS X Terminal and Unix tutorials online. I've selected a few below that you can use to get started.

OS X Terminal Tutorials

Getting to know the command line

Introduction to the Mac OS X command line

25 Terminal Tips Every Mac User Should Know

Unix Tutorials

UNIX Introduction

UNIX Tutorial

UNIX Help

Linux.org tutorial

Linux tutorial - includes glossary and forums

Top 10 bash shell tips

BASH Tutorials

bash is just one of many different Unix “shells” available. Shells are basically different languages for interacting with your computer. We will use bash because it is common, user-friendly, and the default shell on OS X machines.

BASH Programming - Introduction HOW-TO

Advanced Bash-Scripting Guide

Most Frequently Used Linux Commands

To get detailed help of these command, including the options available and how to use them, use

man command_name

or

help command_name

manipulating files/directories

cd - change the current directory

ls - list directory contents

mkdir - make directories

mv - move (rename) files/directories

rm - remove files/directories

cp - copy files/directories

touch - change file timestamps.

chmod - change file access permissions

rsync - faster, flexible replacement for rcp (remote file copy)

scp - secure copy (remote file copy program)

working with text files

cat - concatenate files and print on the standard output

head - output the first part of files

tail - output the last part of files

wc - print the number of newlines, words, and bytes in files

more - a filter for paging through text one screenful at a time

less - a program similar to more, but more powerful (and user friendly)

grep - print lines matching a pattern

diff - find differences between two files

gvim (vi) - The GUI version of vim - a text editor that is upwards compatible to Vi.

sed - a stream editor used to perform basic text transformations

awk - pattern scanning and processing language

working with processes

ps - report a snapshot of the current processes

top - display Linux tasks

bg - resume the suspended job in the background, as if it had been started with & (useful after you suspend a command with Ctrl-z)

kill - terminate a process

exit - cause the shell to exit

getting useful information

man - format and display the manual pages

help - display helpful information about builtin commands

date - print or set the system date and time

locate - find files by name

find - search for files in a directory hierarchy

who - show who is logged on

pwd - print name of current/working directory

du - estimate file space usage

df - report filesystem disk space usage

which - shows the full path of (shell) commands

history - display the command history list with line numbers

others

echo - display a line of text

source - read and execute commands from a file

alias - prints the list of aliases or define new aliases

gimp - an image manipulation and paint program

ssh - a program for logging into a remote machine and for executing commands on a remote machine

mount/umount - mount and unmount filesystems

passwd - update a user's authentication tokens (password)

nohup - run a command immune to hangups, with output to a non-tty

rdesktop - Remote Desktop Protocol client (connects to windows computers)

export - export supplied names (variables) to the environment of subsequently executed commands

crontab - maintain crontab files for individual users (used to execute commands at scheduled time)

MATLAB

MATLAB is a multi-platform programming language that is designed to excel at numerical computing, particularly numerical matrix manipulation (indeed, it's name comes from matrix laboratory). It is therefore the preferred language for many scientific, engineering, and economics applications. Many of the EEG and fMRI programs and applications that we will use throughout the semester are written in MATLAB.

As with Unix/Bash/OSX Terminal, there are many MATLAB tutorials available online. Here is a useful list of many tutorial options

MATLAB is not freely available. However, it is installed on all the computers (except #18) in SMA 206. If you're interested in purchasing it for your personal computer there are reasonably priced student licenses for under $100 (this is not required for the course).