From 6f2b9d55044bd9a6e7d546cbc3a0dc19476c2fb5 Mon Sep 17 00:00:00 2001 From: Fanny Wegner <fwegner@imm.uzh.ch> Date: Tue, 21 Mar 2023 07:27:08 +0100 Subject: [PATCH] Upload New File --- exercises/UNIX_HPC_cheat_sheet.md | 142 ++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 exercises/UNIX_HPC_cheat_sheet.md diff --git a/exercises/UNIX_HPC_cheat_sheet.md b/exercises/UNIX_HPC_cheat_sheet.md new file mode 100644 index 0000000..41a4ffd --- /dev/null +++ b/exercises/UNIX_HPC_cheat_sheet.md @@ -0,0 +1,142 @@ +# Bash Cheat Sheet + + A cheat sheet for bash commands. + + + ## Manage and navigate directories + +```bash +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 +``` + +## Manage files + +```bash +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' +mkdir foo # Create foo directory +rmdir foo # Delete empty foo directory +rmd -r foo # Delete foo directory including content +``` + +## Read and manipulate files + +```bash +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') +more foo.txt # Print some content at a time, only moving forward in document +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 +wc -l foo.txt # Counts the lines +cut -d [delimiter] -f [field] foo.txt # Cuts out the specified fields that are separated by the specified delimiter out of each line of a file +touch foo.txt # Create empty file if it does not exist or change "modified by" date of existing file +``` + +## Input and Output + +```bash +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 +``` +<br><br> + + +## Variables and arrays + +```bash +myvar="foobar" # Assign string to a variable +$myvar # Calling the variable +output=$(command) # Assign output of a command to a variable +array=(x1 x2 x3 x4) # Create an array +${array[@]} # Access the whole array +${array[0]} # Access the 1st element +${!array[@]} # Get indeces of all array elements +``` + +## Control structures + +For loop: +```bash +for i in {1..n} +do + command $i +done +``` + +While loop: +```bash +while [ condition ] +do + command $i +done +``` + +If else: +```bash +if [ condition ] +then + command1 +else + command2 +fi +``` + + +<br> + +# SLURM Cheat Sheet + +## Connect to Science Cluster + +```bash +ssh shortname@cluster.s3it.uzh.ch +``` + +## Copy files to Science Cluster + +```bash +scp foo.txt <shortname>@cluster.s3it.uzh.ch:<target directory> +``` + + +## Submitting jobs + +In a script `myjob.sh`: +```bash +#!/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: +```bash +sbatch myjob.sh +``` + + -- GitLab