Что делает! # (Восклицательный знак хэш),! $: R: r (восклицательный знак доллара д),! #: T (восклицательный знак хэша) означает в нижних командах bash?

Я пытался установить пакет Nagios и наткнулся на эти странные расширения bash в руководстве здесь . Может ли кто-нибудь помочь мне понять, что означают расширения? Ссылка на wiki также будет полезна для будущих ссылок.

root@z:~> wget http://mathias-kettner.de/download/check_mk-1.1.7i5.tar.gz root@z:~> tar zxvf !#:t root@z:~> chown -R root:root !$:r:r && chmod -R ow !$:r:r && cd !$:r:r root@z:~/check_mk-1.1.7i5> ./setup.sh 

  • Добавить BASHPID в историю?
  • Как использовать последнюю команду в цикле while?
  • Что означает? $?
  • Замените последнее слово последней команды, но сохраните первый
  • Как получить запись истории для правильного отображения на нескольких строках
  • Повторно запустить несколько команд истории
  • История команд и каталогов, в которых мы находились
  • Никогда не очищайте .bash_history (HISTFILE)
  • One Solution collect form web for “Что делает! # (Восклицательный знак хэш),! $: R: r (восклицательный знак доллара д),! #: T (восклицательный знак хэша) означает в нижних командах bash?”

    Это ключевые слова расширения истории bash . Они выбирают строку из истории оболочки и повторно вставляют (ее части), возможно после модификации. Сайт, с которым вы связались, делает разумную работу, объясняя их, но он не описывает их всех.

     tar zxvf !#:t 

    на самом деле не имеет смысла !# выбирает строку, напечатанную до сих пор, но это tar zxvf и мы не хотим повторно использовать это. Должен быть

     tar zxvf !$:t 

    который выбирает последнюю часть предыдущей строки ( !$ ), которая является URL-адресом, заданным для wget , и принимает часть имени файла ( :t , для хвоста – строго говоря, это то, что осталось после последнего разделителя каталога / , что происходит с работать с URL-адресами).

    затем

     chown -R root:root !$:r:r 

    выбирает последнюю часть предыдущей строки, отбрасывает расширение файла ( :r – строго говоря, он удаляет все после последнего . , включая . ) дважды, что дает имя каталога (при условии, что tarball содержит каталог с тем же именем, что и базовое имя tarball). Команды chmod и cd действуют аналогичным образом.

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