Skip to content
Snippets Groups Projects
Commit 6f2b9d55 authored by Fanny Wegner's avatar Fanny Wegner
Browse files

Upload New File

parent 31031ff8
No related branches found
No related tags found
No related merge requests found
# 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
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment