Skip to content

Commit

Permalink
Remove dependency on sed(1) for history processing
Browse files Browse the repository at this point in the history
We post-process `history 1`'s output to extract the current command.
This processing needs to strip the leading history number, an optional
`*` character indicating whether the entry was modified (or a space),
and then a space separating character.

We were previously using sed(1) for this, but we can implement an
equivalent transformation using bash's native parameter expansion
syntax.
  • Loading branch information
jparise committed Jan 12, 2025
1 parent 8926de0 commit c853a7e
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions bash-preexec.sh
Original file line number Diff line number Diff line change
Expand Up @@ -250,10 +250,8 @@ __bp_preexec_invoke_exec() {
fi

local this_command
this_command=$(
export LC_ALL=C
HISTTIMEFORMAT='' builtin history 1 | sed '1 s/^ *[0-9][0-9]*[* ] //'
)
this_command=$(LC_ALL=C HISTTIMEFORMAT='' builtin history 1)
this_command="${this_command# *[[:digit:]]*[* ] }"

# Sanity check to make sure we have something to invoke our function with.
if [[ -z "$this_command" ]]; then
Expand Down

0 comments on commit c853a7e

Please sign in to comment.