grep ищет файл ssh_known_hosts для строки (или строк), начинающейся с х06 (^ указывает на начало строки в регулярное выражение) и выводит его.
От мужчина ssh-keygen:
ssh-keygen -l [-f входной_ключевой_файл]
[...]
-l Показать отпечаток указанного файла открытого ключа. Закрытые ключи RSA1
также поддерживаются. Для ключей RSA и DSA ssh-keygen пытается
найти соответствующий файл открытого ключа и распечатать его отпечаток. Если
в сочетании с -v художественное представление ключа в формате ASCII будет sup
поиграл с отпечатком пальца.
Так ssh-keygen -l -f - считывает ключ из стандартного ввода (то есть из строки, которая была выведена grep) и выводит свой отпечаток (- используемое в качестве имени файла указывает на стандартный ввод).
сед часть самая сложная. Нужно хорошо понимать регулярные выражения, чтобы понять, что они делают.
сед запускает команду с/узор/замена/ на каждой строке ввода, то есть заменяет шаблон с замена и копирует строку в стандартный вывод. Если шаблон не найден в строке, строка копируется без изменений.
шаблон сед ищет это: ^.*\(SHA256:\S\+\).*(\([^)]\+\)). Конечно, это регулярное выражение.
Его можно разбить следующим образом:
начало строки (^), за которым следует ноль или более любых символов (.*), а затем первый группа (часть между \( ... \); мы вернемся к деталям позже), за которым следует ноль или более любых символов (.*), а затем второй группа, который заключен в буквальные скобки (\( ... \)).
Первая группа SHA256:\S\+. Это означает буквальную строку SHA256:, за которым следует один или несколько непробельных символов (\С\+) - однако следует отметить, что не все сед реализации будут поддерживать \С как указание на непробельный символ. Итак, матчи первой группы SHA256: за которым следуют любые символы, вплоть до первого пробела.
Вторая группа [^)]\+, то есть один или несколько символов, не равных закрывающей скобке. Учитывая, что вся группа помещается в круглые скобки, второй группе соответствует любая строка, помещенная в круглые скобки, вплоть до закрывающей скобки.
Подводя итог, сед ищет в строке шаблон, состоящий из SHA256: плюс любые непробельные символы, а затем любая строка, заключенная в круглые скобки, с чем-либо между ними.
Совпадающий шаблон заменяется на \2: \1 который является текстом, соответствующим второй группе (\2), двоеточие, пробел и текст, соответствующий первой группе (\1).
Например, если ssh-keygen вывод содержит строку типа
начало чего-то SHA256:123456 что-то в середине (текст внутри скобок) что-то в конце
сед заменит эту строку на
текст внутри скобок: SHA256:123456 конец чего-то
Строки, не содержащие шаблон, не будут изменены.