Объединение STDIN и STDOUT в один

Как писать и читать одновременно вывод stdin? Можно ли сделать? Так что, когда вы что-то пишете, это одновременно должно отражать ваш вклад.

Я нашел и пример, в котором используются stdin, stdout и pipe, но я не знаю, как его использовать в моем случае

<input-file.txt commandA | commandB >output-file.txt

stdin - это входной поток, и вам не следует писать в него. "вывод stdin" - это фраза, которую я не понимаю. Что означает «оно» во фразе «он одновременно должен отображать ваш вклад»? Я подозреваю, что вы объединяете stdin, stdout и терминал.

William Pursell 25.10.2018 16:46

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

flow 25.10.2018 16:53

Если вы хотите написать «одну команду», то что такое «они»? Похоже, вы просто хотите записать cat | cat! Вы хотите написать команду, которая считывает собственный вывод? Вам, вероятно, понадобится фифо.

William Pursell 25.10.2018 17:05

о, извините, я имею в виду stdin и stdout

flow 25.10.2018 17:16

Итак, в основном задача состоит в том, чтобы использовать stdin, stdout и pipe

flow 25.10.2018 17:17

@WilliamPursell: на многих платформах можно использовать write(2) для записи в fd 0 и read(2) для чтения из fd 1 (из C), это до чертиков пугает людей, когда они видят, что это работает. Плохая идея, но весело.

cdarke 25.10.2018 19:13
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
282
2

Ответы 2

Примерно так должно работать:

 #!/bin/bash

 echo Enter your answer:
 read variable
 echo ${variable}

Он попросит вас ввести значение, вы его введете, и он выведет его, как только вы нажмете Enter.

Обновлять

Это также будет работать как одна команда:

read variable && echo ${variable}

Спасибо за ответ. Но я искал одну команду, которая показывает вывод из командной строки ...

flow 25.10.2018 16:20

Можете ли вы дополнить свой вопрос примером того, что вы ищете?

mjuarez 25.10.2018 16:21

@asel Обновил мой ответ однострочным.

mjuarez 25.10.2018 16:33

Спасибо, это тоже работает, но моя задача - использовать перенаправление stdin и stdout .. ((

flow 25.10.2018 16:36

Если я тебя понимаю ...

cat < a > b

Это перенаправление ввода от a и перенаправление вывода на b. Вы этого хотели?

Попробуй это.

cat

Он будет сидеть и ждать вас, потому что по умолчанию терминал - STDIN.

Наберите что-нибудь и нажмите - он вам ответит, потому что по умолчанию STDOUT идет в консоль. Он будет продолжать делать это до тех пор, пока вы не введете ему символ EOF или не сломаете программу каким-либо другим способом, например CTRL-C.

Если вам нужна труба,

cat | cat

будет (бессмысленно) делать то же самое.

Чтобы объединить их для бесплатного использования как каналов, так и перенаправлений -

cat < a | cat > b

Вы можете дать более четкие требования?

Я не уверен ... Итак, когда вы выполняете команду, вы должны иметь возможность что-то написать, и когда вы нажмете Enter, она покажет вам, что вы написали. Поэтому мне нужно использовать stdin, stdout и pipe

flow 25.10.2018 17:17

Другие вопросы по теме