#!/bin/sh # Using external pipe with st, give a dmenu prompt of recent commands, # allowing the user to copy the command lines inputed # xclip required for this script. # By joe, adapted from st-cpyout by Jaywalker and Luke mem=$(sed '{s/^ $//g;s/\x0//g;}') ps1=$(printf "%s" "$mem" | tail -n1 | sed -E 's/([%,#,>,$]).*/\1/') printf "%s" "$mem" | grep -F "$ps1" | grep -v "$ps1 $" | return chosen=$(printf "%s" "$mem" | grep -F "$ps1" | grep -v "$ps1 $" | tac | dmenu -i -l 10) if [ -n "$chosen" ]; then cmd=$(printf "%s" "$chosen" | sed "{s/^$ps1 //;s/ $//;}") printf "%s" "$cmd" | xclip -selection clipboard herbe=$(printf " clipped cmd : %.10s" "$cmd") if [ "$(printf "%s" "$cmd" | wc -c)" -gt 10 ]; then herbe="${herbe}..." fi herbe "$herbe" & fi