Рейтинг:2

Трубопроводы оболочки

флаг ng

Я пытаюсь понять эту строку Shell:

grep ^x06 ssh_known_hosts |
ssh-keygen -l -f -| 
\sed -e 's/^.*\(SHA256:\S\+\).*(\([^)]\+\))/\2: \1/' >fp
  • Так с grep мы в основном ищем данные ssh_unknown_hosts. Что ^x06 используется для?
  • С ssh-keygen команда, с помощью которой мы генерируем SSH-ключ . Что такое -f используется для?
  • Последнюю строчку я не понял.
Рейтинг:5
флаг cn
raj

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 конец чего-то

Строки, не содержащие шаблон, не будут изменены.

флаг ng
Привет, очень любезно с твоей стороны, что помог мне, я действительно понял большую часть этого, но мне интересно что делает перенаправление ввода-вывода оболочки и каналов
флаг ng
Куда компьютер сохраняет файлы?
raj avatar
флаг cn
raj
@Sparta Какие файлы? В этом коде «ssh_known_hosts» — это входной файл, а «fp» — это выходной файл, в который записывается окончательный вывод из «sed». Поскольку путь не указан, оба файла находятся в текущем каталоге.
флаг ng
Эй, спасибо за вашу помощь, ребята, я действительно ценю это
Этот вопрос на других языках:

Ответить или комментировать

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