Linux: Стандартные файловые дескрипторы
В Unix-подобных операционных системах, таких как Linux, существует три стандартных файловых дескриптора, которые автоматически создаются для каждого нового процесса. Эти файловые дескрипторы являются основой для взаимодействия процесса с вводом и выводом.
Они обеспечивают основной механизм взаимодействия пользователя с программой через консоль, а также позволяют гибко управлять вводом и выводом данных в различных сценариях.
0 - стандартный ввод (stdin)
1 - стандартный вывод (stdout)
2 - стандартный вывод ошибок (stderr)
Примеры использования стандартных дескрипторов в командной строке linux
# Перенаправление стандартного ввода (stdin) # Чтение данных из файла # Эта команда читает содержимое файла input.txt и отправляет его на стандартный вывод cat < input.txt # Перенаправление стандартного вывода (stdout) # Запись вывода команды в файл # Эта команда записывает результат выполнения команды ls -l в файл output.txt. Если файл уже существует, его содержимое будет перезаписано. ls -l > output.txt # Перенаправление стандартного вывода ошибок (stderr) # Запись ошибок в файл # Эта команда пытается выполнить команду ls для несуществующего файла. Сообщение об ошибке будет записано в файл error.txt ls non_existing_file 2> error.txt # Одновременное перенаправление stdout и stderr # Запись вывода и ошибок в разные файлы # Эта команда записывает успешный вывод команды ls в output.txt и ошибки в error.txt ls existing_file non_existing_file > output.txt 2> error.txt # Запись вывода и ошибок в один файл # Здесь 2>&1 указывает, что стандартный вывод ошибок (stderr) должен быть перенаправлен в тот же файл, что и стандартный вывод (stdout) ls existing_file non_existing_file > all_output.txt 2>&1 # Добавление (append) вывода команды в конец файла # Эта команда добавляет результат выполнения команды ls -l в конец файла output.txt ls -l >> output.txt # Добавление (append) ошибок в конец файла # Эта команда пытается выполнить команду ls для несуществующего файла. Сообщение об ошибке будет добавлено в конец файла error.txt ls non_existing_file 2>> error.txt # Одновременное добавление (append) stdout и stderr # Добавление вывода и ошибок в разные файлы # Эта команда добавляет успешный вывод команды ls в конец файла output.txt и ошибки в конец файла error.txt ls existing_file non_existing_file >> output.txt 2>> error.txt # Добавление вывода и ошибок в один файл # Здесь 2>&1 указывает, что стандартный вывод ошибок (stderr) должен быть перенаправлен в тот же файл, что и стандартный вывод (stdout) # и все это добавляется в конец файла all_output.txt ls existing_file non_existing_file >> all_output.txt 2>&1
Комментарии