У меня есть скрипт с именем password-for-object
, который я обычно запускаю так:
$ password-for-object example.com
sOtzC0UY1K3EDYp8a6ltfA
т.е. он выполняет сложное вычисление хэша и выводит пароль, который я должен использовать при доступе к объекту (например, веб-сайту) с именем example.com
. Я просто дважды щелкну весь пароль, он будет скопирован в мой буфер, и я вставлю его в форму.
Я также узнал, как использовать такой скрипт, не делая мой пароль видимым:
$ password-for-object example.com | xclip
Таким образом, вывод скрипта заканчивается в основном буфере X, и я могу вставить его прямо в поле пароля в форме, и он не отображается на экране.
Единственная проблема с этим способом состоит в том, что password-for-object
выводит строку с завершающим символом новой строки, и, таким образом, "xclip" всегда перехватывает дополнительный символ - этот символ новой строки. Если я опущу вывод новой строки в password-for-object
, я получу испорченную строку без xclip, т.е. когда я просто помещу ее в стандартный вывод. Я использую 2 оболочки: zsh и bash, и я получу следующее в zsh (обратите внимание на дополнительный знак%):
$ password-for-object example.com
sOtzC0UY1K3EDYp8a6ltfA%
$
Или следующее в bash (обратите внимание, что приглашение будет запущено в той же строке):
$ password-for-object example.com
sOtzC0UY1K3EDYp8a6ltfA$
Есть идеи, как обойти эту проблему? Можно ли изменить скрипт таким образом, чтобы он обнаруживал, что xclip находится в конвейере, и выводил только новую строку, если это не так?