СТАНДАРТНЫЙ ВВОД, ВЫВОД И ОШИБКА
КОРОТКОЕ ВВЕДЕНИЕ
Я помню, когда я изучаю язык программирования, есть три типа взаимодействия: ввод, вывод и вывод ошибок. Который является то, что?
- Таким образом, ввод — это практически все, что мы вводим
Например, в Linux: когда мы вводим ls до тех пор, пока не нажмем enter, все они >входы. Эти входные данные также могут быть помещены в один или несколько файлов одновременно. - Вывод — это практически все, что показывает система
Например, в Linux: после того, как мы нажмем enter для каждой команды, Linux покажет вам информацию, связанную с той командой, которую вы вводите. Затем эта информация выводится. - Этот связан с выводом, но немного отличается, мы называем его ошибка.
Система покажет вам вывод, но он не будет соответствовать нашим ожидания, из-за некоторых ошибок произошло. Сказал, что мы набираем cd в папку, на которую у нас нет прав доступа. Вы не можете, верно? Нет, терминал напечатает «отказано в доступе». Это пример ошибки.
Column 1: 3 types of interaction in Linux. In Linux, we call it those 3 things: 1. stdin : Standard Input 2. stdout : Standard Output 3. stderr : Standard Error
ПЕРЕНАПРАВЛЕНИЕ
Есть несколько символов для выполнения этих 3 взаимодействий.
Column 2: Redirect symbols. In Linux, we call it those 3 things: 1. > : Put input into a file and overwrite everything in that file 2. >> : Same as point 1, but append the text 3. < : File selected will be the input of the command 4. 2> : Print the error to a file but overwrite the content 5. 2>> : Print the error to a file but append the content
STDIN
Как я уже говорил, это означает Стандартный ввод. Итак, все, что мы делаем в командной строке, все, что мы там набираем, является вводом. Давайте попробуем это с символами в столбце 2.
Во-первых, я запускаю echo и помещаю его в test1.xml. Затем я снова запускаю echo и помещаю его в test2.xml. Значит, в этих файлах будет 2 разных слова, верно?
Давайте запустим wc для подсчета слов в файле. И мы используем ‹ для этих файлов.
Он подсчитывает слова внутри этих файлов.
STDOUT
Если IN означает ввод, то OUT? Да, вывод. Давайте попробуем еще раз, используя Столбец 2 в качестве эталона.
Вы можете видеть, что я называю то, что находится внутри test1.xml, и это «makanjagung». Затем я вызываю команду echo и помещаю › в test1.xml. Угадайте, что случилось? Содержимое перезаписывается.
Затем я снова запускаю команду wc -l, на этот раз помещая ›› в test1.xml. Результат тот же, что и в test1.xml раньше, но есть еще одна строка, показывающая результат команды wc -l.
STDERR
Как видно на первом изображении ниже, 2› заменит весь текст в файле test1xml и поместит туда ошибку.
Но на втором изображении ниже этот 2›› не перезапишет весь текст, а добавит text1.xml с ошибкой, показанной под файлом.
СИМВОЛ ТРУБЫ (|)
Символ трубы соединит вывод первой команды и обработает его второй командой.
Я пытаюсь использовать эту команду tail, которая занимает последнюю строку вывода. Как мы видим, в первой команде нет канала. Так что результат меня немного смущает. Я помещаю его в pipe и запускаю вторую команду, tail. Тада! Он показывает только последние 2 строки (с -2 в качестве аргументов tail).
ВЫВОДЫ
Эти команды будут полезны для любого вида сценариев (shell или bash), также с помощью команд такого типа гораздо проще поместить любой вывод или ошибку во многие файлы. В любом случае, хорошо провести время!