#!/usr/bin/env bash # vim: set filetype=sh # # Author: Cody Hiar # Date: 2019-04-25 # # Description: Search buffer for url results # # Set options: # e: Stop script if command fails # u: Stop script if unset variable is referenced # x: Debug, print commands as they are executed # o pipefail: If any command in a pipeline fails it all fails # # IFS: Internal Field Separator set -euo pipefail IFS=$'\n\t' # Colors for printing G='\e[0;32m' # Green LG='\e[0;37m' # Light Gray C='\e[0;36m' # Cyan NC='\e[0m' # No Color # Immutable globals readonly ARGS=( "$@" ) readonly NUM_ARGS="$#" readonly PROGNAME=$(basename "$0") readonly BUFFER='/tmp/tmuxcopy.log' POSITION=1 cleanup() { rm -rf "$BUFFER" } create_buffer() { touch "$BUFFER" trap cleanup EXIT } capture_pane() { tmux capture-pane -S -9000000 -p > "$BUFFER" } find_urls() { perl -wnl -e '/https?\:\/\/[^\s]+[\/\w]/ and print $&' "$BUFFER" } # Main loop of program main() { create_buffer capture_pane URL=$(find_urls | tail -n "$POSITION") tmux copy-mode ; tmux send -X search-backward $URL } main