Вместо использования date | awk ...
, можно использовать спецификатор формата с командой даты для формата, который Вы хотите. Согласно date(1)
страница справочника, %b
сокращенное имя месяца, и %e
день месяца, дополненное пространство, то же как %_d
.
Следующая команда даты должна дать Вам строку в форме, которую Вы хотите:
date "+%b %e"
Можно также поместить другие символы в спецификатор формата, поэтому если Вы используете:
date "+^%b %e"
Вы получите grep шаблон, который соответствует дате только в начале строки. Это предотвратило бы любые ложные соответствия, где существует дата в части сообщения журнала.
Как указано Steven D, можно также сделать это с единственным вызовом grep
:
auth()
{
grep -E "$(date '+^%b %e')"'.*(BREAK-IN|Invalid|user|Failed|refused|su|Illegal)' /var/log/auth.log
}
Я делал несколько изменений на основе проблем упомянутыми в комментариях связанный с заключением в кавычки. Мои правила для заключения в кавычки состоят в том, чтобы использовать одинарные кавычки, когда группировка разделяет слова на отдельное слово и защищать от расширения оболочки метасимволов и использовать двойные кавычки только, когда Вы хотите к расширению в строке многословной.
Исходный ответ имел date
строка формата в двойных кавычках, которая была неправильной согласно моему выше правил. Я теперь изменил это. Редактирование поместило строку grep в двойные кавычки. Я отложил его в одинарные кавычки, потому что существует так часто перекрытие между метасимволами оболочки и grep метасимволами регулярного выражения (RE), что Вы почти всегда хотите к одинарной кавычке REs к grep. Текущая строка, возможно, не нуждается в одинарных кавычках, но если эта функция оболочки развивается со временем, она может порвать с будущими изменениями.
Поскольку вопрос спрашивал о команде для вставления псевдонима, был дополнительный уровень заключения в кавычки, которое не показали в этом ответе. Было бы более просто использовать функцию оболочки вместо псевдонима, таким образом, Вы не должны иметь дело с этим дополнительным уровнем заключения в кавычки. Вложенное заключение в кавычки может стать грязным быстро, таким образом, что-либо, что можно сделать для предотвращения его, необходимо сделать.
Я протестировал это как функцию оболочки, с помощью предложения Gilles для futzing дата, и это "работает на меня".
C-c CHAR
Это эквивалентноC-x CHAR
в нормальном Emacs. Например,C-c o
вызывает глобальную привязкуC-x o
, который обычно являетсяother-window
.
(Информационный файл Emacs, "Режим Term")
C -c C -j переключается в построчный режим, когда вам нужно сделать Emacs -y что-то с буфером (Term :line run )появляется в строке состояния
C -c C -k переключается обратно в режим char, когда вам нужно, чтобы он снова работал как терминал (Term :char run )отображается в строке состояния
C-x o
. В окне терминала ничего не происходит. Я должен использовать мышь для переключения на другое окно. Это просто не работает в окне терминала! Так, мой вопрос, там другой короткий путь для переключения из окна терминала в Emacs другому? – math 27.04.2012, 13:31C-c CHAR
, в моем случае,C-c o
ничего не происходит в Emacs. – math 27.04.2012, 13:32term-mode
?C-c o
работы для меня, послеM-x term RET RET
(который запрашивает/bin/bash
в моем случае, но это не должно влиять на вещи). Кроме того, что версия Emacs? (Мой 23.4.1) – geekosaur 27.04.2012, 13:35M-x term RET RET
. Странный.... Я просто отмечаю, что не могу уничтожить окно рабочий терминал сC-x k
. Кажется, что в таком окне терминала я не могу использовать короткие пути. – math 27.04.2012, 14:20emacs
команды не доступны в окнах терминала, потому что часто необходимо мочь отправить ключи непосредственно к тому, что работает в окне; вот почемуC-c
обычно восстановление. Я не знаю, почему это не работает на Вас. – geekosaur 27.04.2012, 14:31