Неясно, имеет ли смысл все интерфейсы командной строки (CLI) там, и когда / почему их использовать
Подводя итог, я прилагаю все усилия, чтобы начать использовать интерфейс командной строки для всей своей работы в системах 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 ответ
Если вы хотите сделать, как вы заявили, я бы порекомендовал использовать CYGWIN.
Программа установки является зрелой и позволяет вам выбирать, какие команды и функции вы хотите. Значения по умолчанию дадут вам почти все, что вам нужно, а затем вы сможете расширить и настроить позже.
Для начала вам нужно понять разницу между терминалом и командной средой (AKA "shell"). Первая позволяет получить доступ к удаленной или локальной системе на низком уровне, вторая - это то, что запускается при подключении через терминал. Это верно для всех систем, в одних это просто лучше, чем в других. Также стоит отметить, что командные среды содержат встроенные команды, такие как UNIXy ls
и ДОСЫ dir
но во всех системах есть другие инструменты "командной строки", например ifconfig
в Linux и ipconfig.exe
на винде. Может быть трудно различить их, но иногда вы будете сбиты с толку при попытке выполнить команду UNIXy в Windows. Однако многие из лучших инструментов командной строки UNIXy также доступны для Windows, либо через сам CYGWIN, либо через собственные версии. Например, отличный exiftool
что я использую для пакетного переименования фотографий в Linux и Windows.
Таким образом, вы можете заменить терминал чем-то более полнофункциональным, если вам это нужно, например, Lterm2 на вашем Mac, даже у Windows есть пара альтернатив, хотя лично я бы не стал беспокоиться - больше проблем, чем стоит.
В Windows (в любом случае, более новые версии) командная среда по умолчанию cmd.exe
, Это далеко не так многообещающе, как эквивалент Linux BASH
, В Linux BASH является наиболее распространенным стандартом, но вы можете встретить и другие, такие как ASH
Корн Шелл, 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, чтобы помочь автоматизировать установку. Он работает нормально, но все еще не пользуется широкой поддержкой, которую он, вероятно, должен иметь. Создать пакеты для Chocolatey достаточно просто, я сделал это пару недель назад для инструмента разметки 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, используйте его вместо этого! Так много вариантов!