Жолт, избегать закодированных имен файлов, используйте переменную HISTFILE вместо этого, с запасным вариантом, если вы действительно параноиком: $ {HISTFILE: - ~/.bash_history} ;-)
Любое, почему непосредственно через оглавлению файл истории ?! Вы потеряете номер истории, который необходим для повторной передачи команды (например,! 33, чтобы снова выполнить 33-ю запись из вашей истории) без копирования &. Вставьте grep-выход.
Обратите внимание, что использование такого рода расширений $ @ может не работать на разных уровнях (эпических). Например, аргумент, начинающийся с «-» (histgrep -h), обычно зависает или стреляет в ногу. В самом деле, этот базовый пример можно легко проработать, следуя классическому «-» способу разделения аргументов от опций, но обсуждение не имеет конца, помня, что аргументы, которые должны быть предоставлены этому хаку, были бы регулярными выражениями , ;-)
О, и не является ли histgrep каким-то слишком многословным выбором? h, i, Tab, g, Tab :)
IMHO Я придерживаюсь использования^R, возвращаясь к истории | grep ... когда это необходимо. Во всяком случае, для примера, я (лениво) переписать этот маленький помощник как:
function hgrep() { history | grep -P -- "$*"; }
я мог быть неправ это, но я думал, что файл истории записывается, когда пользователь выходит из системы, поэтому, если это правда, то этот файл не содержит последних команд. Спасибо, CTRL-R. – Anonymous
См. Это для обновления файла истории автоматически после каждой команды: http://briancarper.net/blog/keeping-bash-history-in-sync-on-disk-and-between-multiple-terminals HTH –
'grep -P' не работает на mac os x yosemite, rremoved '-P' работает. – Jichao