я начал компьютерную жизнь с винды. и имею на ней огромный опыт (с 3-5 лет до 16 лет), за всё это время ни разу не слышал про пайпы и перенаправления, хотя прогал под винду. потом пересел на гну/линь и одна из первых вещей, которую я узнал — это пайпы. почему-то они позиционируются как чуть ли ни самая крутая штука в гну/лине. и потом вдруг узнал, что оказывается в винде тоже есть пайпы. у меня сразу возникла мысль: какого #$% мне никто раньше не говорил? это меня и побудило написать эту статью.
Ctrl+Буква в гну/линуксе посылает символ с кодом, который получается путём вычитания 64 из кода этой буквы. Например, код A — это 65, поэтому Ctrl-A посылает символ с кодом 65 — 64 = 1, обозначаемый SOH, он же ^A. Ctrl-B посылает символ с кодом 2, он же STX, он же ^B. (Обозначения вида ^A, ^B и т. д. называются карет-нотацией.) Ну а Ctrl-D по идее должен был бы послать символ с кодом 4, он же (как вы совершенно верно заметили) EOT, он же ^D. Но есть одно «но»: в обычном режиме терминал обрабатыват Ctrl-D по-особому. Вместо того, чтобы слать EOT, он не шлёт вообще ничего. Он шлёт признак того, что ввод закончился, шлёт информацию о том, что слать больше вообще ничего не будет. Это и есть EOF. То есть EOF — это не обычный символ. У него нет кода. А вот если вы переведёте терминал в raw-режим, то Ctrl-D будет слать EOT (как вы, опять-таки, правильно заметили).
Спасибо за reg.exe. И спасибо за пояснение про устройства vs файлы. А вот про гну/линукс не согласен. Там все узлы дерева папок называются файлами. В том числе папки, устройства, сокеты и др. Иными словами, файлы в юниксе бывают разных видов: обычные файлы, папки, устройства и др.
P. S.: предчувствуя ваш вопрос: щас мне 20
про echo без аргументов тоже исправил, спасибо
Ctrl+Буква в гну/линуксе посылает символ с кодом, который получается путём вычитания 64 из кода этой буквы. Например, код A — это 65, поэтому Ctrl-A посылает символ с кодом 65 — 64 = 1, обозначаемый SOH, он же ^A. Ctrl-B посылает символ с кодом 2, он же STX, он же ^B. (Обозначения вида ^A, ^B и т. д. называются карет-нотацией.) Ну а Ctrl-D по идее должен был бы послать символ с кодом 4, он же (как вы совершенно верно заметили) EOT, он же ^D. Но есть одно «но»: в обычном режиме терминал обрабатыват Ctrl-D по-особому. Вместо того, чтобы слать EOT, он не шлёт вообще ничего. Он шлёт признак того, что ввод закончился, шлёт информацию о том, что слать больше вообще ничего не будет. Это и есть EOF. То есть EOF — это не обычный символ. У него нет кода. А вот если вы переведёте терминал в raw-режим, то Ctrl-D будет слать EOT (как вы, опять-таки, правильно заметили).