Что делает! # (Восклицательный знак хэш),! $: 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 

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 действуют аналогичным образом.

  • Никогда не очищайте .bash_history (HISTFILE)
  • Не удается получить «echo !!» для работы в bash из сохраненного скрипта
  • Простой стандартный способ печати последней команды bash с меткой времени
  • История команд и каталогов, в которых мы находились
  • Можно ли перенести историю команд из одной системы в другую?
  • Как получить историю команд только для текущего процесса оболочки?
  • как сохранить команду в истории bash, не выполняя ее программно?
  • Что может привести к тому, что история моего bash будет неожиданно очищена?
  • Удаление межсезонного дубликата в истории команд bash
  • Обратный поиск Bash через вкладки терминала
  • Не теряйте текущую команду, когда вверх нажата кнопка в терминале
  • Как прервать fc без выполнения команды?
  • Linux и Unix - лучшая ОС в мире.