Как распечатать 5 самых больших репозиториев Bitbucket

Это не разные «стили команд». Они используют функцию bash , а не функцию grep.

Прочтите об этом, запустив:

LESS='+/Brace Expansion' man bash

Когда у вас есть значения, разделенные запятыми -внутри фигурных скобок, ваша оболочка расширяет их до нескольких аргументов до того, как grepих увидит.

Поскольку вы передаете только один каталог, вам не нужно раскрывать фигурные скобки.

Когда вы используете фигурные скобки только с одним элементом между (без запятых и без двойных точек для обозначения диапазона ), ваша оболочка оставляет фигурные скобки в покое. Вам остается передать grepбуквальное имя {_book}, которое не является каталогом, который вы хотите исключить.


Стоит отметить, что вам также не нужны двойные кавычки.

grep -Fnrl mysql./ --exclude-dir _book

...будет работать нормально.

Двойные кавычки ничего не портят, но и не нужны. Вы можете использовать их для всех аргументов с тем же результатом, поскольку кавычки удаляются оболочкой до того, как grepих увидит.

grep '-Fnrl' "mysql" './' "--exclude-dir" \_\b\o\o\k

Вы даже можете заключить в кавычки 'grep'само название команды, хотя оно имеет немного другое значение. В частности, он подавляет поиск псевдонимов. Например, в системах Ubuntu grepобычно имеет псевдоним grep --color=auto. Цитирование"grep"(или любой его части )игнорирует этот псевдоним.

gr\ep -Fnrl mysql./ --exclude-dir _book

Мораль этой истории такова: поймите правила цитирования для языка, на котором вы пишете.

Или вы можете «делать» ошибки с запутанными результатами.

0
17.12.2019, 16:05
1 ответ

Ваша первая строка запускает du -sh /bbhome/shared/data/repositories/* |sort -h |tail -5и выводит результат через стандартный вывод на терминал. Затем ваш цикл while зацикливается на своем стандартном вводе (, который пуст ).

Вам нужен еще один |, соединяющий стандартный вывод из конвейера со стандартным вводом цикла:

du -sh /bbhome/shared/data/repositories/* |sort -h |tail -5 |
while IFS= read -r line; do

  <stuff with "$line">

done
1
28.01.2020, 02:38

Теги

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