
Недавно я заметил, что эхо, в которое я включаю много "!", приводит к странным вещам. Например: echo !!
дает мне:
echo rm -r * 1000
rm -r * 1000
( rm -r *
была последняя команда, которую я выполнил перед тем, как набрать ее). Почему это происходит, и есть ли способ отключить это?
решение1
Вы столкнулись с shell expansion
- оболочка проанализирует вашу команду и заменит специальные подстановочные знаки другой информацией. Попробуйте echo '!!'
(одинарные кавычки), чтобы понять, что могут сделать расширение оболочки и кавычки.
Подробнее о расширении оболочки можно прочитать на man
странице bash
. Обратите внимание на разделы дляистория расширение, в котором обсуждаются event designators
такие темы, как !!
, ирасширение, в котором обсуждаются другие формы расширения оболочки. Раздел оцитированиеобъясняет поведение механизмов кавычек bash и разницу между тем, как оцениваются строки в одинарных и двойных кавычках.