Например, посмотрите на следующую строку bash-кода
eval `echo "ls *.jpg"`
В нем перечислены все jpgs в текущем каталоге. Теперь я хочу, чтобы он просто печатал строку в приглашении, чтобы я мог ее отредактировать перед выполнением. (Как, например, key-up)
Как мне это сделать?
Причиной этого вопроса является гораздо более полезный псевдоним:
alias ac="history 2 | sed -n '1 s/[ 0-9]*//p' >> ~/.commands; sort -fu ~/.commands > ~/.commandsTmp; mv ~/.commandsTmp ~/.commands"
alias sc='oldIFS=$IFS; IFS=$'\n'; text=(); while read line ; do text=( ${text[@]-} "${line}") ; done < ~/.commands; PS3="Choose command by number: " ; eval `select selection in ${text[@]}; do echo "$selection"; break; done`; IFS=$oldIFS'
alias rc='awk '"'"'{print NR,$0}'"'"' ~/.commands; read -p "Remove number: " number; sed "${number} d" ~/.commands > ~/.commandsTmp; mv ~/.commandsTmp ~/.commands'
Где ac
добавляет или запоминает последнюю введенную команду, sc
показывает доступные команды и выполняет их, а rc
удаляет или забывает команду. (Вам нужно touch ~/.commands
, прежде чем он заработает)
Было бы еще полезнее, если бы я мог отредактировать вывод sc
перед его выполнением.