#!/bin/zsh # Define the location of the bookmarks file bookmarks_file="$HOME/.bookmarks" # Function to display usage information help() { echo "\nQuickly navigate to saved bookmarks in the terminal.\n" echo "Usage:" echo " goto downloads" echo " goto school" echo " goto portfolio" echo " goto -h" echo " goto --help" } # Function to validate and change directory validate_dir() { local target_dir=$1 # Check if bookmarks file exists if ! test -f "$bookmarks_file"; then echo "Error accessing bookmarks file: $bookmarks_file" return fi # Read each line in the bookmarks file while IFS= read -r line; do # Check if the line contains the target directory if [[ $line == *$target_dir* ]]; then # Change directory and exit cd "$line" return fi done < "$bookmarks_file" # Target directory not found in bookmarks echo "Directory '$target_dir' not found in bookmarks." return } # Check for valid number of arguments if [[ $# -ne 1 ]]; then echo "Invalid usage. See 'goto --help' for details." return elif [[ $1 == "-h" || $1 == "--help" ]]; then help return fi # Validate and change directory based on argument validate_dir $1 # Exit script (should be reached after successful directory change) return