Текст эха, предложенный подсказкой в ​​bash

Можно ли изменить текст, который появляется после $PS1 . Это то, что вводит пользователь. Я хочу предложить некоторую команду после запуска my_function . Конечно, я должен иметь возможность изменять / удалять его с помощью клавиши backspace

 root@linux: root@linux: ls aplha beta gamma root@linux: my_function root@linux: echo_something_here (It should be deletable by me) 

На основе этого ответа вы можете использовать expect (вам, возможно, придется его установить в первую очередь):

 #!/usr/bin/expect -f # Get a Bash shell spawn -noecho bash # Wait for a prompt (in my case was '$', but your example only put ':') expect ": " # store the first argument in a variable set arg1 [lindex $argv 0] # Type something send $arg1 # Hand over control to the user interact exit 

Теперь вы можете вызвать его (если вы сохранили его как my_function ):

 root@linux: ./my_function "some text here" root@linux: some text here 

Единственным нежелательным эффектом может быть то, что он начинает новый баш.

Если я правильно понял вопрос, то получив скрипт поддержки

  #! / Bin / Баш
  read -ei "$ *"
  printf "% s \ n" "$ REPLY"

например, ~ / bin / iedit, тогда вы можете сказать

eval $ (~ / bin / iedit "текст здесь")

это выведет «текст здесь», который вы можете редактировать. После того, как вы закончите его редактирование, будет выполнена результирующая команда.

Это не хороший пример кода. Почти всегда вы хотите использовать «$ @», а не «$ *», и обычно нужно стараться избегать использования eval. Возможно, вы захотите добавить историю-$ REPLY. Сложив их вместе, скрипт поддержки может быть

  #! / Bin / Баш
  read -ei "$ *"
  history -s "$ REPLY"
  fc -s

и вы будете ссылаться на него как «источник ~ / bin / iedit», текст здесь ».