Windows. Вирусы. Ноутбуки. Интернет. Office. Утилиты. Драйверы

Проста и в принципе всем хороша. Только вот версия Git, там не самая свежая, по крайней мере сейчас. Но ее вполне достаточно для повседневной работы с Git. Если мы посмотрим версию, то увидим:

$ git --version
git version 1.9.5.msysgit.0

Но если вдруг надо что-то более свежее, то можно установить Git из пакетов Cygwin . Для этого естественно нужно установить и сам Cygwin. В этом нет ни чего сложного. Идем сюда и качаем установщик. Это именно установщик , а не дистрибутив . Так как он качает все пакеты из сети. И кроме того, его же надо использовать чтобы обновить установленные пакеты или установить новые.

И так качаем

И запускаем установщик

Делай раз, два, три

В любом случае, если что-то потом понадобится, то можно скачать и установить. Как видим версия Git в данном пакете 2.1.4, что уже явно посвежее 1.9.5. Хотя под Linux и Mac OS X уже доступен 2.3.1.

На всякий случай приведу еще парочку быстрых серверов для загрузки

Этот вообще просто сказка

Ну вот все и установилось

Запускаем и видим что при первом запуске нам сообщают где находятся конфигурационные файлы:

На рисунке справа видно где находится домашний каталог пользователя. Это папка установки (в моем случае C:\cigwin64 ), далее папка home , затем папка с именем пользователя и в ней уже файлы конфигов .bashrc , .bash_profile , .inputrc и .profile .

Вся конфигурация терминала делается в этих файлах. Тут описывать это не буду, так как это большая отдельная тема.

Замечу лишь что основные настройки bash делаются в файле .bash_profile .

Так же можно отметить, что в домашнем каталоге так же будет размещаться и файл настроек Git – .gitconfig

Кроме того, настроить внешний вид терминала можно кликнув по иконке терминала в левом верхнем углу и выбрав Options.

Если вам нужны какие-то дополнительные пакеты для Cygwin, то поискать их можно .

После всех настроек мое окно терминала Cygwin выглядит так. И тут же посмотрим версию установленного Git.

Ну вот у нас и полноценный Git. Теперь (быстренько) проверим его работу на реальном репозитории.

Все работает.

P.S. Что еще раз стоит отметить, так это то, что глобальные и системные (global, system) настройки msysGit и Git установленного из Cygwin хранятся в разных местах, и друг другу ни как не мешают и не перекрывают, на мой взгляд это удобно, поскольку все виндовые тулзы пытаются записать свои настройки в глобальный файл настроек.gitconfig и это может, иногда, создавать не удобства и путаницу.

Любители работать в консоли, подобной консоли линукса, могут установить себе Cygwin, юникс подобную среду, где будут доступны стандартные консольные программы из линукса.

Ставится Cygwin довольно просто. В процессе установки в одном из режимов можно выставить флажки напротив программных пакетов, которые вы хотите установить. Я выбрал себе пакеты nano, git и что-то ещё.

После инсталляции на рабочем столе появляется ярлычок Cygwin для запуска среды.

Запуск Cygwin из любой папки

Так как я пользуюсь TotalCommander-ом, мне удобно запускать программы сразу из нужной мне директории. Создадим удобный bat-файл для запуска Cygwin.

Сразу, без долгих размышлений, копируем строку "Объект" из свойства этого ярлыка в новый созданный нами файл C:\bin\bash.bat
Полное содержимое файла будет выглядеть так:

@start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -

Обратите внимание на то, что путь до exe-файла у вас может быть другим. У себя я установил Cygwin в директорию C:\cygwin .
Также если директория C:\bin у вас ещё не добавлена в переменную окружения PATH , то это следует сделать.

Настройка запуска Cygwin

После некоторой работы с Cygwin я обнаружил, что не смотря на то, что запускать Cygwin я могу из любой директории, просто прописав слово bash , сама же запускаемая среда всегда открывается в домашней директории вашего пользователя. (Домашняя директория установлена в переменной окружения HOME ).

Это выглядит не очень удобно, ведь если я пишу команду bash , находясь в директории D:\xyz , то я и рассчитываю, что запущенный Cygwin также будет находиться в директории D:\xyz .

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

Man mintty

После внимательного изучения мануала, мы радуемся некоторым возможностям, о которых не подозревали, а именно: возможности задать размеры и координаты запускаемого окна Cygwin.

Открываем наш bat-файл и изменяем его содержимое на следующее:

@start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico --size 120,77 --position -4,0 -

В данном случае я установил нужный мне размер окна Cygwin и позицию появления окна (отрицательное значение -4 нужно, чтобы кромка окна оказалась за границей монитора, и её не было видно).

Теперь моё окно будет всегда появляться в удобных мне координатах, а не будет смещаться при каждом новом запуске на +8 пикселей по x,y.

Но как же быть с директорией запуска Cygwin?

Ведь переходить в нужную директорию из домашней - жутко не удобно!

Решение было найдено! Для установки текущей директории при запуске Cygwin мы можем использовать скрипт автозапуска для запускаемой среды bash .

Значит нам нужно усовершенствовать наш bash.bat файл таким образом, чтобы он создавал файл автозапуска для запускаемой консоли bash

Запускаем Cygwin, вводим команду "man bash " и читаем документацию в поисках необходимого нам. Находим несколько вариантов имён файлов для домашней директории пользователя, который запускаются при авторизации в bash.
Файлы, запускаемые при авторизации в bash :

~/.bash_profile ~/.bash_login ~/.profile

Файл, запускаемый при запуске "bash без авторизации в нём

~/.bashrc

Важное замечание : файл автозапуска ~/.bash_login (или любой другой) должен быть написан в кодировке UTF-8! И не должен использовать символы \r . (Например команда pwd у меня не выполнялась, когда файл содержал в конце символ \r , свойственный системе Windows).

Как оказалось, вывести UTF-8 текст из CMD не так-то просто, но возможно!
Вот пример, как это делается:

Cmd /u /c chcp 65001 | echo некий текст >"имя_файла"

Усовершенствуем наш C:\bin\bash.bat файл, теперь он имеет содержимое:

@echo off SET file=.bash_login cmd /u /c chcp 65001 | echo #!/bin/bash > "%HOME%\%file%" cmd /u /c chcp 65001 | echo cd "%CD:\=/%" >> "%HOME%\%file%" @start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico --size 120,77 --position -4,0 -

После запуска, консоль bash выполняет содержимое файла ~/.bash_login . Этот файл должен быть в формате UTF-8. Для этого мы вызываем CMD cо флагом /u , который сообщает, что запускаемая консоль должна возвращать результат в формате UTF-8.

Как можно увидеть, мы передаём две команды, разделённых знаком | . Данный знако позволяет записать две нужных нам команды в одну строку.

Первая команда chcp 65001 устанавливает кодировку UTF-8 в запущенной консоли. (Чтобы узнать, какая текущая кодировка установлена в консоли, достаточно вызвать команду chcp без параметров.)

Вторая команда echo текст > "%HOME%\%file%" печатает соответствующий текст в файл с именем "%HOME%\%file% ", где имена переменных развёртываются в путь к домашней директории и имени файла .bash_login .

Обратите внимание на необычное обращение к переменной CD , в которой содержится текущий каталог cmd-консоли. Если обычно переменная развёртывается записью

То в нашем случае, мы используем запись

%CD:\=/%

Что позволяет сразу заменить все слеши в стиле Windows \ на слеши в стиле Linux / .

Не забываем помещать все имена файлов и директорий в двойные кавычки, таким образом это позволит попадать в директории содержащие пробелы.

За счёт того, что используется UTF-8, данная конструкция успешно позволяет открывать Cygwin в директориях с русскими именами.

Таким образом, при каждом запуске в консоли команды bash , будет запускаться скрипт C:\bin\bash.bat , который перезаписывает файл автозагрузки среды bash в Cygwin. Теперь мы можем легко и удобно запускать консоль bash из любой директории и сразу попадать в эту же самую директорию в bash-консоли.

Радуемся и наслаждаемся результатом!

Подведём итоги

  1. Мы установили Cygwin
  2. Создали файл C:\bin\bash.bat с содержимым @echo off SET file=.bash_login cmd /u /c chcp 65001 | echo #!/bin/bash > "%HOME%\%file%" cmd /u /c chcp 65001 | echo cd "%CD:\=/%" >> "%HOME%\%file%" @start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico --size 120,77 --position -4,0 - (Заметка: путь C:\bin\ должен содержаться в переменной окружения PATH )
    За счёт этого мы добились:
    • запуска терминала Cygwin в указанной позиции экрана (параметр --position )
    • запуска окна определённого размера (параметр --size )
    • запуска Cygwin из любой директории, набрав в консоли слово bash
    • при этом запущенный Cygwin располагается в той же директории, откуда был запущен!

Скрипт cygwin.bat выполняется из командной строки DOS, устанавливает среду Cygwin и запускает интерпретатор bash под Windows. Cygwin прекрасно настраивает переменные Unix-окружения в соответствии с переменными окружения Windows. Например, на своей машине, я вошел в Windows, как пользователь bjohnson. Когда я запускаю Cygwin , он по умолчанию загружается под управлением пользователя bjohnson.

Ниже представлено окно с некоторыми стандартными Unix-командами в Cygwin .


В зависимости от установленных вами пакетов, вы легко можете запускать соответствующие Unix-утилиты. Если вы пользователь Unix, вам, несомненно, хотелось бы, чтобы в Windows была команда ps для просмотра выполняемых в настоящее время процессов без использования Task Manager . Если вы используете флаг -aW , вы сможете увидеть процессы Windows, как и любые запущенные процессы Cygwin . Ниже представлен список Windows-процессов, доступный в результате выполнения Cygwin команды (ps -aW | less ).

PID PPID PGID WINPID TTY UID STIME COMMAND 3193213 0 0 4291774083 ? 0 Dec 31 C:\WINDOWS\SYSTEM\KERNEL32.DLL 63753 0 0 4294903543 ? 0 Dec 31 C:\WINDOWS\SYSTEM\MSGSRV32.EXE 60569 0 0 4294906727 ? 0 Dec 31 C:\WINDOWS\SYSTEM\MPREXE.EXE 77349 0 0 4294889947 ? 0 Dec 31 C:\WINDOWS\SYSTEM\RPCSS.EXE 196093 0 0 4294771203 ? 0 Dec 31 C:\WINDOWS\SYSTEM\mmtask.tsk 191237 0 0 4294776059 ? 0 Dec 31 C:\WINDOWS\EXPLORER.EXE 237709 0 0 4294729587 ? 0 Dec 31 C:\WINDOWS\TASKMON.EXE 230713 0 0 4294736583 ? 0 Dec 31 C:\WINDOWS\SYSTEM\SYSTRAY.EXE 217533 0 0 4294749763 ? 0 Dec 31 C:\PROGRAMFILES\DIRECTCD\DIRECTCD.EXE 5.1.

Структура директорий и полномочия доступа к файлам

Cygwin монтирует ваши локальные диски в директории /cygdrive . Сюда входят разделы жесткого диска, дисководы, устройства для чтения компакт-дисков, устройства для чтения ZIP . Выполним команду df на моей машине. Получим структуру, подобную той, что приведена ниже.

Bjohnson@BRADMAN $ df Filesystem 1k-blocks Used Available Use% Mounted on C:\cygwin\bin 2096832 0 2096832 0% /usr/bin C:\cygwin\lib 2096832 0 2096832 0% /usr/lib C:\cygwin 2096832 0 2096832 0% / c: 2096832 0 2096832 0% /cygdrive/c d: 670496 670496 0 100% /cygdrive/d

После установки Cygwin я указал инсталлятору сохранить файлы в директорию C:\cygwin\ . Cygwin использовал эту директории в качестве корневой точки монтирования файловой системы . Он смонтировал C:\cygwin\ bin на /usr/bin и C:\cygwin\lib на /usr/lib . В директории /usr/bin , /bin , и /usr/local/bin были добавлены переменные окружения Cygwin (но не Windows). Директории из среды окружения Windows были импортированы в среду Cygwin , чтобы иметь к ним доступ.

Cygwin также использует разумную систему полномочий доступа для Unix-файлов. Но что это может означать для всех ваших Windows-файлов? Кто владелец файлов , и какие полномочия установлены по умолчанию? Запустим команду ls -al на несколько Windows-файлов, чтобы получить ответ.

bjohnson@BRADMAN /cygdrive/c/cyginstall $ ls -al total 273 drwxr-xr-x 1 bjohnson unknown 0 Mar 13 17:48 . drwxr-xr-x 1 bjohnson unknown 0 Dec 31 1969 .. drwxr-xr-x 1 bjohnson unknown 0 Mar 13 18:06 contrib drwxr-xr-x 1 bjohnson unknown 0 Mar 13 18:03 latest -rwxr-xr-x 1 bjohnson unknown 218112 Mar 13 17:48 setup.exe -rw-r--r-- 1 bjohnson unknown 60607 Mar 13 17:54 setup.ini

Cygwin попытается получить информацию о владельцах файла (пользователе и группе) из Windows. Пока я использовал машину под управлением Windows 98 с одним пользователем, все файлы принадлежали мне (bjohnson) с указанием в качестве группы "unknown". Это устанавливало полномочия для всех Windows-директорий и исполняемых файлов на значение 755 (чтение и выполнение для всех, запись только для владельца) и устанавливала всем файлам Windows полномочия 644 (чтение для всех, запись только для владельца). Выполнение команды chmod для Windows-файлов игнорируется.

Cygwin (Сигвин) представляет собой набор Unix программ и библиотек, скомпилированных под ОС Windows и размещенных в файловой системе таким же образом как и в настоящем Unix-е. Благодаря этому мы получаем полный эквивалент Unix среды начиная от bash и вплоть до компиляторов gcc, которыми без особого портирования исходного кода можно собирать проекты для выполнения в Windows (достаточно большое количество кросс-платформенных приложений используют такой подход, так как он наиболее простой и быстрый).

Установка Cygwin

Скачать Cygwin для 32х или 64х - разрядной версии можно на сайте https://cygwin.com/install.html . Установка весьма простая - можно просто нажимать "Далее" до окна выбора пакетов (Select Packages). Тут перед вами откроется база пакетов, причем некоторые из них уже будут отмечены для остановки (базовы), другие вы можете отметить сами. Для того, что бы отметить пакет на установку, нужно ввести его имя в поле "Search", затем раскрыть категории и найти этот пакет. Потом нажать "Skip", в результате чего вместо Skip должна появится версия, которая будет установлена. Для дальнейшей работы отметьте пакет wget , остальное можно пока не трогать. Пакеты можно будет доустановить или удалить в любой момент времени, просто повторно запустив установщик, но это не совсем удобно, поэтому дальше в статье я расскажу как устанавливать пакеты из командной строки (для этого нам и понадобится wget).

По дефолту cygwin запускается в стандартном терминале Windows, что не очень удобно.

Терминал Console

Установка пакетов для python с помощью pip

Пакеты в python часто устанавливаются с помощью pip, которого нету в репозиториях сигвина.

Поэтому его нужно установить отдельно:

MAN-страницы для функций libc

Cygwin уже содержит мануал-страницы для стандартных команд, однако man для функций libc можно установить отдельно:

Кстати Cygwin в некотором роде связан со встраиваемыми системами, так как использует Newlib реализацию libc, которая как известно повсеместно применяется в разных ARM-тулчейнах.

Vim в Cygwin

Установка:

Настройка выполняется в файле.vimrc в домашней директории:

Я пользуюсь такими настройками:

set backspace=indent,eol,start

Syntax enable

set shiftwidth=4

set tabstop=8

set softtabstop=4

set expandtab

set number

set showcmd

set cursorline

filetype indent plugin on

set wildmenu

set lazyredraw

set showmatch

set incsearch

Использование "родного" терминала Cygwin Terminal

Стандартный установщик Cygwin предоставляет свой терминал mintty (запускается через иконку Cygwin Terminal). В сравнении с Console он немного уступает в функциональности (например в нем нет вкладок), но он также имеет неплохой функционал, да и телодвижений меньше. Одной из приятных возможностей выступает поддержка 256-ты разрядных цветов в терминале:

Это позволяет использовать удобные темы подсветки синтаксиса для vim, например badwolf:

Для её активации, в.vimrc надо добавить:

Выглядить это будет так:

Как сделать чтобы сохранялась история команд в bash cygwin?

В файле.bashrc нужно найти добавить:

В первой указывается размер файла истории (10 тысяч команд), во второй включается удаление дубликатов команды (если введенная команда уже есть в истории, то старая удаляется для экономии места), и в третьей включается ведение истории bash.

Как в Cygwin перейти по пути заданному в стиле Windows?

Для первращения win-подобного пути в unix-style путь можно использовать утилитку cygpath.

В результате путь превратится в "/cygdrive/d/projects/some/src" и передастся как аргумент cd.

Если вы иногда все же используете операционную систему от Microsoft, вам, наверное, очень нужны некоторые утилиты Linux в windows. Было бы очень удобно использовать стандартные утилиты командной строки для фильтрации вывода, сортировки, фильтрации и потокового редактирования, в Windows, где такие функции не поддерживаются.

Для реализации этого есть несколько решений. В этой статье мы рассмотрим только два из них. Первое, о котором вы, возможно, уже слышали, а может, уже и используете - Cygwin. Второе, нечто более интересное и новое - Cash. Начнем с Cygwin. В последней версии Windows 10 появилось и третье решение - возможность нативно, с помощью специальной подсистемы. Об этом читайте в отдельной статье.

Cygwin - это набор инструментов, обеспечивающий Unix подобную среду в Windows. Здесь нельзя запускать уже существующие утилиты для Linux. Для того чтобы выполнить linux команду из Windows Cygwin, ее нужно сначала перекомпилировать.

Тем не менее пересобрано уже достаточно много программного обеспечения. Cygwin даст вам Linux подобную среду со многими утилитами, к которым вы уже привыкли в Linux. Его можно использовать как для стандартных утилит таких как команда cp windows, так и для подключения к удаленному серверу по ssh.

Установка Cygwin

Как и другие программы Windows, Cygwin устанавливается с помощью установщика в формате.exe. Скачать его можно на официальном сайте.

Для установки вам придется пройти несколько шагов мастера, по умолчанию программа будет установлена в C:\Cygwin:

С установочным пакетом не поставляется полный набор окружения. Оно будет загружено в процессе установки. В этом окне нужно выбрать сервер для загрузки компонентов:

Затем необходимо выбрать пакеты, которые нужно загрузить и установить. Доступно довольно-таки много программ и они рассортированы по категориям. Если вы не знаете нужен ли вам тот или иной пакет, оставьте значение по умолчанию. Вы сможете установить их потом:

Осталось только нажать Next для начала загрузки и завершения установки.

Добавление Cygwin в Path

После завершения установки, чтобы выполнить команды linux в windows с максимальным удобством, желательно добавить папку с исполняемыми файлами Cygwin в переменную среды Path.

Вы можете запустить терминал Cygwin, кликнув по ярлыку на рабочем столе. Откроется терминал с папкой C:\Cygwin\bin

Здесь можно выполнять все нужные linux команды в windows, но вы не сможете их выполнить в другой директории или другом терминале.

Чтобы решить эту проблему, необходимо добавить папку Cygwin в переменную Path. Откройте окно свойства системы с помощью сочетания клавиш Win+Pause/Break, затем выберите пункт Дополнительные параметры системы на левой панели:

На вкладке дополнительно выберите Переменные среды :

Найдите в списке переменную Path и нажмите Изменить :

Добавьте в конец строки вот такую запись:

Обратите внимание, что все пути должны быть разделены точкой с запятой. Осталось нажать Ок и тестировать выполнение Linux команд в Windows.

Cash

Это кое-что совсем новое. Утилита с открытым исходным кодом Cash, это кроссплатформенная реализация командной оболочки Linux на JavaScript. Цель этого проекта обеспечить более гибкую, простую альтернативу Cygwin, для тех кто хочет чувствовать себя в WIndows, как и в Linux.

Установив Cash, вы сможете выполнить linux команду из windows в любом эмуляторе терминала, в том числе в стандартной командной строке Windows.

На данный момент поддерживаются только некоторые утилиты linux для windows. Вот список поддерживаемых:

  • alias
  • clear
  • export
  • false
  • mkdir
  • source
  • touch
  • unalias

Так как утилита еще находится на стадии разработки, то список команд Linux в Windows будет постоянно увеличиваться. Вы также можете проголосовать за добавление команд которые вам нужны.

Вот как все работает:

Что самое интересное, вы можете комбинировать Windows и Linux команды. Например, вы можете выполнить:

ipconfig | grep IPv4 | sort

И команда правильно отработает. Сначала выполнится ipconfig, а затем результат будет отфильтрован с помощью Grep.

Установка Cash в Windows

Я буду устанавливать Cash в Windows 10. Это делается очень просто и работает также в более старых версиях Windows. Поскольку Cash основан на JavaScript для его работы необходимо установить Node.js. Скачать Node.js можно на официальном сайте:

После того как Node.js Будет установлена, можно переходить к установке Cash. Его можно установить в нескольких режимах:

  • Ручное использование Cash - нужно выполнить cash чтобы начать запускать linux команды
  • Глобальное использование - linux команды доступны во всех терминалах windows
  • Установить только некоторые команды - вы можете выбрать компоненты для установки если не хотите ставить все

Для установки Cash глобально откройте командную строку Windows с помощью Win+R:

npm install cash-global -g

Установка может занять несколько минут, в зависимости от скорости вашего интернет-соединения. После завершения установки вы можете сразу тестировать Linux команды в Windows.

Выводы

Как я уже говорил, проект Cash еще на стадии разработки и есть вероятность что вы столкнетесь с ошибками. Не забудьте сообщить о найденных ошибках разработчикам, чтобы помочь улучшить проект. Если для вас критична стабильность лучше использовать старый добрый Cygwin.

Нам, пользователям Linux нечасто понадобиться использование unix команд в windows и такие инструменты. Мы можем использовать Linux команды напрямую в нашей системе. Но если вы по каким-либо причинам не можете установить Linux, и все же хотите использовать linux команды, это может быть отличным решением.

Об авторе

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

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ: