!
символ вызывает замену истории удара. При сопровождении строкой (как в провальном примере), он пытается расшириться до последнего события истории, которое началось с той строки. Точно так же, как $var
расширен до значения той строки, !echo
расширился бы до последней команды эха в Вашей истории.
Пространство является повреждающимся символом в таких расширениях. Сначала отметьте, как это работало бы с переменными:
# var="like"
# echo "$var"
like
# echo "$"
$
# echo "Do you $var frogs?"
Do you like frogs? <- as expected, variable name broken at space
# echo "Do you $varfrogs?"
Do you? <- $varfrogs not defined, replaced with blank
# echo "Do you $ var frogs?"
Do you $ var frogs? <- $ not a valid variable name, ignored
То же самое произойдет для расширения истории. Символ удара (!
) начинается заменяющая последовательность истории, но только если сопровождаемый строкой. Следующий за этим с пространством делают это литеральным ударом вместо части последовательности замены.
Можно избежать этого вида замены и для переменной и для истории expantion при помощи одинарных кавычек. Ваши первые примеры использовали одинарные кавычки и так хорошо работали. Ваши последние примеры находятся в двойных кавычках и таким образом колотят, просканировал их для последовательностей expantion, прежде чем это сделало что-либо еще. Единственная причина первый не смещался, состоит в том, что это пространство является символом прерывания как показано выше.
Существует системное средство журнала: системный журнал. Из сценария оболочки звоните logger
команда.
logger -p 'user.info' "hello world"
Однако это для системных журналов, не для журналов, предназначенных для конкретного пользователя. Если журналы предназначаются для пользователя, который запускает приложение, то файл журнала является более соответствующим (что-то как ~/.application-name/downloads.log
). Альтернативный подход должен был бы отправить местную почту, но это только для случаев, где пользователь должен видеть журналы, не, если они предназначаются для отладки.
Даже если системные журналы являются правильным местом, полная расшифровка стенограммы HTTP-заголовков является слишком большой информацией. Зарегистрируйте одну строку в системных журналах и поместите расшифровку стенограммы в файл в специализированном каталоге под /var
.