Как этот псевдоним bash повторяет последнюю команду как sudo?

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

Псевдоним, который я нашел, это alias mycmd='sudo $(history -p \!\!)'

Мне просто не ясно, как это работает.

  • История bash усечена до 2000 при новом входе в систему после обновления до ubuntu 16.04
  • История каталогов в zsh
  • история показывает только текущую сессию
  • Zsh: команды быстрого закладки
  • zsh tcsh-like история навигации
  • Показать старые или более старые элементы истории с помощью команды history в zsh
  • Могу ли я гарантировать, что история регистрирует все выполнение?
  • Поиск истории Alt + F2 в среде рабочего стола Cinnamon
  • One Solution collect form web for “Как этот псевдоним bash повторяет последнюю команду как sudo?”

    $(history -p \!\!) – это способ выполнения последней команды без добавления ее в историю. Из help history :

      -p perform history expansion on each ARG and display the result without storing it in the history list 

    В bash, !! расширяется до последней выполненной команды, но вы не можете напрямую использовать это в псевдонимах, так как это расширение выполняется задолго до расширения псевдонима. (Расширение истории – одно из самых ранних событий – это происходит даже до расширения брекетов (как правило, сначала ).)

    Таким образом, вы должны использовать какой-то способ для выполнения последней команды, и это можно сделать с помощью history -p , которая расширяется !! как будет работать оболочка.

    Хотя я не знаю, почему они сбежали ! , Для меня он отлично работает без обратной косой черты.

    Linux и Unix - лучшая ОС в мире.