что подразумевается под подключением STDOUT и STDIN?

Это вопрос новичков. Я читаю книгу, она говорит:

Каждый процесс имеет по меньшей мере три канала связи: «стандартный вход» (STDIN), «стандартный вывод» (STDOUT) и «стандартная ошибка» (STDERR).

Большинство команд принимают их вход от STDIN и записывают их вывод в STDOUT. Они записывают сообщения об ошибках в STDERR. Это соглашение позволяет вам объединять команды, подобные строительным блокам, для создания составных конвейеров.

Оболочка интерпретирует символы < , > и >> как инструкции для перенаправления ввода или вывода команды в файл или из него.

Чтобы подключить STDOUT одной команды к STDIN другого, используйте | символ, обычно известный как труба.

 ps -ef | grep httpd 

Таким образом, в основном это означает, что стандартный ввод – это команда, которая позволяет пользователю писать в файл, тогда как стандартный вывод – это команда, которая имеет вывод оболочки оболочки bash в оболочку, а стандартная ошибка – это как вывод, но это только вызывается при возникновении ошибки в файловой системе. Затем мы добираемся до части подключения STDOUT и STDIN, и я теряюсь.

2 Solutions collect form web for “что подразумевается под подключением STDOUT и STDIN?”

Стандартный ввод и стандартный вывод не являются командами.

Представьте себе команды как машины на заводе со сборочной линией. Большинство машин рассчитаны на наличие одной конвейерной ленты для подачи данных и одной конвейерной ленты для подачи данных; они являются стандартным входом и стандартным выходом соответственно. Стандартная ошибка – это отверстие на стороне машины, где он может выталкивать отклонения.

 +-------+ +------------------+ +------------------+ +------+ | input | | machine A | | machine B | |output| | reser |=====|<stdin stdout>|=======|<stdin stdout>|=====|bucket| | ‑voir | → | stderr | → | stderr | → | | +-------+ +------------------+ +------------------+ +------+ || || 

На приведенной выше диаграмме показана конвейерная лента, проходящая через две машины. Данные поступают из входного резервуара слева, подаются на машину A, затем вывод передается дальше на машину B (для которой он вводится), а выход машины B поступает в выходное ведро справа.

В терминах unix это называется конвейером . Метафора – это сантехника: труба соединяет машину А с машиной В. Синтаксис оболочки для вышеприведенного конвейера

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

Символ < redirection указывает оболочке для подключения стандартного ввода commandA к файлу input-file.txt перед запуском commandA . (Вы можете commandB перенаправление до или после имени команды.) Символ > redirection указывает оболочке подключить стандартный output-file.txt к output-file.txt . commandA pipe (" | ") в середине сообщает оболочке подключить стандартный вывод commandB к стандартным commandB перед их запуском.

Команды могут иметь более одного ввода и более одного выхода, но это материал для другого дня .

standard input is a command that allows user to write to a file

Не команда, а поток. Стандартные входы и выходы похожи на почтовые ящики. Когда программа запускается, ей предоставляется поле для получения и поле для отправки почты. Обычно ввод поступает с клавиатуры и помещается в ящик, почта, помещенная в выпадающее окно, заканчивается на экране терминала.

standard output is a command that has the bash shell write output to the shell

Программа фактически не знает, где стандартные точки. Когда вы нажимаете A на B (как в $ A | B ), когда A помещает почту в ящик, она попадает в поле ввода B. B обрабатывает входные данные и помещает свою собственную почту в выходной ящик, что вы видите на терминале.

Чтобы отказаться от метафора, как уже упоминалось, стандартными входами / выходами являются потоки. Почтовый ящик или дескриптор файла – это один конец потока. К трубе следует подключить стандарт из A к стандарту в B.

  • vim: Синтаксис синтаксиса с помощью аргумента командной строки
  • Ksh теряет данные после трубопровода 16K байт
  • Вращение файлов журналов во время работы
  • Может перенаправлять stdout и stderr в те же строки, что и строки?
  • Как я могу передать stdout в другую программу?
  • Могу ли я настроить оболочку для печати STDERR и STDOUT в разных цветах?
  • Есть ли инструмент для динамического перенаправления вывода на новый файл по запросу
  • Перенаправить все вывод сценария bash (изнутри скрипта) в два файла: один append, one rewrite; но отбрасывать вывод на консоль
  • Как сортировать файлы отдельно без слияния?
  • Скрипт должен читать эхо-строку
  • в сценарии bash; процесс stdout как аргумент имени файла терпит неудачу, когда вы открываете его более одного раза
  • Interesting Posts

    GRUB не уходит, когда я пытаюсь удалить Linux из двойной загрузки Windows 10 / Xubuntu

    Недопустимый вход суффикса numfmt

    Как проверить файлы ~ application / x-trash

    Как обрабатывать ^ M в файлах csv с помощью sed & awk?

    Почему символические ссылки не имеют блоков данных, выделенных им в ext4fs?

    apt-get показывает важные пакеты как «более не требуемые»

    Как перечислить все inodes и блоки в файловой системе, которые доступны для непривилегированного пользователя

    grep выходит из-за использования плунжера – могу ли я заставить grep не использовать столько бара?

    Предложения в закладки слишком медленны в Firefox

    Использование sshfs замораживает все терминалы

    Почему не находит. -delete удалить текущий каталог?

    Почему исходный файл имеет бит выполнения?

    Сценарий Ubuntu Remap для беспроводной клавиатуры Logitech от Cordless Wave

    Получить номера строк для пустых строк

    Общие папки NFS. Это транзитивно?

    Linux и Unix - лучшая ОС в мире.