Как представить команду в нескольких строках для мгновенного использования копирования / вставки?

Выполните эту команду для ошибки GPG: sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3EE67F3D0FF405B2 40976EAF437D05B5. Затем для устранения несоответствия хэш-сумм попробуйте выполнить следующие команды: sudo rm -rf /var/lib/apt/lists/* и sudo apt-get update

3
02.09.2017, 01:20
2 ответа

Вы можете создать функцию (или сценарий оболочки), которая оборачивает текст и назначает обратную косую черту:

function wrapit { fmt -s -w 50 - | sed '$!s/$/ \\/'; }

Здесь используется инструмент fmt, чтобы оборачивать текст до 50 символов. (корректируйте, как считаете нужным). Он также указывает fmtна ( s) только разделение, чтобы не объединять короткие строки во входных данных. Затем он использует sed для добавления обратной косой черты к каждой строке, кроме последней:

  • $— это адрес последней строки в файле
  • ! означает применить последующую команду к строкам, которые несоответствуют заданному адресу (здесь все, кроме последней строки)
  • s/$/ \\/говорит заменить " конец строки" ( $) с пробелом и обратной косой чертой, где обратную косую черту необходимо экранировать, чтобы в конечном итоге она отображалась как одна обратная косая черта.

Либо передать текст этой функции/сценарию, либо выполнить сценарий, затем ввести текст и закончить текст нажатием Control-D:

echo "openssl pkcs12 -export -in intermediate/certs/lala-lira.cert.pem -inkey intermediate/private/lala-lira.key.pem -out intermediate/private/lala-lira.pfx" | wrapit

или

$ wrapit
openssl pkcs12 -export -in intermediate/certs/lala-lira.cert.pem -inkey intermediate/private/lala-lira.key.pem -out intermediate/private/lala-lira.pfx

Control-D

Это упрощенный сценарий — он не понимать параметры команды или кавычки; это превратит ваш пример ввода в:

openssl pkcs12 -export -in \
intermediate/certs/lala-lira.cert.pem -inkey \
intermediate/private/lala-lira.key.pem -out \
intermediate/private/lala-lira.pfx

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

1
27.01.2020, 21:11

Завершайте каждую строку, кроме последней, обратной косой чертой. Чтобы использовать вашу команду в качестве примера:

openssl pkcs12 -export \
-in intermediate/certs/lala-lira.cert.pem \
-inkey intermediate/private/lala-lira.key.pem \
-out intermediate/private/lala-lira.pfx

Здесь вы экранируете конец -строки -, заставляя оболочку интерпретировать его как не разделяющий -пробел. Поскольку маркер перехода влияет только на следующий символ,следующий символ должен быть концом -строки -. (Это означает, что конечные пробелы не допускаются; остерегаться!)

7
27.01.2020, 21:11

Теги

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