Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Перенаправление стандартного ввода  (Прочитано 662 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн foster08

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Здравствуйте. В терминале можно выполнить команды:
cat t.txt | sh
Это последовательность команд передаст интерпритатору sh команды из файла t.txt и выполнит их. Все почти так как я и задумывал, но мне нужно что бы после выполнения команд из текстового файла, интерпритатор sh не закрывал свою оболочку. т.е. не выходил обратно в мой bash. Если говорить ещё проще, то после того как команды выполнятся в sh, я хочу продолжить вводить в sh уже ч-з стандартный ввод дополнительные команды с клавиатуры. Как это можно реализовать?

ТС не появлялся на Форуме более трех месяцев по состоянию на 19/03/2021 (последняя явка: 05/05/2020). Модератором раздела принято решение закрыть тему.
--zg_nico
« Последнее редактирование: 19 Марта 2021, 14:09:29 от zg_nico »

Оффлайн The Green Side

  • Старожил
  • *
  • Сообщений: 1178
    • Просмотр профиля
Re: Перенаправление стандартного ввода
« Ответ #1 : 13 Апреля 2020, 12:25:19 »
Какие-то переменные в t.txt задаются? Их надо сохранять для работы с клавиатуры?
Debian 11, Debian 11 Server

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Перенаправление стандартного ввода
« Ответ #2 : 13 Апреля 2020, 13:06:49 »
  • Запустить sh
  • Выполнить код sh ./t.txt
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн foster08

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Перенаправление стандартного ввода
« Ответ #3 : 13 Апреля 2020, 13:10:05 »
Этот пример я для простоты восприятия написал. Мне тут в соседнем форуме подсказали:

cat t.txt - | sh

Извините что лишний раз снова приходится вас тревожить. В этом реально уже нужном примере (см. ниже) этот «шаблон» не работает:

websocat - это утилита для работы с вэб-сокетами. Когда её запускаю непосредственно из терминала то программа не закрывается после запуска и позволяет работать в её оболочке. А вот когда запускаю по примеру выше «cat t.txt - | websocat -q wss://irc-ws.chat.twitch.tv» то почему то содержимое t.txt передается в программу, она его обрабатывает и после этого завершает работу, а мне нужно продолжить в ней работать с введеными данными из файла t.txt. Скажем так, в файле t.txt содержатся команды для первичной конфигурации сеанса работы с утилитой websocat.
Ещё раз прошу прощения за флейм.

И ещё вопросик. Можно ли программе которая работает в фоне (CTRL+Z) из других программ передавать данные в stdin? Ели да, то как это можно реализовать?
« Последнее редактирование: 13 Апреля 2020, 13:40:57 от foster08 »

Оффлайн The Green Side

  • Старожил
  • *
  • Сообщений: 1178
    • Просмотр профиля
Re: Перенаправление стандартного ввода
« Ответ #4 : 13 Апреля 2020, 13:36:10 »
foster08, скорее всего, на ваш вопрос ответил разработчик здесь: https://github.com/vi/websocat/issues/68

Цитировать
you want a persistent client connection to a WebSocket server that can be reused multiple times in a Bash script, you can use something like this:

$ websocat -t -E tcp-l:127.0.0.1:1234  reuse-raw:ws://echo.websocket.org --max-messages-rev 1&
[1] 864
$ echo 'Hello 1' | nc 127.0.0.1 1234
Hello 1
$ echo 'World 2' | nc 127.0.0.1 1234
World 2
$ kill %1
$
[1]+  Terminated              websocat -t -E tcp-l:127.0.0.1:1234 reuse-raw:ws://echo.websocket.org --max-messages-rev 1
Debian 11, Debian 11 Server

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Перенаправление стандартного ввода
« Ответ #5 : 13 Апреля 2020, 14:33:53 »
лишний раз снова приходится вас тревожить
Так давайте не разбирать Ваши умственные экзерсисы, а конкретно поймем что именно Вы хотите добится от файла t.txt
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн foster08

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Перенаправление стандартного ввода
« Ответ #6 : 13 Апреля 2020, 22:53:45 »
Содержимое файла t.txt:
CAP REQ :twitch.tv/tags twitch.tv/commands
PASS oauth:i7car11ji6crrfu1j1mhg35c4lhz6
NICK nickname
USER nickname 8 * :nickname
JOIN #streamer_channel_name

Вот эти команды мне нужно вводить в терминале вручную всякий раз когда я запускаю утилиту
websocat  wss://irc-ws.chat.twitch.tv
Грубо говоря это код авторизации и перехода на нужный мне канал на сервере ч-з протокол web socket. И вот что бы вручную не копипастить код  всякий раз из блокнота или не вводить его с клавиатуры, я хочу передавать этот код из файла в программу ч-з stdin

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Перенаправление стандартного ввода
« Ответ #7 : 15 Апреля 2020, 13:16:32 »
Цитата: help websocat
-n, --no-close                              Don't send Close message to websocket on EOF
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.054 секунд. Запросов: 25.