Você pode, talvez, fazer o que quiser usando a linha de leitura de bash com -i
, que fornece uma entrada inicial para -e
edit. Por exemplo, usando date
em vez de ls
, pois é mais simples de ver:
$ read -ei "$(date)" && $REPLY
Mon Jul 25 13:42:47 CEST 2016
Agora você tem a string Mon Jul 25 13:42:47 CEST 2016
como mostrado com o cursor no final. Você pode editar isso usando as teclas de cursor habituais e assim por diante. Por exemplo, você pode editar a data 25
a 20
e, em seguida, adicionar echo
ao início, dando
echo Mon Jul 20 13:42:47 CEST 2016
Quando você pressiona return, a linha read é colocada na variável REPLY
, que você executa. Isso é um pouco frágil, pois a resposta é dividida em espaços e assim por diante. Você pode adicionar citações e um eval:
$ read -ei "$(date)" && eval "$REPLY"
Então, se você editar a linha, alterando 25 como antes, insira um comando que precise de um argumento com espaços, por exemplo:
date +%s -d 'Mon Jul 20 13:42:47 CEST 2016'
você receberá a resposta correta 1469014967
. Como sempre, cuidado com eval.