Комментарии 137
Забавно, а посты какого содержания на хабре лично вы хотели бы видеть? «Система защиты именованных пайпов в Windows — о чем умолчал Рихтер?» С полутора читателями, которые смогут понять о чем вообще речь? :)
Насколько я понимаю, хабр — это ресурс для широкой аудитории. Многим специалистам, не являющимся системными администраторами, будет интересно прочитать о том, что есть общего в shell'ах. Да и те, у кого квалификация администратора не очень высока (я, например) могут найти пару забытых фишек.
Книги и учебники это, конечно, хорошо — но они толстые и забываются. Не у всех, увы, идеальная память. А грамотно подобранный в одном месте материал в хорошем изложении, комментариями автора и историческими ретроспективами — это очень пользительно.
Насколько я понимаю, хабр — это ресурс для широкой аудитории. Многим специалистам, не являющимся системными администраторами, будет интересно прочитать о том, что есть общего в shell'ах. Да и те, у кого квалификация администратора не очень высока (я, например) могут найти пару забытых фишек.
Книги и учебники это, конечно, хорошо — но они толстые и забываются. Не у всех, увы, идеальная память. А грамотно подобранный в одном месте материал в хорошем изложении, комментариями автора и историческими ретроспективами — это очень пользительно.
Вы, конечно, извините, но поддержу theaqua… Первая мысль — что я на уроке информатики классе так в шестом. Даже с учетом того, что сейчас мс-дос в вряд ли в школьной программе, после заголовка «Мощный командный интерпретатор» и демонстрации его мощи с помощью команды эхо, просто сполз
Наверное все испортило первое слово заголовка :) Ведь оказывается же!
Наверное все испортило первое слово заголовка :) Ведь оказывается же!
Ну дык в конце написано, что под мощным интерпретатором я имел в виду powershell
Вас я тоже готов спросить — посты какого содержания вы лично хотели бы видеть на хабре? «Система защиты именованных пайпов в Windows — о чем умолчал Рихтер?» С полутора читателями, которые смогут понять о чем вообще речь? :)
Для человека, 5+ лет занимающегося какой-либо технологией за деньги и прочитавшего по ней десяток книг, практически любой пост по этой технологии — «урок информатики классе так в шестом».
BTW, я был бы счастлив, если бы на уроках инорматики в шестом классе давали бы настолько хорошо изложенный и структурированный материал. Но, увы — не в нашей реальности.
Для человека, 5+ лет занимающегося какой-либо технологией за деньги и прочитавшего по ней десяток книг, практически любой пост по этой технологии — «урок информатики классе так в шестом».
BTW, я был бы счастлив, если бы на уроках инорматики в шестом классе давали бы настолько хорошо изложенный и структурированный материал. Но, увы — не в нашей реальности.
Да нормальний пост, ни чем не хуже постов по брейнфаку — каждый с ума по своему сходит. Кому то будет полезно, кому то интересно.
Я программированием на кмд.экзе 5 лет за деньги не занимался, эти бесполезные секреты у меня в голове присыпаны толстым слоем других занимательных вещей.
Но теперь меня больше интересует, почему вас так сильно интересует, какие посты хочу читать я? :)
Я программированием на кмд.экзе 5 лет за деньги не занимался, эти бесполезные секреты у меня в голове присыпаны толстым слоем других занимательных вещей.
Но теперь меня больше интересует, почему вас так сильно интересует, какие посты хочу читать я? :)
Да какие 5+, описанные в топике вещи можно найти в небезызвестной книге Фигурнова, с которой когда-то вообще предполагалось начинать знакомство с компьютером.
Если почитать внемяемый учебник по операционным системам — и не такие «чудеса» откроются.
Автор своей статьёй либо всех толсто тролит, либо за 3 дня после регистрации ещё не разобрался и путает этот ресурс с ЖЖ-шкой
Вменяемый учебник в студию!
Я бы не сказал, что книги Таненбаума предназначены для начального уровня. К ним нужно подходить, имея какой-то опыт. Статья все-таки начального уровня.
Лично мне было бы интересно видеть статьи разного уровня на Хабре, в том числе и начального. Кому-то это сильно поможет — гораздо больше, чем обсуждение, скопировал Samsung дизайн у Apple или нет.
Лично мне было бы интересно видеть статьи разного уровня на Хабре, в том числе и начального. Кому-то это сильно поможет — гораздо больше, чем обсуждение, скопировал Samsung дизайн у Apple или нет.
Я бы не сказал, что на начальном уровне кому-то нужны описанные в топике средства и методы.
Это просто интересно знать. И меня огорчает, что статьи, где описываются приемы программирования или администрирования, часто встречают резкой критикой. А ведь их становится все меньше.
Критика резкой бывает только для бесполезных и тривиальных знаний. Можно с таким же успехом как эта статья написать про сложности создания папок с именем «.» и «..». Это банальности, не имеющие практической ценности для тех, кто хоть немного «в теме». На хабре таких — большинство и когда это станет не так, скорее всего я перестану здесь появляться.
Дело в том, что аудитория очень разная. Когда я только начинал двигаться от уровня чайника куда-то выше в 2009-2010 годах, мне очень помогли статьи о простых вещах на Хабре. Возможно, сейчас мне уже не так интересно читать про объектную модель JavaScript, но в свое время это было откровением. Я думаю, все должны понимать, что если для них что-то просто и очевидно, есть люди, которым это нужно, и лучше бы им узнать это на хорошем ресурсе с комментариями профессионалов, а не на каком-нибудь местном форуме, где научат плохому.
Да хотя бы прилагающийся мануал.
Да, на образовательный пост не тянет, но мне было интересно, сам бы я в этом не разбирался (а зачем?).
Скандалы, интриги, расследования! Показать всё, что скрыто!(с)
А ещё в Windows есть аналог команды 'cd', называется она 'cd'
и что это меняет?
Я знаю. Но всё равно спасибо. Вы мне показали, что это может быть не понятно при чтении. Поэтому я исправил.
Не раскрыта тема записи в \\Device\PhysicalMemory и выполнения своего кода в режиме ядра благодаря перезаписи таблицы векторов прерываний.
Да, кстати пайпы в PowerShell передают не поток байт, как в *nix, а полноценные объекты, у которых можно читать свойства и вызывать методы.
Да, кстати пайпы в PowerShell передают не поток байт, как в *nix, а полноценные объекты, у которых можно читать свойства и вызывать методы.
Сейчас попробовал на windows 8 и смог создать файлы nil и con…
«Аналог /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»
и редактируйте сколько угодно
Это, как вы по нечётным разам верно называете, девайс. Такой же, как 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»
и редактируйте сколько угодно
А можешь подробнее объяснить, пожалуйста? Я в статью включу (хотя у меня подозрение, что рассуждения о копировании винд вообще нужно выкинуть из статьи, они тут как-то не к месту). Вдобавок у моего друга щас как раз такая проблема возникла: копирнуть кучу винд (сам-то я на GNU/Linux'е сижу).
Где эти команды надо набирать? В винде до копирования? После? Или в консоли восстановления? Что они делают? Что-то копируют? Что, откуда и куда? hku/alien — это так нужно набирать или это просто так у тебя папки или юзеры называются?
Где эти команды надо набирать? В винде до копирования? После? Или в консоли восстановления? Что они делают? Что-то копируют? Что, откуда и куда? hku/alien — это так нужно набирать или это просто так у тебя папки или юзеры называются?
Запускаете консоль восстановления или command.com внутри win pe. можно из винды, как таковой.
reg.exe — стандартный виндовозный редактор реестра из командной строки.
Команды подключают эти реестры (эти куски реестра) к текущему реестру. Например, в winpe вы можете увидеть присоединённое через regedit32.exe (графический) как дополнительные ветки реестра, удалить смс-блокер из автозапуска или (что вероятнее) из команды запуска оболочки (они обычно встают вместо explorer.exe).
Можно продолжать работать с реестром через reg.exe, но пальчиками, пальчиками.
reg.exe — стандартный виндовозный редактор реестра из командной строки.
Команды подключают эти реестры (эти куски реестра) к текущему реестру. Например, в winpe вы можете увидеть присоединённое через regedit32.exe (графический) как дополнительные ветки реестра, удалить смс-блокер из автозапуска или (что вероятнее) из команды запуска оболочки (они обычно встают вместо explorer.exe).
Можно продолжать работать с реестром через reg.exe, но пальчиками, пальчиками.
P.S.1) в древности в DOS мы и печатали copy some.txt prn или type some.txt > lpt1
P.S.2) и в линуксе /dev/null не является файлом.
Настолько, насколько я ни фига не петрю в лине, все файлы и все девайсы представлены потоками (символов). Разве что к файлам применимы операции позиционирования курсора. А все потоки представлены в древесной структуре каталогов. Поэтому рядом с файлом в одной папке может быть генератор случайных чисел или сетевой сокет (как минимум hardlink на что нибудь, так что вы сами не различите шорткат от собственно ресурса).
P.S.2) и в линуксе /dev/null не является файлом.
Настолько, насколько я ни фига не петрю в лине, все файлы и все девайсы представлены потоками (символов). Разве что к файлам применимы операции позиционирования курсора. А все потоки представлены в древесной структуре каталогов. Поэтому рядом с файлом в одной папке может быть генератор случайных чисел или сетевой сокет (как минимум hardlink на что нибудь, так что вы сами не различите шорткат от собственно ресурса).
Спасибо за reg.exe. И спасибо за пояснение про устройства vs файлы. А вот про гну/линукс не согласен. Там все узлы дерева папок называются файлами. В том числе папки, устройства, сокеты и др. Иными словами, файлы в юниксе бывают разных видов: обычные файлы, папки, устройства и др.
Я исправил в статье файлы на устройства
Насколько я понимаю, идеология *nix: «всё — файл».
Самый полезный коммент к статье?..
кстати, кто-нибудь знает, как при помощи echo напечатать одно слово ON?
И близко консоль Windows не стоит с тем же bash'ом.
К примеру, перенаправление. В Windows оно жутко урезано.
Я уже молчу о более сложных перенаправлениях.
К примеру, перенаправление. В Windows оно жутко урезано.
# так можно
echo >a.txt
# а так нет
grep test <a.txt
Я уже молчу о более сложных перенаправлениях.
Ээээ, grep test — это не перенаправление, а такая команда в UNIX'е.
Никто и не говорит, что cmd.exe так же крут, как и bash.
А конкретно перенаправления в cmd.exe такие же, как и в UNIX'е
Никто и не говорит, что cmd.exe так же крут, как и bash.
А конкретно перенаправления в cmd.exe такие же, как и в UNIX'е
Вы не правы. Суть примера не в grep, а в обратном перенаправлении: во втором примере содержимое ИЗ a.txt передается утилите grep (хотя мог бы быть и не grep). Обратное перенаправление не поддерживается cmd.exe.
(удалено)
Да не, работает всё
Более того, перенаправления STDERR и тп тоже работают как надо:
f:\>find "ved" < test.txt
preved
medved
Более того, перенаправления STDERR и тп тоже работают как надо:
f:\>find 2>&1
FIND: Неправильный формат параметра
f:\>find 2>nul
[пусто]
Какая версия у вас? Как вчера помню, что обратное перенаправление не работало на Win. XP.
Это на семёрке было. На хр проверил, всё точно так же:
Скриншот WinXP
Вроде бы по правилам DOS перенаправляется только stdout, а stderr валится на конколь?
И чтобы stderr спихнуть в текстовик, надо дополнительное колдунство.
И чтобы stderr спихнуть в текстовик, надо дополнительное колдунство.
Да, допиливать до уровня никсов консольку со времен WinNT стали
some_bugged_programm.exe 2> errors.log
И никакого колдунства.
И никакого колдунства.
«2» — это аргумент для some_bugged_program.exe?
или ключевое слово, соответствующее stderr?
или ключевое слово, соответствующее stderr?
(не туда)
Автор, не обманывай!
пруф: md \\.\c:\con
+
есть такая штука, WMI — там много интересного (как и в PowerShell)
пруф: md \\.\c:\con
+
есть такая штука, WMI — там много интересного (как и в PowerShell)
Добавлю вам ещё: ^D в линукс посылает отнюдь не EOF, а очень даже EOT.
В том-то и всё дело, что нет. Смотрите:
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 (как вы, опять-таки, правильно заметили).
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 (как вы, опять-таки, правильно заметили).
В консоли восстановления установочного диска или флэшки Windows 7 присутствует обычный regedit32.exe. Так что можно редактировать реестр в привычной среде. А еще из этой же консоли прекрасно запускается Total Commander (теперь и 64-битный).
Прочитал первую половину топика, вспомнил зачитанный до дыр томик Фигурнова за (кажется) 1994й год, прослезился. И ведь виндоз тогда был исключительно 3.11, а перенаправления, type, con и nul уже были! Умели ведь…
Ну и зачем весь этот тюнинг в игровой приставке? Нужен полноценный и мощный шелл — велкам ту Юникс, Люк.
В древности была легенда, что Билла Гейтса в школе обзывали con(чтото типа задрота), поэтому он запретил называть так файлы.
Еще командой con/con можно было вызвать BSOD на 98 виндоусе, своем или по сети
Еще командой con/con можно было вызвать BSOD на 98 виндоусе, своем или по сети
> Это \\Devices. Её сложно посмотреть через обычный пользовательский интерфейс.
Если сложно, значит все-таки можно. Не поделитесь как?
Если сложно, значит все-таки можно. Не поделитесь как?
> Причём перенаправления появились ещё в DOS'е, а вот пайпы появились только в винде (ещё бы, ведь для пайпов нужна мультизадачность).
Пайпы появились еще в DOS. Для них не обязательна многозадачность. Программы могут вызываться и последовательно, но ОС обеспечивает передачу выхлопа одного на вход другого. Именно так и было сделано в DOS. Например здесь.
Пайпы появились еще в DOS. Для них не обязательна многозадачность. Программы могут вызываться и последовательно, но ОС обеспечивает передачу выхлопа одного на вход другого. Именно так и было сделано в DOS. Например здесь.
Таким образом, проверка существования папок и файлов в cmd-скриптах сделана куда менее красиво чем в UNIX'е
Да ну?
IF EXIST c:\windows ECHO 1
что здесь менее красиво? Никакие nul тут не нужны.
А это с какого перепугу? Просто ECHO без параметров выводит текущее состояние вывода эхо на экран (on/off). Для вывода текущего каталога (аналог pwd) можно просто cd или echo %CD%
о проверке существования: я имел в виду «проверить, что это именно папка». спасибо, я уточнил в статье.
про echo без аргументов тоже исправил, спасибо
про echo без аргументов тоже исправил, спасибо
пайпы появились только в винде (ещё бы, ведь для пайпов нужна мультизадачность).
Хотите сказать, что DOS 6.22 — это уже винда?
Хотите сказать, что DOS 6.22 — это уже винда?
Echo без параметров (в отличие, например, от cd без параметров) не является аналогом линуксового pwd, исправьте это.
А, это указали уж выше.
Отличная статья для свитчеров с юниксов
см. этот коммент: habrahabr.ru/post/156749/#comment_5361513
>>а как подредактировать реестр, не загружаясь в него?
В загрузочном диске с ERD Commander'ом есть редактор реестра. Позволяет загрузиться с флешки/диска и редактировать реестр винды, которая отказывается загружаться. Я таким образом (путем удаления из реестра MountedDevices) восстановил работоспособность Windows 7 после переноса с одного диска на другой. При этом пришлось еще и путь к pagefile'у поправить, т.к. он находился на диске Q, которого после переноса винды не стало (перенос производился на другой физический диск с меньшим количеством разделов).
В загрузочном диске с ERD Commander'ом есть редактор реестра. Позволяет загрузиться с флешки/диска и редактировать реестр винды, которая отказывается загружаться. Я таким образом (путем удаления из реестра MountedDevices) восстановил работоспособность Windows 7 после переноса с одного диска на другой. При этом пришлось еще и путь к pagefile'у поправить, т.к. он находился на диске Q, которого после переноса винды не стало (перенос производился на другой физический диск с меньшим количеством разделов).
Вы еще давайте расскажите про что можно создать папку, потом переименовать ее например в «foo..\\.» (например в far или totalcmd) и получить гемморой…
40 — грустно, да. на моем 64гб живут w2008r2 + sql2012, TFS12. VS12 (разработкой занимаюсь). office13, и у девушки еще GIMP.
правда все пользовательские папки в профилях сразу завернуты на 2tb hdd, + туда же уходят торренты, а так — свап и кеши живут на ssd, софт говорит что в жить ссд до середины 16 года… боюсь, что комп закончится раньше чем ssd. и винт, возможно тоже
правда все пользовательские папки в профилях сразу завернуты на 2tb hdd, + туда же уходят торренты, а так — свап и кеши живут на ssd, софт говорит что в жить ссд до середины 16 года… боюсь, что комп закончится раньше чем ssd. и винт, возможно тоже
кстати вот у меня музыкальная база от WMP живет таки на ssd, но в ней порядка 1000 часов музыки и wmp очен грустно, когда я его запускаю в режиме проиграть весь плейтист в рендоме, так что, наверное музыкальная база там жить и будет…
Странно, тогда, почему Вы не сказали о том, что повершелл:
а) такой же .Net язык, как и C#, например, со всей нереальной дурью возможностей данного фреймворка.
б) что весь его вывод — фактически обьекты либо их коллекции
до кучи — одна из моих публикаций тут — рисование WinForms GUI прямо в скрипте повершелл.
а) такой же .Net язык, как и C#, например, со всей нереальной дурью возможностей данного фреймворка.
б) что весь его вывод — фактически обьекты либо их коллекции
до кучи — одна из моих публикаций тут — рисование WinForms GUI прямо в скрипте повершелл.
Тогда уж и про папку c:\Windows\System32\drivers\etc\ стоит написать, раз уж такая пьянка.
Может кому пригодится. Аналог команды touch в Windows:
Можно создать bat-файл со следующим содержимым:
Разместить его в любом из каталогов из переменной PATH и использовать потом в консоли:
copy /b file +,,
Можно создать bat-файл со следующим содержимым:
@ echo off
copy /b %1 +,,
Разместить его в любом из каталогов из переменной PATH и использовать потом в консоли:
touch filename.ext
Рекомендую вот этот пакет: sourceforge.net/projects/unxutils/
Тут вам для windows собранные не только touch, но и awk, sed, grep и другие.
Тут вам для windows собранные не только touch, но и awk, sed, grep и другие.
Вполне себе открытия для тех, кто начал свою «компьютерную» жизни не с ОС семейства Windows.
Читается ровно наоборот от статей класса «как выжить в linux», где подробно описывается, что все в юниксе — это файлы, и пр.
Читается ровно наоборот от статей класса «как выжить в linux», где подробно описывается, что все в юниксе — это файлы, и пр.
я начал компьютерную жизнь с винды. и имею на ней огромный опыт (с 3-5 лет до 16 лет), за всё это время ни разу не слышал про пайпы и перенаправления, хотя прогал под винду. потом пересел на гну/линь и одна из первых вещей, которую я узнал — это пайпы. почему-то они позиционируются как чуть ли ни самая крутая штука в гну/лине. и потом вдруг узнал, что оказывается в винде тоже есть пайпы. у меня сразу возникла мысль: какого #$% мне никто раньше не говорил? это меня и побудило написать эту статью.
P. S.: предчувствуя ваш вопрос: щас мне 20
P. S.: предчувствуя ваш вопрос: щас мне 20
А я ни в коем случае и не критикую. Наоборот, здорово, что взялись и написали. Меня, наоборот, удивляют люди, считающие, что, раз Хабр — не Мурзилка, нечего на нем и писать то, что им самим известно.
Уверен, что средний нормальный «виндузятник» процентов 30 из этой статьи не знает точно, а про еще 30-40 догадывался, но не использовал. Например, что nul есть в каждой папке :)
Спасибо!
Уверен, что средний нормальный «виндузятник» процентов 30 из этой статьи не знает точно, а про еще 30-40 догадывался, но не использовал. Например, что nul есть в каждой папке :)
Спасибо!
Пайпы и т.п. всплывают практически сразу, как начинаешь писать скрипты. Линукс состоит из написания скриптов, windows — из тыканья мышью. :)
Удивительно.
Большинство комментариев в духе «мне это не нужно, значит, и никому это не нужно».
Создается впечатление, что большинство комментаторов сразу родились с изданием Фигурнова в голове, и никогда не испытывали необходимости учиться чему-либо.
Большинство комментариев в духе «мне это не нужно, значит, и никому это не нужно».
Создается впечатление, что большинство комментаторов сразу родились с изданием Фигурнова в голове, и никогда не испытывали необходимости учиться чему-либо.
К слову, о пайпах.
Под линуксом их можно использовать для множественного логона в Skype, например, две копии запустить с разными именами польтзователей.
Под виндой работает запуск от другого имени или ключ /secondary.
Оба варианта имеют один и тот же недостаток — требуют ручного выбора логина, а если уже запущен скайп с таким логином — скайп забывает пароль этого логина и приходится его снова вводить.
А можно ли под виндой использовать пайпы для такого запуска скайпа?
Под линуксом их можно использовать для множественного логона в Skype, например, две копии запустить с разными именами польтзователей.
Под виндой работает запуск от другого имени или ключ /secondary.
Оба варианта имеют один и тот же недостаток — требуют ручного выбора логина, а если уже запущен скайп с таким логином — скайп забывает пароль этого логина и приходится его снова вводить.
А можно ли под виндой использовать пайпы для такого запуска скайпа?
Вот почему нельзя создать файл 'con' и подобное. В английском нет такого слова: 'con', которое бы означало 'ботаник'. Кстати 'con', как con man означает confidence man, что означает в приблизительном переводе: человек, который берет уверенностью или нахрапом, но ироническое совпадение в том, что это также и укороченное 'convict' (заключенный). Con man, con artist — так называют жуликов и всяких аферистов.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Оказывается, в Windows тоже есть перенаправления, пайпы, свой /dev, /dev/null, /etc/fstab, grub.cfg