[112363]Это то, что я бы сделал:
Однако это использование завершения Git'а, а не zsh'а:
https://git.kernel.org/cgit/git/git.git/tree/contrib/completion/git-completion.zsh
Меркуриал установлен неправильно. Я использовал easy_install и он работал правильно, а не apt-get.
-121--229535-Для записи, вот подход, который я предпочитаю:
grep pattern $(find . -type f ! -path './test/main.cpp')
Сохраняя grep
в начале команды, я думаю, что это немного более ясно - плюс это не отключает подсветку цвета grep
. В некотором смысле использование find
в команде-подстановке является всего лишь способом расширения/замены (ограниченного) поднабора поиска файлов функциональных возможностей grep
.
Для меня синтаксис find -exec
имеет вид arcane. Одной из сложностей с find -exec
является (иногда) необходимость обхода различных символов (в частности, если \;
используется при Bash). Только для того, чтобы поместить вещи в привычные контексты, следующие две команды в основном эквивалентны:
find . ! -path ./test/main.cpp -type f -exec grep pattern {} +
find . ! -path ./test/main.cpp -type f -print0 |xargs -0 grep pattern
Если вы хотите исключить подкаталоги , может потребоваться использовать подстановочный символ. Я не до конца понимаю схему здесь -- говорить о arcane :
grep pattern $(find . -type f ! -path './test/main.cpp' ! -path './lib/*' )
Еще одно примечание, чтобы обобщить найти
решения на основе для использования в скриптах : grep
в командной строке должен быть включен параметр -H
/ -with-filename
. В противном случае форматирование выходных данных изменится при условии, что в результатах поиска find
будет только одно имя файла. Это примечательно, поскольку это не является необходимым при использовании собственного поиска файлов grep
(с параметром -r
).
... Даже лучше включить /dev/null
в качестве первого файла для поиска. Это решает две задачи:
grep
будет думать, что есть два и использовать режим вывода нескольких файлов. grep
будет думать, что есть один файл и не зависать в ожидании stdin. Таким образом, окончательный ответ:
grep pattern /dev/null $(find . -type f ! -path './test/main.cpp')
-121--35245- Вы можете попробовать написать собственную процедуру gettimeofday (), загрузив ее в скомпилированную библиотеку и используя LD_PRELOAD, чтобы ваше приложение получило фальшивое время. Это не должно влиять на другие приложения.