Нажмите CTRL-D чтобы добавить нас в закладки
Внимание! Вы находитесь в незащищенном режиме (HTTP). Для перехода в защищенный режим SSL, нажмите здесь
HackZone.RU - Оказывается, в Windows тоже есть перенаправления, пайпы, свой /dev, /dev/null, /etc/fstab, grub.cfg Актуальные базы 2GIS в форматах CSV,Excel,SQL
Войти / Регистрация / Участники
Определение даты выпуска iPhone по серийному номеру
-
Поиск по сайту
Форумы



Реклама

Поиск ТОП Добавить публикацию

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

30.10.2012

Да, в 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, эта комбинация обрабатывается ядром (если дело происходит в «настоящем терминале», т. е. в /dev/tty1, например [правда, ситуация может поменяться после переноса VT в userspace]) либо эмулятором терминала (если программа запущена, скажем в gnome-terminal или konsole). А запущенное приложение получает EOF (End Of File, конец файла) в чистом виде (а не саму комбинацию клавиш или символ Ctrl-D). То есть как если бы ввод просто закончился. Иными словами, getchar в приложении возвращает EOF, а read — 0.

В Windows Ctrl-Z воспринимается просто как один из символов, и getchar вернёт просто код этого символа. И некоторые программы (например, наш type) воспринимают этот Ctrl-Z как конец файла. Поэтому в остальных программах Ctrl-Z может не работать.

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

Аналог /dev/null — это файл nil. Причём он как бы присутствует в каждой папке. Это, видимо, тянется со времён старых версий DOS'а, когда не было папок. Поэтому нельзя создать файл с именем nil (и с именами остальных устройств, о которых речь пойдёт дальше). Также, если вам в cmd-скрипте понадобилось проверить существование папки с именем foo, проверьте сущетвование файла foo/nil. Ведь nil есть в каждой папке. Таким образом, проверка существования папок и файлов в cmd-скриптах сделана куда менее красиво чем в UNIX'е (в UNIX'е проверка файла с именем foo делается так: [ -f foo ], а папки с именем foo — так: [ -d foo ]).

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

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

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

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

/dev, /dev/sda1, ...

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

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

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

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

cmd1 | cmd2, так же, как и в UNIX. Причём перенаправления появились ещё в DOS'е, а вот пайпы появились только в винде (ещё бы, ведь для пайпов нужна мультизадачность).

/etc/fstab

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

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

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

Правда, тут возникает вопрос: а как подредактировать реестр, не загружаясь в него? Хм, я для этого использовал Windows PE, который входил в комплект пиратской сборки винды, поэтому я подробности рассказывать не буду.

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

Есть ещё один вариант: сперва почистить реестр, а потом копирнуть винду. Однако, я это не проверял. Не факт, что винда даст вам отредактировать этот ключ реестра и что она не заполнит его снова при выключении. Можно сделать так: отредактировать реестр, и сразу же, не выключая комп, копирнуть запущенную винду на другой раздел. Но и это тоже не проверялось. И вот вам ещё бонусный вариант: если вы копируете винду с одного физического диска на другой, можно после копирования вынуть из компьютера старый физический диск и загрузиться в новый хотя бы один раз (чтоб винда обновила MountedDevices). Потом можно вставить старый диск обратно. Такой же трюк можно проделать даже с разделами на одном физическом диске: просто временно удалить старый раздел, а потом восстановить его обратно (ясно, что делать это нужно крайне осторожно). Ну и конечно же, всё это не проверялось. :))

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

/boot/grub/grub.cfg

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

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

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

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

echo 

UNIX:

echo foo 

set -x

set +x

pwd




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

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

При копировании материалов ссылка на HackZone.RU обязательна

Добавить страницу в закладки

 Детали
Категория: Прочее
Опубликовал: superhacker
Просмотров: 9026
Проголосовало через SMS: 0
  Разместить у себя на сайте
Прямая ссылка
HTML
BBCode ссылка
BBCode ссылка с текстом

 Комментарии (оставить свой комментарий можно здесь)
Одной из особенностей PowerShell'а является то, что он «понимает» обычные UNIX'овые команды, например, ls.
Уточни, что этот ls и иже с ним являются алиасами (см. alias) на powershell-овские командлеты. Для лучшего понимания сути.
31.10.2012 / numlock
Только зарегистрированные пользователи могут оставлять комментарии

Зарегистрироваться *** Авторизоваться


 Последние новости и статьи  Последние сообщения с форумов
  • Самозащита от вируса Petya
  • Google Pixel взломали за 60 секунд
  • В CMS Joomla обнаружена критическая 0-day уязвимость
  • ФБР не смогло взломать протокол шифрования переписки террористов ...
  • Полиция обыскала дом предполагаемого создателя платежной системы ...
  • Google: квантовый ПК будет в 100 млн раз быстрее стандартных чипо...
  • "Лаборатория Касперского" констатирует усиление атак кибергруппир...
  • Microsoft Edge откроет исходные коды ChakraCore
  • Anonymous объявили 11 декабря «днём троллинга» ИГИЛ
  • Миллионы телевизоров, смартфонов и маршрутизаторов оказались уязв...

    Все новости... Все статьи... Прислать новость RSS
  • Разное / Предложения работы » Куплю пароли обнальщиков
  • Взлом и безопасность / Новичкам » Re: Взлом Whatsapp.Viber.Instagram. facebook.Узнаем взломаем...
  • Разное / Предложения работы » Re: Услуги хакера и взлом на заказ Заказать взлом? - пишите ...
  • Взлом и безопасность / Новичкам » Взламать фейсбук
  • Разное / Предложения работы » Re: Нужен взлом Вайбер
  • Разное / Предложения работы » Есть ли настоящая возможность украсть переписку Viber?
  • Разное / Предложения работы » скачать дистрибутив с фтп
  • Взлом и безопасность / Новичкам » Re: Профессиональные услуги по взлому
  • Взлом и безопасность / Программы » Re: Взлом программы
  • Разное / Предложения работы » Re: Нужен взлом вконтакте

    Все форумы... RSS


  • Разместить рекламу
    © HackZone Ltd. 2007-2012. Все права зарегистрированы.
    Перепечатка материалов без согласования и указания источника будет преследоваться по Закону

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    Ya-Cyt службы мониторинга серверов

    #{title}

    #{text}

    x

    #{title}

    #{text}