В Linux у каждого процесса есть три канала связи: стандартный ввод, стандартный вывод и стандартная ошибка. Эти каналы связи помогают пользователям взаимодействовать с процессами в системе Linux. Канал связи стандартного ввода (STDIN) принимает ввод от пользователя через терминал в виде команды, а затем после обработки команды ядром Linux терминал отображает результат через стандартный вывод (STDOUT) или стандартную ошибку (STDERR). канал. Стандартный вывод (STDOUT) или стандартная ошибка (STDERR) одной команды могут быть перенаправлены как стандартный ввод (STDIN) для другой команды с помощью перенаправления ввода-вывода «>», и аналогично стандартный ввод (STDIN) может быть перенаправлен в качестве стандартного вывода (STDOUT) для другой команды, использующей перенаправление ввода-вывода «<».
- Стандартный ввод
- Стандартный вывод
- Стандартное перенаправление вывода «>»
- Стандартное перенаправление ввода «<»
- Стандартное перенаправление ошибок «2>»
- Стандартный вывод и стандартное перенаправление ошибок «&>»
- Стандартное перенаправление вывода «>>»
- Стандартное перенаправление ввода «<<»
- Перенаправление с помощью каналов «| »
- Объединение операторов перенаправления
- Вывод
Стандартный ввод
Стандартный ввод или STDIN — это команда, которую мы вводим в нашем терминале для взаимодействия с ядром Linux.
Ubuntu@Ubuntu:~$ ls -la
В приведенном выше примере «ls -la» — это стандартный ввод или STDIN.
Стандартный вывод
Стандартный вывод или STDOUT — это вывод запущенного процесса или команды, переданный ядру Linux через стандартный ввод и отображаемый на терминале. Например, приведенный выше, вывод будет похож на
Ubuntu@Ubuntu:~$ ls -la
…snip…
-rwxr-x— 1 Ubuntu Ubuntu 89 Jan 4 2021 arith.sh
-rw-r—r— 1 Ubuntu Ubuntu 3771 Jun 3 2020 .bashrc
drwx—— 28 Ubuntu Ubuntu 4096 Aug 1 13:10 .cache
drwxr-xr-x 36 Ubuntu Ubuntu 4096 Jul 29 18:30 .config
drwx—— 3 Ubuntu Ubuntu 4096 Nov 18 2020 .dbus
drwxr-xr-x 5 Ubuntu Ubuntu 4096 Jul 30 16:28 Desktop
drwxr-xr-x 13 Ubuntu Ubuntu 12288 Jul 28 19:53 Downloads
…snip…
Каждый вывод имеет заранее определенное место по умолчанию в операционных системах на основе Unix. Некоторые методы перенаправления вывода приведены ниже.
- Стандартное перенаправление вывода «>»
- Стандартное перенаправление ввода «<»
- Стандартное перенаправление ошибки «2>»
- Стандартный вывод и перенаправление ошибок «&>»
- Стандартное перенаправление вывода «>>»
- Стандартное перенаправление ввода «<<»
- Перенаправление с помощью конвейеров «|»
Стандартное перенаправление вывода «>»
Перенаправление вывода — это метод, при котором стандартный вывод команды может быть перенаправлен в файлы или как стандартный ввод для другой команды. Знак «>» используется для перенаправления вывода. Терминал не показывает вывод; вместо этого он записывается в файл или перенаправляется в качестве входных данных для другой команды. Например
Ubuntu@Ubuntu:~$ echo Hello World > file.txt
ИЛИ
Ubuntu@Ubuntu:~$ sudo apt-cache pkgnames > packegNames
Вместо вывода, отображаемого на терминале, он будет перенаправлен в файл file.txt или pakegsNames. Чтобы подтвердить, был ли перенаправлен вывод, используйте команду cat для чтения файлов.
Ubuntu@Ubuntu:~$ cat file.txt
Ubuntu@Ubuntu:~$ cat pakegName
Этот оператор «1>» также используется для перенаправления стандартного вывода.
Стандартное перенаправление ввода «<»
Перенаправление ввода — это метод, при котором стандартный ввод команды перенаправляется из файла или стандартный вывод другой команды. Знак «<» используется для перенаправления ввода. В основном это действие команды по умолчанию. Например
Ubuntu@Ubuntu:~$ less < /etc/passwd
То же самое, что и этот.
Ubuntu@Ubuntu:~$ less /etc/passwd
Он принимает ввод из файла / etc / passwd вместо клавиатуры. Знак «0 <» также можно использовать для перенаправления стандартного ввода.
Стандартное перенаправление ошибок «2>»
С помощью метода перенаправления стандартные ошибки могут быть перенаправлены и записаны в файл. Например
Ubuntu@Ubuntu:~$ sudo apt-get update 2> error
Если произойдет какая-либо ошибка, она не будет отображаться в окне терминала; скорее, он будет сохранен в файле ошибок. Если файл с ошибкой уже существует, он будет перезаписан.
Стандартный вывод и стандартное перенаправление ошибок «&>»
Знак «&>» означает более эффективный способ перенаправления стандартного вывода и стандартной ошибки одновременно со знаком «&>». Например
Ubuntu@Ubuntu:~$ sudo apt-cache pkgnames &> pkgnames
Все имена пакетов и ошибки будут храниться в файле pkgnames.
Стандартное перенаправление вывода «>>»
Этот метод перенаправления перенаправляет стандартный вывод команды или файла в другой файл. Разница заключается в использовании перенаправления «>>». Если файл уже существует, данные будут добавлены к файлу; следовательно, файл не будет перезаписан.
Ubuntu@Ubuntu:~$ sudo apt-cache pkgnames >> pkgnames
Если файлы pkgnames уже существуют, его содержимое не будет перезаписано; скорее вывод будет добавлен в конец файла.
Стандартное перенаправление ввода «<<»
Этот метод перенаправления считывает ввод пользователя с терминала и затем добавляет его в файл.
Ubuntu@Ubuntu:~$ cat pkgnames << pkgnames
> ubuntu
> chrome
> pkgnames
Если файлы pkgnames уже существуют, его содержимое не будет перезаписано.
Перенаправление с помощью каналов «| »
Каналы часто используются, когда вы хотите объединить несколько команд. В случае каналов вывод первой команды может использоваться как ввод второй команды. Например
Ubuntu@Ubuntu:~$ sudo apt-cache pkgnames | less
В приведенной выше команде стандартный вывод команды оставлен вертикальной чертой «|» знак — стандартный ввод команды справа от вертикальной черты «|» знак.
Объединение операторов перенаправления
Вы можете комбинировать некоторые операторы перенаправления, потому что они удобны в использовании и занимают меньше времени; некоторые из комбинированных операторов перенаправления приведены ниже.
2 >>: | Этот оператор используется для перенаправления стандартных ошибок в файл. |
<>: | Этот оператор используется для указанных файлов как для стандартного ввода, так и для стандартного вывода. |
> &: | Этот оператор перенаправляет вывод одного файла в другой. |
<&: | Этот оператор перенаправляет ввод одного файла в другой. |
2> & 1: | Этот оператор используется для перенаправления стандартной ошибки на стандартный вывод. |
1> & 2: | Этот оператор используется для перенаправления стандартного вывода на стандартную ошибку. |
Вывод
Для администратора Linux перенаправление ввода-вывода — очень распространенная процедура в повседневной работе. Сохранение вывода и ошибок для последующего использования и объединение нескольких команд упрощают вашу работу и сокращают время, чтобы вы могли работать усердно и эффективно. Выше приведены несколько советов, которые помогут вам понять перенаправления ввода-вывода.