1

В качестве предыстории я прилагаю умственные усилия, чтобы начать использовать интерфейс командной строки для всей своей работы в системах Windows, Mac OSX и LINUX. Это правда, что у нас гораздо больше гибкости в командной строке по сравнению с графическим интерфейсом, и я легко это вижу.

Моя проблема в том, что я быстро теряюсь в лесу терминов, CLI, этой системы, работающей с проблемами этой системы и т.д. И т.д. Я обычно гуглю / вики конкретную программу, но мне трудно "склеить" их все все вместе.

Я был бы признателен, если бы кто-то связал их связно.

Например: на моем Mac OSX я установил «Iterm2» в качестве интерфейса командной строки. В моей системе LINIX я понимаю, что «Терминатор» - хороший вариант, и я планирую его использовать. Поскольку я также хочу использовать CLI в Windows, я установил conEmu, что до сих пор было хорошо.

Теперь ... вот где это сбивает меня с толку ...: В моей системе Windows я также установил git через mysgit. Это дает мне «gitBash». В gitBash я могу использовать команды LINUX, но не команды Windows DOS. В командной строке Windows я могу использовать команды DOS, а не команды LINUX. Однако я хотел бы использовать команды LINUX только в Windows, и поэтому (мне сказали), что Cygwin является хорошим соперником? Но почему, когда у меня есть gitBash? Это имеет значение? Могу ли я выполнить любую команду Windows через эмулятор LINUXy, например, gitBash/Cygwin?

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

Моя конечная цель - просто иметь возможность использовать команды LINUX на моем компьютере с Windows из интерфейса командной строки, без суеты, если это возможно. Я теряюсь во всех деталях.

Спасибо.

1 ответ1

2

Если вы хотите сделать, как вы заявили, я бы порекомендовал использовать CYGWIN.

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

Для начала вам нужно понять разницу между терминалом и командной средой (AKA "shell"). Первая позволяет получить доступ к удаленной или локальной системе на низком уровне, вторая - это то, что запускается при подключении через терминал. Это верно для всех систем, в одних это просто лучше, чем в других. Также стоит отметить, что командные среды содержат встроенные команды, такие как UNIXy ls и DOSy dir но во всех системах есть другие инструменты "командной строки", например, ifconfig в Linux и ipconfig.exe в Windows. Может быть трудно различить их, но иногда вы будете сбиты с толку при попытке выполнить команду UNIXy в Windows. Однако многие из лучших инструментов командной строки UNIXy также доступны для Windows, либо через сам CYGWIN, либо через собственные версии. Например, отличный exiftool который я использую для пакетного переименования фотографий как в Linux, так и в Windows.

Таким образом, вы можете заменить терминал чем-то более полнофункциональным, если вам это нужно, например, Lterm2 на вашем Mac, даже у Windows есть пара альтернатив, хотя лично я бы не стал беспокоиться - больше проблем, чем стоит.

В Windows (в любом случае, более новые версии) командная среда по умолчанию - cmd.exe . Это далеко не так многообещающе, как эквивалент Linux BASH . В Linux BASH является наиболее распространенным стандартом, но вы можете встретить другие, такие как ASH , Korn Shell, SH и другие. В действительности Windows предоставляет несколько других командных оболочек, наиболее распространенной и мощной из которых является PowerShell. PowerShell настолько мощен, потому что он может использовать и предоставлять интерфейсы для большинства библиотек .NET, многие из которых делают все умные вещи. Это также выбранная Microsoft административная оболочка, поэтому вы используете ее для обслуживания удаленных систем (как серверов, так и клиентов) и даже облачных сервисов, таких как Office 365 и Azure. Если вы хотите стать Гуру системы Windows, PowerShell - это необходимое средство обучения.

Вернемся к вашему вопросу. Вы можете легко запустить BASH через CYGWIN, который установит его и ряд вспомогательных команд. CYGWIN не только дает вам UNIXY способ взаимодействия с дисками, файлами и папками на компьютерах с Windows, но также делает доступными такие вещи, как реестр Windows, аналогичным образом.

Конечно, есть и другие ограничения. Начнем с того, что расположение папок в Windows всегда будет отличаться от хостов Linux или MAC, и вам придется учитывать это в любых написанных вами скриптах, если вы хотите, чтобы они работали на всех платформах.

Конечно, вы можете продолжать использовать gitBASH, но вы, вероятно, обнаружите, что в нем нет некоторых команд, которые, как вы ожидаете, будут доступны. Вы должны просто попробовать и посмотреть. Если вы пойдете по этому пути, то, когда вы найдете отсутствующую команду, вы можете просто найти ее в сети, она может быть доступна как собственный исполняемый файл Windows и, следовательно, должна использоваться из gitBASH, если она помещена в папку в вашем PATH.

Пояснение 1. Если вы привыкли к Linux, вы будете знакомы с тем фактом, что в каждом дистрибутиве есть "менеджер пакетов", который помогает в установке программного обеспечения из признанных и (мы надеемся) надежных источников. Они помогают обеспечить наличие всех необходимых компонентов и зависимостей. CYGWIN использует свой "установщик" для той же цели, хотя это намного проще. Помните, что большинство инструментов Linux скомпилированы для использования в Linux (как правило, вам нужно знать тип используемого вами процессора, плюс вам нужна загрузка внутренних зависимостей от "ядра" Linux). Для использования команд Linux в Windows требуется, чтобы все они были перекомпилированы для работы на платформе Windows. Существует вспомогательная библиотека, которая позволяет сделать это относительно безболезненно (MSYS? во всяком случае, вам не нужно это знать).

Вы правы, говоря, что Chocolatey - это попытка создать менеджер пакетов для Windows. Одним из главных недостатков Windows является отсутствие единого, надежного, общепризнанного источника пакетов - или "Магазина приложений", как сейчас повальное увлечение называть эти вещи! С помощью W8 Microsoft пытается (не все так хорошо, как следует сказать) исправить это, но в настоящее время она очень ограничена - нацелена на мобильные приложения и приложения ModernUI.

Тем не менее, многие разработчики Windows уже давно используют инструмент под названием NUGET, чтобы упаковать приложения для установки в Windows. NUGET использует PowerShell за кулисами. Chocolately - это набор скриптов, созданных с использованием PowerShell и NUGET, чтобы помочь автоматизировать установку. Он работает нормально, но все еще не пользуется широкой поддержкой, которую он, вероятно, должен иметь. Это достаточно легко создать установки пакетов для шоколадного, я сделал мою первую пару недель назад для инструмента ума отображения Open Source Freeplane.

Но, как вы говорите, нет никакой связи между Chocolatey (используя PowerShell) и BASH на CYGWIN. В вашем примере вам нужно будет решить, где и как вы хотите использовать VIM. Если вы хотите использовать его только в контексте CYGWIN, установите его через установщик CYGWIN. Однако, если вы хотите использовать его в качестве обычного редактора Windows, лучше установить его через Chocolatey. К сожалению, нет простого способа предсказать, что будет лучше. Вы могли бы даже сделать то и другое. С другой стороны, вы можете обнаружить, что некоторые приложения Windows также отлично работают при вызове из BASH, а другие - нет !! Боль да!

ОБНОВЛЕНИЕ 2: я упоминал, что вы должны придерживаться PowerShell! Добро пожаловать в мир кроссплатформенной работы. CYGWIN хочет, чтобы его собственный пакет Python устанавливался для удовлетворения внутренних зависимостей. Использование собственного Windows Python (например, установленного через Chocolately или вручную) может работать, но с другой стороны может не сработать. Нелегкий способ сказать, но очень вероятно, что в конечном итоге вы столкнетесь с проблемой, если у вас не будет установлен пакет Cygwin. Вот почему кто-то еще рекомендовал использовать виртуальную машину, чтобы вы содержали вещи в чистоте и обособленности.

Честно говоря, вам лучше принять, что вам нужно изучать разные инструменты для разных платформ. Это не так сложно. Это действительно зависит от того, что вы хотите сделать. Если вы хотите изучить командную строку Linux, используйте виртуальную машину. Если вы хотите автоматизировать задачи Windows, изучите PowerShell или, если вы уже знаете Python, используйте его вместо этого! Так много вариантов!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .