Skip to content
Snippets Groups Projects

Bash Cheat Sheet

A cheat sheet for bash commands.

Manage and navigate directories

pwd                       # Print current directory path
ls                        # List directories
ls -a|--all               # List directories including hidden
ls -l                     # List directories in long form
ls -l -h|--human-readable # List directories in long form with human readable sizes
cd foo                    # Go to foo sub-directory
cd                        # Go to home directory
cd ~                      # Go to home directory
cd -                      # Go to last directory
mkdir foo                 # Create foo directory
rmdir foo                 # Delete foo directory
rmdir -r foo              # Delete foo directory including content  

Manage files

cp foo.txt bar.txt                                # Copy file
mv foo.txt bar.txt                                # Move/Rename file
rm foo.txt                                        # Delete foo.txt
rm *                                              # Delete all files in current directory 
ln -s foo bar                                     # Create a link 'bar' to the file 'foo'

Read and manipulate files

cat foo.txt            # Print all contents
less foo.txt           # Print some contents at a time (g - go to top of file, SHIFT+g, go to bottom of file, /foo to search for 'foo')
head foo.txt           # Print top 10 lines of file
tail foo.txt           # Print bottom 10 lines of file
nano foo.txt           # Simple file editor
vi foo.txt             # Advanced file editor 
wc foo.txt             # List number of lines words and characters in the file
cut -d [delimiter] -f [field] foo.txt     # Cuts out the specified fields that are separated by the specified delimiter     

Input and Output

echo "Hello world!"         # Print statement to standard output
echo "foo" > bar.txt        # Direct output into file. Overwrites file if it already exists.
echo "foo" >> bar.txt       # Direct output into file and append if it already exists. 
command1 | command2         # Directs output from command1 as standard input into command2    



SLURM Cheat Sheet

Connect to Science Cluster

ssh shirtname@cluster.s3it.uzh.ch

Submitting jobs

In a script myjob.sh:

#!/usr/bin/env bash
#SBATCH --cpus-per-task=[number]
#SBATCH --mem=[memory]
#SBATCH --time=[hr:min:sec]
#SBATCH --job-name=[name]
#SBATCH --output=[name]_%j.out
#SBATCH --error=[name]_%j.err

# load any required modules 
module load [module name]

command1
command2
command3

Submit script as job to the computing nodes:

sbatch myjob.sh