Оказывается, в Windows тоже есть перенаправления, пайпы, свой /dev, /dev/null, /etc/fstab, grub.cfg

Разделы можно пропускать без ущерба для понимания, ровно как и любые непонятные/неинтересные места в них.

Перенаправления


Как обычно:

echo foo > bar
echo foo 2> bar
echo foo > bar 2>&1


cat


Да, в Windows есть аналог многоликой команды cat, которая является одной из команд, выражающих суть UNIX'а. Это команда type. Она принимает один или несколько аргументов — имена файлов.

type file


Если нужно, чтоб type читал с экрана (например, если нужно создать файл, на лету наполнив его содержимым), то нужно набрать

type con > file


con — это аналог /dev/tty (подробнее об этом в следующем разделе).
То есть вышеприведённая команда является аналогом UNIX'овой команды cat /dev/tty > file или cat - > file или просто cat > file.

Когда вы закончите набирать файл, нажмите на новой строке Ctrl-Z и Enter. Это признак конца файла, аналог Ctrl-D в UNIX'е.

Сейчас будет куча технических подробностей про Ctrl-D и Ctrl-Z, их можно пропустить и перейти к следующему разделу.

В UNIX'е, когда юзер нажимает Ctrl-D, эта комбинация не обрабатывается самим приложением (например, в GNU/Linux в tty1 она обрабатывается ядром, если включен CONFIG_VT [на сегодняшний день (2012) CONFIG_VT включен по дефолту на десктопе, хотя есть планы по её выкидыванию]). А запущенное приложение получает EOF (End Of File, конец файла) в чистом виде (а не саму комбинацию клавиш или символ Ctrl-D). То есть как если бы ввод просто закончился. Иными словами, getchar в приложении возвращает EOF, а read — 0.

В Windows то же самое, Ctrl-Z и Enter заставляют getchar вернуть EOF.

/dev/null, /dev/tty и т. д.


Аналог /dev/null — это устройство nul. Причём оно как бы присутствует в каждой папке. Это тянется со времён старых версий DOS'а, когда не было папок.

Теперь о других устройствах. Аналог /dev/tty — это con, от слова console. Причём con — это аналог именно /dev/tty, а не /dev/console, так как в Windows у каждого окна командной строки con свой.

Аналоги /dev/ttyS0, /dev/ttyS1, /dev/ttyS2, /dev/ttyS3 — это com1, com2, com3, com4 (но винде есть ещё com5 и т. д.). Это устройства serial console, они же COM-порты, они же последовательные порты.

Обычными средствами винды нельзя создать файл или папку с именем con или nul и т. д. Но можно исхитриться: mkdir \\.\c:\con.

Есть шуточная версия того, почему в Windows трудно создать файл с именем con. А именно: у Билла Гейтса было прозвище con, то есть ботаник. Подробнее см., например, здесь: vk.com/wall-31439745_2474 (естественно, этой информации нельзя доверять).

Подробнее про эти устройства тут: en.wikipedia.org/wiki/Device_file#MS-DOS.

/dev, /dev/sda1, ...


После прочтения предыдущего раздела у вас мог возникнуть вопрос: и что, всё? /dev/null, /dev/tty и ещё несколько штук девайсов? А где /dev/sda1 и прочие бесчисленные устройства? Ведь в GNU/Linux'е папка /dev может содержать сотни устройств!

Ответ таков: да, в Windows есть целая папка с такими устройствами. Это \Device. Её сложно посмотреть через обычный пользовательский интерфейс. Там лежат устройства типа \Device\HarddiskVolume1 — это аналог GNU/Linux'ового /dev/sda1.

Эти устройства появились в NT-шных версиях Windows'а и не тянутся с DOS'овых времён, в отличие от устройств из предыдущего раздела.

Пайпы, они же конвееры


cmd1 | cmd2, так же, как и в UNIX.

/etc/fstab


Его аналог — это ветка HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices в реестре Windows (да, да, в винде, как и в UNIX, есть понятие монтирования). Кстати, если у вас до этого были проблемы с переносом установленного Windows'а с одного раздела на другой, или с переименованием дисков в Windows'е или с чем-то ещё подобным, то — вот оно, решение!

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

Если, скажем, вы перенесли Windows с одного раздела на другой, то после этого нужно сделать два шага: разобраться с загрузчиком и его конфигами (об этом в следующем разделе) и подредактировать этот самый ключ реестра (в общем-то так же, как и в GNU/Linux'е: GRUB + fstab). Если ключ не подредактировать, то винда загрузиться не сможет, так начнёт грузиться с нового раздела (то есть того, на который мы копирнули винду), а продолжит — со старого (то есть того, с которого мы копирнули винду). Все системные вещи будут загружены с нового, а всякие Касперские — со старого. Итак, нужно удалить из этой ветки все записи, кроме записи "(По умолчанию)". Тогда винда забудет всё, что знала о разделах и при следующем запуске будет считать своим разделом тот, с которого запустилась (что нам и надо). Короче говоря, автоматически определит разделы.

Правда, тут возникает вопрос: а как подредактировать реестр какой-нибудь винды, не загружаясь в неё? Хм, я для этого использовал Windows PE, который входил в комплект пиратской сборки винды, поэтому я подробности рассказывать не буду. (См. другие способы в этой ветке: geektimes.ru/post/156749/#comment_5355987 от EndUser.)

Ещё несколько вариантов:
  • Почистить реестр, выключить компьютер (можно «жёстко»), а потом копирнуть винду. Однако, я это не проверял. Не факт, что винда даст вам отредактировать этот ключ реестра и что она не заполнит его снова при выключении
  • Отредактировать реестр, и сразу же, не выключая комп, копирнуть запущенную винду на другой раздел. Но и это тоже не проверялось
  • Если вы копируете винду с одного физического диска на другой, можно после копирования вынуть из компьютера старый физический диск и загрузиться в новый хотя бы один раз (чтоб винда обновила MountedDevices). Потом можно вставить старый диск обратно. Такой же трюк можно проделать даже с разделами на одном физическом диске: просто временно удалить старый раздел, а потом восстановить его обратно (ясно, что делать это нужно крайне осторожно). Ну и конечно же, всё это не проверялось :))
  • Смонтировать реестр Windows в GNU/Linux как winregfs


И наконец: использовать разные программы для копирования/бекапов разделов (типа Acronis) бесполезно: все они не меняют реестр (скорее всего), поэтому работать в такой ситуации (копирование винды в пределах одного компа) не будут.

И ещё: весь материал этого раздела проверялся только на Windows XP.

/boot/grub/grub.cfg


В Windows XP его аналог — это файл boot.ini в корне раздела с Windows, а в Windows 7 — это Windows Boot Manager.

Мощный командный интерпретатор


В стандартном интерпретаторе (то есть в cmd.exe) есть много разных фич типа ветвления, так же, как и в UNIX'овых интерпретаторах. Там даже есть дебаговый вывод (а-ля set -x), а именно echo on, правда он включен по дефолту и обычно первым действием в скрипте его отключают (echo off, разумеется).

Вообще, виндовая команда echo крайне непоследовательна: её действие довольно странным образом зависит от аргумента:

cmd.exe bash
echo foo echo foo
echo on set -x
echo off set +x
echo shopt -o xtrace


После лицезрения этой таблицы все юниксоиды, конечно же, схватились за голову и сказали: «Что за идиоты проектировали винду?» Впрочем, в UNIX'е тоже не всё гладко: с какой стати set -x включает дебаг, а set +x выключает его??? То же самое относится к остальным режимам, включаемым командой set.

Ах да, я же обещал мощный командный интерпретатор. :) cmd.exe таковым, конечно же, не является. А вот PowerShell — является. Одной из особенностей PowerShell'а является то, что он «понимает» обычные UNIX'овые команды, например, ls. Правда, на самом деле эта команда похожа на UNIX'овую лишь своим названием и идеей, опции у этого ls всё равно совсем другие. ls — это всего лишь один из алиасов на Get-ChildItem. А ещё в винде есть полноценный IDE для написания PowerShell-скриптов с визуальным отладчиком! Вы можете себе такое представить в UNIX'е? Да, есть конечно bashdb, но визуальный отладчик, конечно же, удобнее.

Спасибо Evgeny_Shiryaev, 6opoDuJIo, amdf, easyman, EndUser, risik, NoOne и aik за ценные замечания и исправления ошибок.
Поделиться публикацией
Комментарии 137
  • НЛО прилетело и опубликовало эту надпись здесь
      +43
      Забавно, а посты какого содержания на хабре лично вы хотели бы видеть? «Система защиты именованных пайпов в Windows — о чем умолчал Рихтер?» С полутора читателями, которые смогут понять о чем вообще речь? :)

      Насколько я понимаю, хабр — это ресурс для широкой аудитории. Многим специалистам, не являющимся системными администраторами, будет интересно прочитать о том, что есть общего в shell'ах. Да и те, у кого квалификация администратора не очень высока (я, например) могут найти пару забытых фишек.

      Книги и учебники это, конечно, хорошо — но они толстые и забываются. Не у всех, увы, идеальная память. А грамотно подобранный в одном месте материал в хорошем изложении, комментариями автора и историческими ретроспективами — это очень пользительно.
        –3
        Вы, конечно, извините, но поддержу theaqua… Первая мысль — что я на уроке информатики классе так в шестом. Даже с учетом того, что сейчас мс-дос в вряд ли в школьной программе, после заголовка «Мощный командный интерпретатор» и демонстрации его мощи с помощью команды эхо, просто сполз

        Наверное все испортило первое слово заголовка :) Ведь оказывается же!
          +2
          Ну дык в конце написано, что под мощным интерпретатором я имел в виду powershell
            0
            Клевый пост, кое где повеселил, но есть и полезные штуки, эт я за eyeofhell зацепился
            +6
            Вас я тоже готов спросить — посты какого содержания вы лично хотели бы видеть на хабре? «Система защиты именованных пайпов в Windows — о чем умолчал Рихтер?» С полутора читателями, которые смогут понять о чем вообще речь? :)

            Для человека, 5+ лет занимающегося какой-либо технологией за деньги и прочитавшего по ней десяток книг, практически любой пост по этой технологии — «урок информатики классе так в шестом».

            BTW, я был бы счастлив, если бы на уроках инорматики в шестом классе давали бы настолько хорошо изложенный и структурированный материал. Но, увы — не в нашей реальности.
              +2
              Да нормальний пост, ни чем не хуже постов по брейнфаку — каждый с ума по своему сходит. Кому то будет полезно, кому то интересно.

              Я программированием на кмд.экзе 5 лет за деньги не занимался, эти бесполезные секреты у меня в голове присыпаны толстым слоем других занимательных вещей.

              Но теперь меня больше интересует, почему вас так сильно интересует, какие посты хочу читать я? :)
                0
                Ну как же. Мне кажется что это годный пост в формате хабре. Многие хабравчане считают, что это пост не в формате хабра. Так как я довольно много пишу на хабр, то мне хотелось бы лучше понять формат хабра — это поможет мне лучше использовать его в своих злобных и корыстных целях :).
                0
                Да какие 5+, описанные в топике вещи можно найти в небезызвестной книге Фигурнова, с которой когда-то вообще предполагалось начинать знакомство с компьютером.
            • НЛО прилетело и опубликовало эту надпись здесь
            +7
            Если почитать внемяемый учебник по операционным системам — и не такие «чудеса» откроются.
              –10
              Автор своей статьёй либо всех толсто тролит, либо за 3 дня после регистрации ещё не разобрался и путает этот ресурс с ЖЖ-шкой
                +9
                Вменяемый учебник в студию!
                  –1
                  Хотя бы этот.
                    +2
                    Я бы не сказал, что книги Таненбаума предназначены для начального уровня. К ним нужно подходить, имея какой-то опыт. Статья все-таки начального уровня.

                    Лично мне было бы интересно видеть статьи разного уровня на Хабре, в том числе и начального. Кому-то это сильно поможет — гораздо больше, чем обсуждение, скопировал Samsung дизайн у Apple или нет.
                      –2
                      Я бы не сказал, что на начальном уровне кому-то нужны описанные в топике средства и методы.
                        +2
                        Это просто интересно знать. И меня огорчает, что статьи, где описываются приемы программирования или администрирования, часто встречают резкой критикой. А ведь их становится все меньше.
                          0
                          Критика резкой бывает только для бесполезных и тривиальных знаний. Можно с таким же успехом как эта статья написать про сложности создания папок с именем «.» и «..». Это банальности, не имеющие практической ценности для тех, кто хоть немного «в теме». На хабре таких — большинство и когда это станет не так, скорее всего я перестану здесь появляться.
                            0
                            Дело в том, что аудитория очень разная. Когда я только начинал двигаться от уровня чайника куда-то выше в 2009-2010 годах, мне очень помогли статьи о простых вещах на Хабре. Возможно, сейчас мне уже не так интересно читать про объектную модель JavaScript, но в свое время это было откровением. Я думаю, все должны понимать, что если для них что-то просто и очевидно, есть люди, которым это нужно, и лучше бы им узнать это на хорошем ресурсе с комментариями профессионалов, а не на каком-нибудь местном форуме, где научат плохому.
                    0
                    хм, можно обойтись и без него
                    0
                    Да хотя бы прилагающийся мануал.
                    +6
                    Да, на образовательный пост не тянет, но мне было интересно, сам бы я в этом не разбирался (а зачем?).
                      +5
                      Скандалы, интриги, расследования! Показать всё, что скрыто!(с)
                        +63
                        А ещё в Windows есть аналог команды 'cd', называется она 'cd'
                          +12
                          Сенсей, я вижу Вы обладаете Скрытыми Знаниями! Аналог ping не подскажете?
                            0
                            черт, на секунду ведь задумался )
                              +4
                              Зато вы, вероятно, не знали про pathping ;-)
                              0
                              но в Windows можно писать cd\ или cd…, а в bash пробел обязателен
                                0
                                Зато в cmd весьма забавное автодополнение по ТАБу.
                              • НЛО прилетело и опубликовало эту надпись здесь
                                  +1
                                  и что это меняет?
                                    0
                                    различным набором параметров?
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                        0
                                        Символические ссылки на самом деле. А в бинарнике уже описано, что делать, если он вызван с таким-то именем.
                                          0
                                          Там команды — апплеты
                                          –1
                                          Я знаю. Но всё равно спасибо. Вы мне показали, что это может быть не понятно при чтении. Поэтому я исправил.
                                          +1
                                            0
                                            Спасибо, я исправил. Должно быть nul
                                            +13
                                            Не раскрыта тема записи в \\Device\PhysicalMemory и выполнения своего кода в режиме ядра благодаря перезаписи таблицы векторов прерываний.

                                            Да, кстати пайпы в PowerShell передают не поток байт, как в *nix, а полноценные объекты, у которых можно читать свойства и вызывать методы.
                                              0
                                              Сейчас попробовал на windows 8 и смог создать файлы nil и con…
                                                +3
                                                Потому что у автора ошибка. Файл называется NUL.
                                                Файл CON он назвал правильно. Во всех Windows это зарезервированные имена, насчёт Win8 не знаю.
                                                  +1
                                                  Спасибо, исправил. Кстати, amdf, это ты написал Windows Native Shell? Отличная прога, вечный респект и уважуха! :)
                                                    0
                                                    Ага, это я, спасибо.
                                                +7
                                                «Аналог /dev/null — это файл nil».
                                                Это, как вы по нечётным разам верно называете, девайс. Такой же, как con, prn, com1, lpt1.

                                                «Хм, я для этого использовал Windows PE»
                                                фигня какая-то.

                                                reg load hku\aliensoft C:\WINDOWS\system32\config\SOFTWARE
                                                reg load hku\aliensys C:\WINDOWS\system32\config\SYSTEM
                                                reg load hku\alienuser «C:\Documents and Settings\%USERNAME%\NTUSER.DAT»

                                                и редактируйте сколько угодно
                                                  0
                                                  А можешь подробнее объяснить, пожалуйста? Я в статью включу (хотя у меня подозрение, что рассуждения о копировании винд вообще нужно выкинуть из статьи, они тут как-то не к месту). Вдобавок у моего друга щас как раз такая проблема возникла: копирнуть кучу винд (сам-то я на GNU/Linux'е сижу).

                                                  Где эти команды надо набирать? В винде до копирования? После? Или в консоли восстановления? Что они делают? Что-то копируют? Что, откуда и куда? hku/alien — это так нужно набирать или это просто так у тебя папки или юзеры называются?
                                                    0
                                                    Запускаете консоль восстановления или command.com внутри win pe. можно из винды, как таковой.

                                                    reg.exe — стандартный виндовозный редактор реестра из командной строки.

                                                    Команды подключают эти реестры (эти куски реестра) к текущему реестру. Например, в winpe вы можете увидеть присоединённое через regedit32.exe (графический) как дополнительные ветки реестра, удалить смс-блокер из автозапуска или (что вероятнее) из команды запуска оболочки (они обычно встают вместо explorer.exe).

                                                    Можно продолжать работать с реестром через reg.exe, но пальчиками, пальчиками.
                                                      0
                                                      P.S.1) в древности в DOS мы и печатали copy some.txt prn или type some.txt > lpt1

                                                      P.S.2) и в линуксе /dev/null не является файлом.

                                                      Настолько, насколько я ни фига не петрю в лине, все файлы и все девайсы представлены потоками (символов). Разве что к файлам применимы операции позиционирования курсора. А все потоки представлены в древесной структуре каталогов. Поэтому рядом с файлом в одной папке может быть генератор случайных чисел или сетевой сокет (как минимум hardlink на что нибудь, так что вы сами не различите шорткат от собственно ресурса).
                                                        0
                                                        Спасибо за reg.exe. И спасибо за пояснение про устройства vs файлы. А вот про гну/линукс не согласен. Там все узлы дерева папок называются файлами. В том числе папки, устройства, сокеты и др. Иными словами, файлы в юниксе бывают разных видов: обычные файлы, папки, устройства и др.
                                                          0
                                                          Я исправил в статье файлы на устройства
                                                            0
                                                            Насколько я понимаю, идеология *nix: «всё — файл».
                                                        +1
                                                        Самый полезный коммент к статье?..
                                                      0
                                                      кстати, кто-нибудь знает, как при помощи echo напечатать одно слово ON?
                                                        +1
                                                        echo "ON"
                                                        


                                                        не? Проверил, печатает.
                                                          0
                                                          не подходит,
                                                          echo "ON"
                                                          напечатает в кавычках
                                                            0
                                                            А, понял. Я в powershell тестил — там все ок. А в cmd.exe с кавычками.
                                                          +3
                                                          echo.ON
                                                            0
                                                            Работает, но как-то странно. Если набрать в консоли Far-а, то печатает пустую строку. Если в cmd.exe, то работает правильно.
                                                              +1
                                                              set /p a=on<nul — вроде, вот так работает везде.
                                                                0
                                                                У FARа собственный обработчик командной строки, в частности, echo, cd он не передает в cmd.exe.
                                                                Хотя у меня Far 2.0 b1777 на «echo.ON» напечатал, как и полагается, ON.
                                                              +2
                                                              echo.ON
                                                              а просто пустую строку:
                                                              echo.
                                                                0
                                                                echo.on
                                                                  0
                                                                  легко:
                                                                  echo.on
                                                                  


                                                                  UPD: итить… столько народу отписало одно и то же за пару минут пока читал…
                                                                  –3
                                                                  И близко консоль Windows не стоит с тем же bash'ом.

                                                                  К примеру, перенаправление. В Windows оно жутко урезано.

                                                                  # так можно
                                                                  echo >a.txt
                                                                  # а так нет
                                                                  grep test <a.txt
                                                                  


                                                                  Я уже молчу о более сложных перенаправлениях.
                                                                    –7
                                                                    Ээээ, grep test — это не перенаправление, а такая команда в UNIX'е.
                                                                    Никто и не говорит, что cmd.exe так же крут, как и bash.
                                                                    А конкретно перенаправления в cmd.exe такие же, как и в UNIX'е
                                                                      0
                                                                      Вы не правы. Суть примера не в grep, а в обратном перенаправлении: во втором примере содержимое ИЗ a.txt передается утилите grep (хотя мог бы быть и не grep). Обратное перенаправление не поддерживается cmd.exe.
                                                                        +1
                                                                        Ой, простите, неправильно понял. Но обратное пренаправление в cmd.exe есть! Вот, например:
                                                                        >type con > foo
                                                                        3
                                                                        2
                                                                        1
                                                                        ^Z
                                                                        
                                                                        >sort < foo
                                                                        1
                                                                        2
                                                                        3
                                                                        
                                                                          +2
                                                                          А в powershell его таки нет.

                                                                          The '<' operator is reserved for future use.
                                                                          
                                                                        –1
                                                                        (удалено)
                                                                        +2
                                                                        Да не, работает всё
                                                                        f:\>find "ved" < test.txt
                                                                        preved
                                                                        medved


                                                                        Более того, перенаправления STDERR и тп тоже работают как надо:
                                                                        f:\>find 2>&1
                                                                        FIND: Неправильный формат параметра
                                                                        
                                                                        f:\>find 2>nul
                                                                        [пусто]
                                                                        
                                                                          0
                                                                          Какая версия у вас? Как вчера помню, что обратное перенаправление не работало на Win. XP.
                                                                            +1
                                                                            Это на семёрке было. На хр проверил, всё точно так же:

                                                                            Скриншот WinXP
                                                                            image
                                                                              0
                                                                              Странно, значит я таки что-то не правильно делал.
                                                                              0
                                                                              Вроде бы по правилам DOS перенаправляется только stdout, а stderr валится на конколь?
                                                                              И чтобы stderr спихнуть в текстовик, надо дополнительное колдунство.
                                                                                0
                                                                                Да, допиливать до уровня никсов консольку со времен WinNT стали
                                                                                  0
                                                                                  some_bugged_programm.exe 2> errors.log
                                                                                  И никакого колдунства.
                                                                                    0
                                                                                    «2» — это аргумент для some_bugged_program.exe?
                                                                                    или ключевое слово, соответствующее stderr?
                                                                                      0
                                                                                      «2» — это элемент синтаксиса. (во всяком случае в гну/лине работает, в винде и досе щас лень проверять)
                                                                                        0
                                                                                        А почему вы в ответ на «по правилам DOS» пишете «в гну/лине»?!
                                                                                          0
                                                                                          потому что я знаю, что в гну/лине 2 — это элемент синтаксиса и догадываюсь, что в DOS'е скорее всего тоже
                                                                            0
                                                                            (не туда)
                                                                              0
                                                                              Автор, не обманывай!
                                                                              пруф: md \\.\c:\con
                                                                              +
                                                                              есть такая штука, WMI — там много интересного (как и в PowerShell)
                                                                                0
                                                                                От версии зависит.
                                                                                Если

                                                                                C:\>ver

                                                                                Microsoft Windows XP [Версия 5.1.2600]

                                                                                то в FAT32 есть «длинные» имена файлов, в которых может быть много такого мусора, который классическому DOS-у и не снился.
                                                                                  0
                                                                                  Спасибо, исправил
                                                                                  +1
                                                                                  Добавлю вам ещё: ^D в линукс посылает отнюдь не EOF, а очень даже EOT.
                                                                                    +1
                                                                                    В том-то и всё дело, что нет. Смотрите:

                                                                                    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 (как вы, опять-таки, правильно заметили).
                                                                                      0
                                                                                      Ок, не в raw-режиме не шлёт, согласен.
                                                                                    0
                                                                                    В консоли восстановления установочного диска или флэшки Windows 7 присутствует обычный regedit32.exe. Так что можно редактировать реестр в привычной среде. А еще из этой же консоли прекрасно запускается Total Commander (теперь и 64-битный).
                                                                                      0
                                                                                      Спасибо
                                                                                      +4
                                                                                      Прочитал первую половину топика, вспомнил зачитанный до дыр томик Фигурнова за (кажется) 1994й год, прослезился. И ведь виндоз тогда был исключительно 3.11, а перенаправления, type, con и nul уже были! Умели ведь…
                                                                                        +1
                                                                                        Фигурнов? Винда?

                                                                                        1990 (если не раньше), ПК «Корвет», ОС CP/M-80 и МикроДОС — и в них, в общем, то же самое.
                                                                                        –2
                                                                                        Ну и зачем весь этот тюнинг в игровой приставке? Нужен полноценный и мощный шелл — велкам ту Юникс, Люк.
                                                                                          +3
                                                                                          > мощный шелл
                                                                                          Дословно — PowerShell :)
                                                                                            +3
                                                                                            Вальв не согласен с вашим определением игровой приставки
                                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                                              0
                                                                                              Не знаю :)
                                                                                                0
                                                                                                конечно, есть. но, как всё в винде, оно не открыто пользователю через утилиты командной строки, а предосталяется только через API.

                                                                                                кстати, named pipes в винде доступны между хостами (можно подключаться к пайпу на другой машине, если правильно установлены разрешения)
                                                                                                –4
                                                                                                В древности была легенда, что Билла Гейтса в школе обзывали con(чтото типа задрота), поэтому он запретил называть так файлы.
                                                                                                Еще командой con/con можно было вызвать BSOD на 98 виндоусе, своем или по сети
                                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                    –2
                                                                                                    Есть, сам сочиняю иногда. Вот Вам веточка для ознакомления.
                                                                                                      0
                                                                                                      Конечно, все имена — это какие-то сокращения
                                                                                                        0
                                                                                                        prn — это девайс, из которого можно порнуху качать, разумеется :)
                                                                                                      0
                                                                                                      > Это \\Devices. Её сложно посмотреть через обычный пользовательский интерфейс.
                                                                                                      Если сложно, значит все-таки можно. Не поделитесь как?
                                                                                                        0
                                                                                                        Не знаю :)
                                                                                                          0
                                                                                                          Программой WinOBJ
                                                                                                          +1
                                                                                                          > Причём перенаправления появились ещё в DOS'е, а вот пайпы появились только в винде (ещё бы, ведь для пайпов нужна мультизадачность).

                                                                                                          Пайпы появились еще в DOS. Для них не обязательна многозадачность. Программы могут вызываться и последовательно, но ОС обеспечивает передачу выхлопа одного на вход другого. Именно так и было сделано в DOS. Например здесь.
                                                                                                            0
                                                                                                            спасибо, щас уберу
                                                                                                            +3
                                                                                                            Таким образом, проверка существования папок и файлов в cmd-скриптах сделана куда менее красиво чем в UNIX'е

                                                                                                            Да ну?
                                                                                                            IF EXIST c:\windows ECHO 1
                                                                                                            что здесь менее красиво? Никакие nul тут не нужны.


                                                                                                            А это с какого перепугу? Просто ECHO без параметров выводит текущее состояние вывода эхо на экран (on/off). Для вывода текущего каталога (аналог pwd) можно просто cd или echo %CD%
                                                                                                              0
                                                                                                              о проверке существования: я имел в виду «проверить, что это именно папка». спасибо, я уточнил в статье.

                                                                                                              про echo без аргументов тоже исправил, спасибо
                                                                                                                0
                                                                                                                Если вы это имели ввиду, то «проверить, что это именно папка» можно просто дописав слеш в конце: if exist foo\ echo 1
                                                                                                                По-моему, не намного трудней чем в никсе.
                                                                                                                  0
                                                                                                                  спасибо, исправил
                                                                                                              +5
                                                                                                              пайпы появились только в винде (ещё бы, ведь для пайпов нужна мультизадачность).

                                                                                                              Хотите сказать, что DOS 6.22 — это уже винда?
                                                                                                                +1
                                                                                                                Меня тоже смутила необходимость мультизадачности. Зачем она, если задачи в пайпе можно просто выполнить поочередно?
                                                                                                                  0
                                                                                                                  спасибо. убрал
                                                                                                                  0
                                                                                                                  Echo без параметров (в отличие, например, от cd без параметров) не является аналогом линуксового pwd, исправьте это.
                                                                                                                  0
                                                                                                                  Отличная статья для свитчеров с юниксов
                                                                                                                  0
                                                                                                                  >>а как подредактировать реестр, не загружаясь в него?
                                                                                                                  В загрузочном диске с ERD Commander'ом есть редактор реестра. Позволяет загрузиться с флешки/диска и редактировать реестр винды, которая отказывается загружаться. Я таким образом (путем удаления из реестра MountedDevices) восстановил работоспособность Windows 7 после переноса с одного диска на другой. При этом пришлось еще и путь к pagefile'у поправить, т.к. он находился на диске Q, которого после переноса винды не стало (перенос производился на другой физический диск с меньшим количеством разделов).
                                                                                                                    0
                                                                                                                    Вы еще давайте расскажите про что можно создать папку, потом переименовать ее например в «foo..\\.» (например в far или totalcmd) и получить гемморой…
                                                                                                                      0
                                                                                                                      Не увидел, по-моему, самое главное: symlink в windows 7, спасает мой 40GB SSD c: от temp и бэкапов iTunes
                                                                                                                        0
                                                                                                                        40 — грустно, да. на моем 64гб живут w2008r2 + sql2012, TFS12. VS12 (разработкой занимаюсь). office13, и у девушки еще GIMP.
                                                                                                                        правда все пользовательские папки в профилях сразу завернуты на 2tb hdd, + туда же уходят торренты, а так — свап и кеши живут на ssd, софт говорит что в жить ссд до середины 16 года… боюсь, что комп закончится раньше чем ssd. и винт, возможно тоже
                                                                                                                          0
                                                                                                                          кстати вот у меня музыкальная база от WMP живет таки на ssd, но в ней порядка 1000 часов музыки и wmp очен грустно, когда я его запускаю в режиме проиграть весь плейтист в рендоме, так что, наверное музыкальная база там жить и будет…
                                                                                                                          0
                                                                                                                          Странно, тогда, почему Вы не сказали о том, что повершелл:

                                                                                                                          а) такой же .Net язык, как и C#, например, со всей нереальной дурью возможностей данного фреймворка.
                                                                                                                          б) что весь его вывод — фактически обьекты либо их коллекции

                                                                                                                          до кучи — одна из моих публикаций тут — рисование WinForms GUI прямо в скрипте повершелл.
                                                                                                                            +1
                                                                                                                            Тогда уж и про папку c:\Windows\System32\drivers\etc\ стоит написать, раз уж такая пьянка.
                                                                                                                              0
                                                                                                                              Может кому пригодится. Аналог команды touch в Windows:

                                                                                                                              copy /b file +,,

                                                                                                                              Можно создать bat-файл со следующим содержимым:

                                                                                                                              @ echo off copy /b %1 +,,

                                                                                                                              Разместить его в любом из каталогов из переменной PATH и использовать потом в консоли:

                                                                                                                              touch filename.ext
                                                                                                                                0
                                                                                                                                Рекомендую вот этот пакет: sourceforge.net/projects/unxutils/
                                                                                                                                Тут вам для windows собранные не только touch, но и awk, sed, grep и другие.
                                                                                                                                  0
                                                                                                                                  Спасибо, я про него в курсе. Но мне нужен был только touch и я нашёл для него аналог.
                                                                                                                                0
                                                                                                                                Вполне себе открытия для тех, кто начал свою «компьютерную» жизни не с ОС семейства Windows.

                                                                                                                                Читается ровно наоборот от статей класса «как выжить в linux», где подробно описывается, что все в юниксе — это файлы, и пр.
                                                                                                                                  +1
                                                                                                                                  я начал компьютерную жизнь с винды. и имею на ней огромный опыт (с 3-5 лет до 16 лет), за всё это время ни разу не слышал про пайпы и перенаправления, хотя прогал под винду. потом пересел на гну/линь и одна из первых вещей, которую я узнал — это пайпы. почему-то они позиционируются как чуть ли ни самая крутая штука в гну/лине. и потом вдруг узнал, что оказывается в винде тоже есть пайпы. у меня сразу возникла мысль: какого #$% мне никто раньше не говорил? это меня и побудило написать эту статью.

                                                                                                                                  P. S.: предчувствуя ваш вопрос: щас мне 20
                                                                                                                                    0
                                                                                                                                    А я ни в коем случае и не критикую. Наоборот, здорово, что взялись и написали. Меня, наоборот, удивляют люди, считающие, что, раз Хабр — не Мурзилка, нечего на нем и писать то, что им самим известно.

                                                                                                                                    Уверен, что средний нормальный «виндузятник» процентов 30 из этой статьи не знает точно, а про еще 30-40 догадывался, но не использовал. Например, что nul есть в каждой папке :)

                                                                                                                                    Спасибо!
                                                                                                                                      +1
                                                                                                                                      Пайпы и т.п. всплывают практически сразу, как начинаешь писать скрипты. Линукс состоит из написания скриптов, windows — из тыканья мышью. :)
                                                                                                                                    0
                                                                                                                                    Удивительно.

                                                                                                                                    Большинство комментариев в духе «мне это не нужно, значит, и никому это не нужно».

                                                                                                                                    Создается впечатление, что большинство комментаторов сразу родились с изданием Фигурнова в голове, и никогда не испытывали необходимости учиться чему-либо.
                                                                                                                                      0
                                                                                                                                      К слову, о пайпах.
                                                                                                                                      Под линуксом их можно использовать для множественного логона в Skype, например, две копии запустить с разными именами польтзователей.
                                                                                                                                      Под виндой работает запуск от другого имени или ключ /secondary.
                                                                                                                                      Оба варианта имеют один и тот же недостаток — требуют ручного выбора логина, а если уже запущен скайп с таким логином — скайп забывает пароль этого логина и приходится его снова вводить.

                                                                                                                                      А можно ли под виндой использовать пайпы для такого запуска скайпа?
                                                                                                                                        +1
                                                                                                                                        Вот почему нельзя создать файл 'con' и подобное. В английском нет такого слова: 'con', которое бы означало 'ботаник'. Кстати 'con', как con man означает confidence man, что означает в приблизительном переводе: человек, который берет уверенностью или нахрапом, но ироническое совпадение в том, что это также и укороченное 'convict' (заключенный). Con man, con artist — так называют жуликов и всяких аферистов.
                                                                                                                                          0
                                                                                                                                          Ну дык это шутночная версия

                                                                                                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                                                                        Самое читаемое