#!/bin/sh # Using external pipe with st, give a dmenu prompt of recent commands, # allowing the user to copy the output of one. # xclip required for this script. # By Jaywalker and Luke # Adapted for FreeBSD by Joe mem=$(sed '{s/^ $//g;s/\x0//g;}') ps1=$(printf "%s" "$mem" | tail -n1 | sed -E 's/([%,#,>]).*/\1/') chosen=$(printf "%s" "$mem" | grep -F "$ps1" | grep -v "$ps1 $" | tac | dmenu -i -l 10 | sed 's/[^^]/[&]/g; s/\^/\\^/g') eps1=$(echo "$ps1" | sed 's/[^^]/[&]/g; s/\^/\\^/g') if [ "$1" = "noprompt" ]; then printf "%s" "$mem" | gawk "/^$chosen$/{p=1;print;next} p&&/$eps1/{p=0};p" | sed '{1d;s/ $//;}' | head -c -1 | xclip -selection clipboard else printf "%s" "$mem" | gawk "/^$chosen$/{p=1;print;next} p&&/$eps1/{p=0};p" | sed 's/ $//' | head -c -1 | xclip -selection clipboard fi