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

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

 echo echo ! echo ! 

$echo !!! дал

  • Определение наличия хоста в сети
  • Как открыть сессию bash incognito?
  • Как совместить строку, содержащую символ «$» с grep?
  • if-then-else внутри Bash Alias
  • применить функцию bash к родительскому охвату
  • CLICOLOR и LS_COLORS в bash
  •  echo echo echo !! echo echo !! 

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

  • конвертировать jpg-файл после загрузки с помощью inotifywait
  • ошибка, возникающая при использовании su -c: bash: без контроля заданий в этой оболочке
  • Чтение и добавление в файл одновременно с сохранением конца строки
  • Как сортировать имена файлов с пробелами в них и объединять файлы?
  • Вывод команды Pipe на Yad, а также запись результата в файл журнала
  • Есть ли простой способ сменить каталоги из одной структуры дубликатов папок в другую?
  • 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 !

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