# Exercise: Read the Logbook

Take over a lighthouse station by reading its notice, its long logbook and its supplies with cat, less and file, look up a new command in its manual page, and let a check script tell you which answers are right.

Apprentice · Unix · Linux · Updated November 10, 2026

You're the new keeper at Gull Rock Light Station. The last keeper left you a notice, a logbook of almost a year of days, nearly a thousand lines long, and a folder of supplies, one of which isn't what its name suggests. Your job is to answer eight questions that only a careful reader can: when the whale came and went, how the logbook ends, which file isn't text, and two things you'll find only in the manual. A check script compares your answers with the station's files and tells you which ones are right.

## Before you start

You need a terminal: the Terminal app on a Mac, or Ubuntu on Linux or in WSL on Windows. The check runs with **bats**, a small program that runs checks written for bash. If you did *Exercise: Find Your Way*, you already have it. If `bats --version` doesn't print a version number yet, install it:

```bash
sudo apt install bats       # Ubuntu, and Ubuntu in WSL
brew install bats-core      # a Mac, with Homebrew
```

`sudo` asks for your password, the one you use to sign in; nothing shows on the screen while you type it.

## Get the exercise code

Open this lesson's GitHub repository, [github.com/ask-codey/exercise-bash-read-the-logbook](https://github.com/ask-codey/exercise-bash-read-the-logbook), also linked from the **Exercise** box beside the lesson. Click **Code**, then **Download ZIP**, and unzip it into your `terminal-practice` folder. Or clone it with Git.

The folder holds:

- `station/`: the notice, the logbook and the supplies folder. Read them; don't change them.
- `answers.txt`: the eight questions, each with a numbered line for your answer. This is the file you write.
- `check.bats`: the check. You don't need to change it.

## What to do

Open a terminal and `cd` into the exercise folder, the one with `answers.txt` in it. Then `cd station` and start with the notice. Each question in `answers.txt` looks like this, with the example already answered:

```text
# Example: what is the name of the station? (notice.txt says so in its first line.)
# 0) Gull Rock

# 1. Read notice.txt in the station folder. Who wrote it? (Write the name only.)
1)
```

1. **Read.** `cat` the short files. Open `logbook.txt` with `less`, and search it rather than paging through every day.
2. **Look it up.** Two questions are about commands: one you haven't met yet, `head`, and one about which command is built into the shell. `man`, `--help` and `type` have the answers.
3. **Answer.** Open `answers.txt` in any text editor, write each answer after its `)`, and save. Write dates the way the logbook writes them, such as `March 3`.

## Check your work

From the exercise folder (not from inside `station`):

```bash
bats check.bats
```

At first almost every check fails. That's expected: each answer you get right turns its check into a ✓. A failing check names its question and gives a hint, for example *Question 3: "June 21" isn't the last whale yet. After a search in less, n jumps to the next match. Keep pressing it until there are no more.*

## Hints

- **The logbook is long.** In `less`, `/` searches, `n` jumps to the next match and `G` to the end (*Reading Files: cat and less*). The match moves to the top of the screen, so press the up arrow to see the date line above it.
- **Not sure what a file is?** Ask `file` before you open it. If `cat` ever fills your screen with strange symbols, type `reset` and press Enter.
- **Counting lines** is a job for a command from *Getting Help*. Its `--help` shows which option counts only lines.
- **A command you've never seen:** `man` and its name, then search the page with `/` the way you search in `less` (*Getting Help*).
- **Typing the same search again?** The up arrow and Ctrl+R bring it back (*Your Command History*).

## When you're done

Every check passes:

```text
check.bats
 ✓ the station folder is still here
 ✓ 1) who wrote the notice
 ✓ 2) the first time the logbook mentions a whale
 ✓ 3) the last time the logbook mentions a whale
 ✓ 4) the date of the last entry
 ✓ 5) how many lines the logbook has
 ✓ 6) the file in supplies that isn't text
 ✓ 7) the head option that sets how many lines it prints
 ✓ 8) the command that's built into the shell

9 tests, 0 failures
```

Now look back at question 7. You learned what an option of `head` does without anyone teaching you. Try the option on the logbook with a few different numbers: does it do what the manual said?

## Submit your exercise

The exercise is how you finish this lesson. When your work is done, put it on GitHub in a repo of your own, then submit that repo's address here.

1. On GitHub, click **+**, then **New repository**. Name it (for example `exercise-bash-read-the-logbook`), choose **Public**, and click **Create repository**. Leave out the README: your folder already has one.
2. In a terminal in your exercise folder (Ubuntu in WSL on Windows), send your work to your new repo. If you downloaded the ZIP:

   ```bash
   git init -b main
   git add .
   git commit -m "My solution"
   git remote add origin https://github.com/your-name/exercise-bash-read-the-logbook.git
   git push -u origin main
   ```

   If you cloned the starter instead, point your copy at your own repo, then commit and push:

   ```bash
   git remote set-url origin https://github.com/your-name/exercise-bash-read-the-logbook.git
   git add .
   git commit -m "My solution"
   git push -u origin main
   ```

3. Paste your repo's address, such as `https://github.com/your-name/exercise-bash-read-the-logbook`, into **Submit your exercise** on this page. The site checks that the repo is public and holds your commits, and then the lesson is complete.

Changed something after you submitted? Push it, and submit again: your latest submission is the one that counts.

## So what

Reading a long file for the one line that matters, and working out a command from its own manual, is what developers and administrators do every day with logs, settings and tools they've never used before.

## Key terms

- [cat](https://www.ask-codey.com/glossary/cat)
- [less](https://www.ask-codey.com/glossary/less)
- [file](https://www.ask-codey.com/glossary/file-unix)
- [man](https://www.ask-codey.com/glossary/man)
- [Shell Builtin](https://www.ask-codey.com/glossary/shell-builtin)
- [wc](https://www.ask-codey.com/glossary/wc)

## Related

- [Reading Files: cat and less](https://www.ask-codey.com/lessons/bash-reading-files)
- [Your Command History](https://www.ask-codey.com/lessons/bash-command-history)
- [Getting Help](https://www.ask-codey.com/lessons/bash-getting-help)

Source: https://www.ask-codey.com/lessons/exercise-bash-read-the-logbook
