Ваша система Windows предложить выполнить перезагрузку, чтобы полностью активировать подсистему Linux и новые инструменты разработчика. Сделайте это.
Рис. A.2. Диалог включения и отключения компонентов Windows
Установка bash
Теперь можно приступать к установке bash из командной строки! Старая школа, это точно. В меню Start (Пуск) введите в форму поиска «command prompt» («командная строка») и откройте окно командной строки. Затем просто введите bash, и вам будет предложено установить программное обеспечение bash, как показано на рис. A.3. Введите y, и начнется загрузка bash.
Загрузка, компиляция и установка займет определенное время, поэтому наберитесь терпения. Как только процесс завершится, вам будет предложено ввести имя пользователя Unix и пароль. Вы можете выбрать любое имя и пароль, какие пожелаете; они не обязательно должны совпадать с вашими именем пользователя и паролем в Windows.
Рис. A.3. Установка bash в командной строке системы Windows 10
Теперь в вашем распоряжении полноценная командная оболочка bash внутри системы Windows 10, как показано на рис. A.4. Открыв окно командной строки в следующий раз, вы сможете просто ввести команду bash, и оболочка bash будет готова к использованию.
Рис. A.4. Да, мы запустили оболочку bash внутри командной строки в Windows 10!
Командная оболочка bash от Microsoft в сравнении с Linux
Пока командная оболочка bash в Windows больше похожа на курьез, чем на что-то очень полезное, но знать о ее существовании надо. Если в вашем распоряжении имеется только система Windows 10 и вы хотите изучать приемы программирования сценариев командной оболочки bash, попробуйте этот подход.
Если вы серьезно относитесь к Linux, вам лучше подойдет вариант с установкой Linux в качестве второй операционной системы или запуск Linux в виртуальной машине (попробуйте решение виртуализации от компании VMware).
И тем не менее поблагодарим Microsoft за добавление bash в Windows 10. Это очень круто.
Приложение Б. Дополнительные сценарии
Мы не могли утаить от вас эти сокровища! Работая над вторым изданием книги, мы написали несколько дополнительных сценариев на всякий случай. В итоге они нам не понадобились, но нам не хотелось хранить их в секрете от наших читателей.
Первые два дополнительных сценария предназначены для системных администраторов, которым приходится управлять перемещением или обработкой большого количества файлов. Последний сценарий предназначен для пользователей Интернета, ищущих веб-службы, которые так и просят преобразовать их в сценарий командной оболочки. На этот раз мы использовали сайт, помогающий следить за фазами Луны!
№ 102. Массовое переименование файлов
Системным администраторам часто приходится перемещать большое количество файлов из одной системы в другую, и вполне обычное дело, когда файлы в новой системе требуют совершенно иной схемы именования. Когда файлов немного, это легко можно сделать вручную, но, когда требуется переименовать сотни и тысячи файлов, решение задачи лучше поручить сценарию командной оболочки.
Код
Простой сценарий в листинге Б.1 принимает два аргумента с текстом для поиска и замены и список файлов, которые требуется переименовать (может также включать шаблонные символы).
Листинг Б.1. Сценарий bulkrename
··#!/bin/bash
··# bulkrename — переименовывает указанные файлы, замещая текст в их именах.
··printHelp()
··{
····echo "Usage: $0 −f find −r replace FILES_TO_RENAME*"
····echo −e "\t-f The text to find in the filename"
····echo −e "\t-r The replacement text for the new filename"
····exit 1
··}
··while getopts "f: r: " opt
··do
····case "$opt" in
······r) replace="$OPTARG";;
······f) match="$OPTARG"··;;
······?) printHelp········;;
····esac
··done
··shift $(($OPTIND — 1))
··if [-z $replace] || [-z $match]
··then
····echo "You need to supply a string to find and a string to replace";
····printHelp
··fi
··for i in $@
··do