Exercise

Preventing Clobber Exercise

Task

Stop > from silently destroying a file you meant to keep, then make that protection permanent.

Hosts
workstation, then servera
  1. Create a file holding data you care about

    cd ~
    echo "quarterly revenue: 4200" > finance_report.txt
    cat finance_report.txt
  2. Enable noclobber and try to overwrite it

    set -o with no arguments lists every shell option and whether it is on.

    set -o | grep noclobber
    set -o noclobber

    Now make the mistake noclobber exists to prevent. The redirect is refused and the file survives.

    echo "oops, wrong file" > finance_report.txt
    echo $?
    cat finance_report.txt
  3. Append, then overwrite on purpose

    Appending is never destructive, so noclobber allows it.

    echo "quarterly expenses: 3100" >> finance_report.txt
    cat finance_report.txt

    >| says you really do mean to overwrite. noclobber is a seatbelt, not a lock.

    echo "superseded by the audited figures" >| finance_report.txt
    cat finance_report.txt
  4. Confirm the option is off again in a new session

    Log out of servera and log back in.

    exit
    ssh servera
    set -o | grep noclobber
  5. Persist noclobber in ~/.bashrc

    vim ~/.bashrc
    set -o noclobber
    exit
    ssh servera
    set -o | grep noclobber
    echo "test" > finance_report.txt

    Clean up

    rm finance_report.txt