Осталось расставить счёт по убыванию и оставить верх списка.
sort сравнивает строки как текст, знак за знаком. Для чисел нужен ключ -n: с ним 9 меньше 10. Ключ -r разворачивает порядок, и большие числа встают сверху. Поэтому sort -rn после uniq -c ставит первым самый частый адрес, а head -n 3 оставляет три верхние строки.
В файле sizes.txt три строки — 9, 10 и 100. В каком порядке их напечатает sort sizes.txt?
-
Большие числа сверху ставит
sort -rn. Без ключей sort сравнивает текст, и строки на1идут раньше строки на9. -
sort сортирует любые строки, числа тоже, но как текст: 10 и 100 начинаются с
1и встают раньше 9. -
Без
-nsort сравнивает текст знак за знаком:1меньше9, поэтому 10 и 100 встают раньше 9. По величине их расставитsort -n.
Без ключей sort сравнивает строки как текст: 10 и 100 начинаются с 1 и встают раньше 9. sort -n расставит их по величине — 9, 10, 100.
Длинный конвейер собирают по звену: добавил команду — посмотри вывод через | head, потом пиши следующую. Так сразу видно, на каком звене строки стали не те.
В конвейер попадает только поток 1. Сообщения об ошибках каждой команды идут мимо него, прямо на экран, и направляют их своим 2> у нужной команды. Готовый ответ сохраняют через > в конце конвейера: … | head -n 3 > top.txt.
В /etc есть каталоги, куда student нельзя заглянуть. Что окажется на экране после find /etc -name '*.conf' | wc -l?
-
Сообщения
Permission deniedfind печатает в поток 2, мимо конвейера, — они тоже на экране. wc сосчитал одни пути. -
wc получил пути от find через
|, поэтому ввода с клавиатуры не ждёт и печатает их число. -
Сообщения в конвейер не попадают: они в потоке 2. wc сосчитал пути, а сообщения напечатались на экран.
Конвейер передаёт один поток 1, поэтому wc сосчитал найденные пути, а сообщения об отказах find напечатал прямо на экран. Убрать их можно через 2> /dev/null у find.
Главное в шаге
-
sort -rnставит большие числа сверху,head -n 3оставляет три верхние строки. -
Конвейер собирают по звену и после каждого смотрят вывод через
head. -
Через
|идёт только поток 1; ошибки направляют2>у своей команды.