понимание выхода эха, за которым следуют некоторые восклицательные знаки

Я снова играл с echo $$ . Хорошо, что отображает этот pid оболочки. Но потом я сделал echo ! который быстро отображается!. Тогда echo !! произведенный

 echo echo ! echo ! 

$echo !!! дал

 echo echo echo !! echo echo !! 

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

  • перенаправление echo / printf не работает в фоновом режиме
  • Странное поведение скрипта Bash с echo-printf в файле
  • Bash Scripting: печать данных столбца в одной строке
  • netcat: отправить текст в службу эха, прочитать ответ, затем выйти
  • Отправка последовательных команд с помощью сеанса echo vs screen
  • Возврат каретки с командой эха
  • Печать переменной с обратной косой чертой в тире
  • Почему «wc -c» печатает значение еще одного с эхом?
  • 2 Solutions collect form web for “понимание выхода эха, за которым следуют некоторые восклицательные знаки”

    Обозначение события истории !! заменяется последней командой в вашей истории. Сначала Bash выводит команду, как она будет выполнена, а затем выполняет ее.

    Пример:

     $ foo foo: command not found $ !! foo # command to be executed foo: command not found # result of execution 

    В твоем случае:

     $ echo ! ! $ echo !! echo echo ! # command to be executed echo ! # result of execution $ echo !!! echo echo echo !! # command to be executed echo echo !! # result of execution 

    Обратите внимание, что команда с обозначением события не вводится в историю как введенная. Сначала расшифровывается обозначение события, а затем команда вводится в историю. Вот почему в третьей команде ( echo !!! ), обозначение события не заменяется echo !! (введенная вторая команда), но echo echo ! (расширенная вторая команда).

    Вот последняя команда с выделенной частью:

     $ echo (!!)! echo (echo echo !)! # command to be executed echo echo !! # result of execution 

    Если вы используете !! что он заменяется последней командой в оболочке, поэтому первая строка – это отображение echo echo ! подстановки echo echo ! а второйвыходное echo !

    Interesting Posts

    Как удалить строку между двумя строками?

    Unix эквивалент PowerShell?

    Резервное копирование с удаленного сервера

    график производительности TCP-соединения на основе `ss -i`

    размер отчетов для каталога на 4 Кбайта больше, чем сумма содержимого

    GNU Parallel: как сохранить результаты нескольких команд для переменной?

    Восстановление физической и логической группы томов с данными

    Как отправить почту в учетную запись gmail с помощью ssmtp

    Почему кешированные чтения медленнее, чем чтение дисков в hdparm -direct?

    Как изменить порядок или изменить результат ниже

    postfix добавить один адрес IPv6

    Тестирование активного сеанса окна

    Настройте wpa_supplicant.conf на скрытый SSID с помощью WPA2 / PEAP / MS-CHAPv2

    Каков правильный способ добавления недостающих дистрибутивов в исполняемый FreeBSD?

    Выполнить команду на нескольких хостах, но только команду печати, если она выполнена успешно?

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