Bash script: передать строку в приложение командной строки, а затем выбрать опцию [Linux] - PullRequest
0 голосов
/ 04 февраля 2020

Допустим, у меня есть приложение командной строки, которое требует ввода, затем показывает список выходов, а затем вам нужно выбрать один из них, чтобы продолжить. Как я могу сделать это с bash?

Пример: Давайте возьмем приложение youtube-viewer, которое использует mpv для воспроизведения видео с youtube. Если я напишу на терминале

echo beatles | youtube-viewer

, он покажет индексированный список заголовков видео, и он будет ждать в ожидании , пока я не введу число:

= >> Выберите одно или несколько видео для воспроизведения (: h для справки)

Итак, вот оно. Идея состоит в том, чтобы использовать Rofi в качестве «интерфейса». В идеале я бы

rofi -dmenu | youtube-viewer

Теперь, все, что я наберу на rofi, будет передано в youtube-viewer. Когда я набираю «Beatles» в окне rofi, он будет транслироваться на youtube-viewer, создавая следующий список на терминале

  1. The Beatles - Hey Jude (by TheBeatlesVEVO) [08:10]
  2. The Beatles - Не подведи меня (автор TheBeatlesVEVO) [03:32]
  3. Полный альбом The Beatles Greatest Hits - Лучший плейлист The Beatles Songs (автор Jazz Musi c) [53:03]
  4. The Beatles - Помогите! (от TheBeatlesVEVO) [02:20]

Мне хотелось бы вывести этот список на rofi, так что я бы выбрал один из них, а затем добавил в | awk {print $1}; Я бы получил целое число , который будет возвращен youtube-viewer, который при получении этого номера продолжит открывать видео на mpv.

Сначала я подумал, что это будет работать:

rofi -dmenu | youtube-viewer | rofi -dmenu

Но Я полагаю, что это не так, потому что youtube-viewer никогда не завершает работу, пока у него не будет второго входа (конкретный выбор видео), поэтому он никогда не попадает в список на rofi. Кроме того, даже если бы у меня был список на rofi, и я мог бы получить номер индекса в awk, я не знаю, как мне снова его вернуть в youtube-viewer.

Теперь, возможно, к этому конкретному примеру можно подойти другим способом, но я хотел бы найти решение для того, что я объяснил, так как в этом случае я столкнулся и с другими приложениями, когда пытался написать сценарий bash, и я никогда не знаю, как действовать дальше. Это очень просто, когда речь идет о вводе строки и получении вывода, чтобы продолжить работу скрипта, но когда он вводится + второй ввод, я застреваю.

TL; DR: Возможно, я немного растерялся о том, как спроектировать это, но основная идея в том, что я хотел бы взаимодействовать с приложением командной строки, таким как youtube-viewer, через rofi (или dmenu).

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