Понять практическое применение опции Grep-H в различных ситуациях

Смотрите на Тему MSDN , Синхронизация Потока (Руководство по программированию C#)

Обычно лучше стараться не соединять открытый тип, или на экземплярах объектов вне управления Вашего приложения. Например, заблокируйте (это) может быть проблематично, если к экземпляру можно получить доступ публично, потому что код вне Вашего управления может соединить объект также. Это могло создать ситуации с мертвой блокировкой, где два или больше потока ожидают выпуска того же объекта . Соединение общедоступного типа данных, в противоположность объекту, может вызвать проблемы по той же причине. Соединение литеральных строк особенно опасно, потому что литеральные строки интернируются общеязыковой средой выполнения (CLR). Это означает, что существует один экземпляр любого данного строкового литерала для всей программы, тот же самый объект представляет литерал во всех доменах запущенного приложения на всех потоках. В результате блокировка, помещенная на строку с тем же содержанием где угодно в процессе приложения, блокирует все экземпляры той строки в приложении. В результате лучше блокировать частного или защищенного участника, который не интернируется. Некоторые классы предоставляют участникам специально для блокировки. Тип массива, например, обеспечивает SyncRoot. Много типов набора предоставляют члену SyncRoot также.

5
задан Community 23 May 2017 в 12:23
поделиться

4 ответа

Grep перечислит имена файлов по умолчанию, если указано более одного имени файла. Параметр -H позволяет сделать это, даже если указано только одно имя файла. В обоих ваших примерах указано более одного имени файла.

Вот лучший пример:

$ grep Richie notes.txt
Richie wears glasses.

$ grep -H Richie notes.txt
notes.txt:Richie wears glasses.

Это более полезно, когда вы даете ему подстановочный знак для неизвестного количества файлов, и вы всегда хотите, чтобы имена файлов были напечатаны, даже если подстановочный знак соответствует только одному файлу.

12
ответ дан 18 December 2019 в 08:30
поделиться

При поиске с помощью команды grep из нескольких файлов по умолчанию отображается имя файла, в котором было найдено совпадение. Если вы укажете -H, имя файла будет отображаться всегда, даже если вы вводите grep из одного файла. Вы можете указать -h, чтобы имя файла никогда не отображалось.

1
ответ дан 18 December 2019 в 08:30
поделиться

Если вы вводите grep для одного файла, -H имеет значение:

$ grep muel mesi
muel

$ grep -H muel mesi
masi:muel

Это может иметь значение в различных контексты сценариев. Например, сценарий (или нетривиальная последовательность команд по конвейеру) может не знать, сколько файлов на самом деле имеет дело: один или несколько.

5
ответ дан 18 December 2019 в 08:30
поделиться

Emacs имеет интерфейс grep (Mx grep, Mx lgrep, Mx rgrep). Если вы попросите Emacs найти foo в текущем каталоге, тогда Emacs вызовет grep и обработает вывод grep, а затем представит вам результаты с интерактивными ссылками. Интерактивные ссылки, как и в Google.

Emacs передает в grep две опции: -n (показывать номер строки) и -H (показывать имена файлов, даже если файл только один. Дело в согласованности), а затем вывод в интерактивные ссылки.

В общем, согласованность хороша как хороший API, но согласованность конфликтует с DWIM.

Когда вы напрямую используете grep, вам нужен DWIM, поэтому вы не передаете -H.

1
ответ дан 18 December 2019 в 08:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: