Поместите текст в буфер командной строки удара

Я согласовываю 100% с тем, что уже сказал Caleb. Некоторые более CentOS-определенные метки от меня:

Распределение основано на Redhat и его патчах. Те патчи тестируются очень хорошие и за прошлые 4 года, где мы использовали CentOS 5 с 50 + серверы, там никогда не был плохой патч.

НО: Хотя мы применяем все патчи ежедневно автоматически к серверам, которые выполняют просто материал распределения, мы загружаем рабочие серверы (после того, как glibc или обновление ядра) только после того, как у нас были наши системы тестирования, работающие в той конфигурации несколько дней.

Для других репозиториев мы зеркально отражаем их к каталогу подготовки. Эти патчи применяются к тестовым серверам сначала. Если доказано, что ничто не повреждается, мы активируем каталог подготовки и копируем его в производственный репозиторий.

Автоматическое исправление имеет побочный эффект, что исправленные компоненты часто перезапускаются - поэтому при неправильном конфигурировании их после запуска, перезапуск перестанет работать..

9
13.07.2013, 15:09
4 ответа

Если это для функции, которую Вы собираетесь использовать в readline, связывающем с bind -x затем можно изменить READLINE_LINE. (Пример)

За пределами привязки readline можно продвинуть поддельную команду на историю с history -s.

4
27.01.2020, 20:06
  • 1
    Проблема - это, если я делаю history -s 'foo' в сценарии история запущенной оболочки не изменяется вообще –  gioele 12.07.2013, 11:15
  • 2
    @gioele необходимо запустить его из оболочки (например, из сценария, с которым Вы загружаетесь source). Вы ничего не можете сделать от отдельного процесса. –  Gilles 'SO- stop being evil' 12.07.2013, 22:43

Как альтернатива history -s 'foo' попытка:

echo 'foo' >> ~/.bash_history
history -n

# or
history -s 'foo'
history -a
history -n
0
27.01.2020, 20:06
[1180882]Ответ Жиля правильный, но не полностью удовлетворяющий. Пока я читаю этот вопрос, ОП хочет "предустановить" следующую строку ввода. В моём случае я хотел прочитать текущую позицию терминала в моей функции PROMPT_COMMAND. Это работает, но использует тот же буфер чтения, что и в первичной оболочке, и поэтому любой пользовательский входной поток отбрасывается тем фактом, что я выполнил вызов встроенной функции 'read'. Поэтому я хотел прочитать пользовательский ввод отдельно, прочитать свой терминал, а затем поместить входной ввод обратно в буфер ввода, что является оригинальным вопросом. Обратите внимание, что это действительно один и тот же процесс, так что теоретически это должно быть возможно.

Насколько я вижу (на моем баше 4.2), нет никакой функции, которая бы программно подталкивала что-то к стеку входных данных. В zsh используется 'print -z'.

Так что ответ: в bash это невозможно, для этого нужно использовать zsh.[1180887].

2
27.01.2020, 20:06

Я нашел хаковый способ сделать это на странице примеров fzf. Это работает с bash 4.3 и perl 5.18:

writecmd () { 
  perl -e 'ioctl STDOUT, 0x5412, $_ for split //, do{ chomp($_ = <>); $_ }' ; 
}

# Example usage
echo 'my test cmd' | writecmd

Он распечатывает команду в stdout, но копирует ее в буфер команд. На связанной странице также есть пример, если вы хотите выполнить команду напрямую.

6
27.01.2020, 20:06

Теги

Похожие вопросы