Как мне выполнить команду из истории без печати его снова в терминале?

$ echo hello; cd ~/Docs    
hello

$ !! 
echo hello; cd ~/Docs
hello

Я хочу получить Hello и выполнить каталог изменений после ввода !! без повторного показа Echo Hello; CD ~ / Docs , снова.

Редактировать:

FC работает только для одной команды, но не выполняет полную строку от терминала. То же самое для !! или $ (!!) , они не работают. Я попробовал stty -echo , но то же самое - это только скрывает печатать !! , но все еще показывает команду. Ближайшее решение, которое у меня было, - это сохранить эту команду, затем запустить его из Script.SH , но он все равно покажет, что он работает скрипт .sh .

0
задан 15 March 2021 в 23:38

1 ответ

Создайте следующую функцию, которая загружается с вашим Bash Config (например, в .bashrc ):

rpt() {
  IFS=';' read -r -a array <<< "$(fc -ln -1)"
  for element in "${array[@]}"
  do
    $element
  done
}

Запустите команду RPT для выполнения функции.

Это считывает последнюю командную строку в массив и разделяет его в ; знаки, и каждый элемент в массиве (каждая команда) работает отдельно.

Для этого работает ; ; ; ; ; ; ; является зарезервированным символом, который не может при каких-либо обстоятельствах нельзя использовать в печатных строках и т. Д.

Это ограничение, которое вы должны принять для этого решения, но Я считаю это «достаточно хорошо» для работы.

0
ответ дан 18 March 2021 в 23:27

Другие вопросы по тегам:

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