Когда изучать версию инструмента программирования для командной строки? [закрыто]

12

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

Итак, у меня есть пара вопросов (которые не обязательно являются взаимоисключающими):

1) Когда вы потрудитесь изучить / запомнить команды в версии инструмента для командной строки, которая также поставляется в графической версии?

2) Какие инструменты я должен изучить версию командной строки? .... компиляторы? система контроля версий? и т. д.

explorest
источник
Если инструмент, который вы используете, предоставляет интерфейс командной строки, но не имеет для него достойной документации, то я бы с осторожностью использовал этот инструмент. Если это так, то RTFM. Это не так сложно, и если до этого дойдет, тогда задайте вопрос на StackOverflow.com. Если вам нужно выяснить, как сделать что-то из командной строки, я верю, что вы можете. Если вы не уверены, нужно ли что-то выяснять, то, вероятно, нет. Жизнь полна интересных вещей вне работы, если бы было достаточно времени ...
Иов

Ответы:

21

Я вижу две причины, почему вы должны изучить параметры командной строки программы:

  1. Когда вам нужно каким-то образом автоматизировать программу - сборка скриптов, пакетная обработка и т. Д.

  2. Когда вам нужно оптимизировать поведение программы - уменьшите объем памяти и т. Д.

Относительно того, какие инструменты вы должны изучить - хорошо, это полностью зависит от того, что вы хотите делать дальше.

ChrisF
источник
1
Вы всегда хотите быть в состоянии
1
@ Thorbjørn - это не то, что я сказал? Или я не ясно?
ChrisF
3
Да. Я только что акцентировал внимание на части автоматизации - не понимая, что на начальном этапе это вызовет боль, когда я попытаюсь адаптировать текущие методологии к чему-то пригодному для сценариев.
9

Уже много хороших ответов. Я добавляю еще одну дополнительную точку зрения.

Вы заменяете GUI инструментами командной строки, когда хотите вывести человека из уравнения / процесса. Некоторые причины и / или преимущества для этого:

  • Вы избавляетесь от человеческой ошибки (при повторении команды)
  • Отлично подходит для всех видов автоматизации, например, для развертывания, построения или запуска тестов с рандомизированными входами.
  • Вы становитесь действительно опытным пользователем. Это дает вам возможность подняться по лестнице метапрограммирования. Вам не нужно совершать каждое действие (щелкать по графическому интерфейсу) самостоятельно, вы можете легко написать его!
  • Вы можете связать инструменты вместе (подумайте о каналах Unix).
  • Заставьте компьютеры делать работу - вы не масштабируете, компьютеры делают!

Когда это сделать? Когда вы найдете повторение.

Конечно, есть место и время для графического интерфейса. Но если вы действительно хотите использовать мощь компьютеров и исследовать волну Закона Мура, вам нужно научиться составлять сценарии своих задач.

Изменить : дополнительный бонус. Вы должны носить эту футболку :)

Maglob
источник
7

Мины это:

1) Стать более продуктивным . Для меня это быстрее сделать вещи в оболочке, чем просто нажав. Я говорю об использовании инструмента, а не о настройке службы / инструмента / и т. Д., Потому что иногда быстрее иметь мастера и просто щелкнуть Next Next Next, хотя эти мастера также существуют в версиях для командной строки :)

2) Использовать версию командной строки в ваших приложениях. Например, предположим, что вы хотите конвертировать PDF в текстовый файл . Если вы используете версию с графическим интерфейсом, это нормально. Но если он также предоставляет интерфейс командной строки, где вы можете сделать что-то вроде:, ./pdf2text input.pdf output.txtто, если вам нужно разработать приложение, которое читает текст из PDF, вы можете легко использовать его, не используя никаких API или каких-либо настроек ... ,

3) Изучить общие вещи приложения. Например, если у вас установлен diff в Windows, и интерфейс для сравнения двух файлов. Отлично. Но что, если вам нужно использовать его в Linux ? Вы можете найти такой же интерфейс для Linux, но что, если он не существует? Вам придется снова научиться использовать его в Linux, установить новый интерфейс и привыкнуть к нему. Если бы вы узнали, как использовать версию для командной строки, она вам бы не понадобилась;)

О 3) ... у некоторых людей возникают проблемы с привыканием работать с Git на Windows. Они говорят, что в Windows нет хороших внешних интерфейсов, но если вы просто изучите способ командной строки, у вас не возникнет проблем. Это работает так же. Конечно, проблема в том, что иногда люди боятся командной строки ;)

Я предлагаю вам изучить версии командной строки:

  • Компиляторы типа GCC
  • Отладчики, такие как GDB
  • Git ;)
  • и множество инструментов в GNU / Linux, с которыми вы можете работать в Windows, таких как egrep , awk , find , ...
Оскар Медерос
источник
Yeahhhh +1 для git: D Хотя diff - единственный пример, для которого я бы не использовал настоящую команду; Я предпочитаю vimdiff (хотя, я думаю, технически это тоже терминал)
альтернатива
@mathepic Вы правы, но vimdiffэто также инструмент командной строки, не так ли?
Оскар Медерос
В то же время его ncurses (я думаю, не уверен), поэтому я делаю небольшое различие.
альтернатива
да, но я тоже использую их в качестве инструментов командной строки :)
Оскар Медерос
@mathepic: Ответ на ваш вопрос:gvimdiff
Обмани Райана
3

Зачем вам нужно зафиксировать синтаксис параметра в памяти? Вот почему manсуществует и --help( /?если вы находитесь на земле winblowz).

Я нахожу, что могу найти варианты примерно за минуту. Цель состоит в том, чтобы запомнить, что делают команды , чтобы вы знали, что искать!

Orbling
источник
1

Прагматично, все сводится к тому, отсутствует ли в инструменте GUI какая-либо функция или же она работает быстрее из командной строки.

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

JDL
источник
1
  • Компилятор: будет необходим для автоматизированных сборок
  • Make или ваша система сборки: автоматизированные сборки отлавливают ошибки
  • Контроль версий: я так думаю, но это наименее важный из трех. Но тогда я могу выполнять другие операции командной строки, например, grep через сообщения об изменениях.

Но вам не нужно запоминать опции для компилятора или make; как только они настроены для проекта, вам не нужно часто их менять.

Брайан Карлтон
источник
1

Я считаю, что преимущества изучения инструмента командной строки намного превосходят преимущества использования графического интерфейса. Во многих случаях GUI теряет функции, однако было бы несправедливо утверждать, что это всегда так (например, посмотрите на cmake в Windows - нет никаких причин использовать командную строку за пределами обычных обстоятельств).

Что касается запоминания, то нет особой необходимости запоминать набор команд этой программы при первом использовании. Просто добавьте в закладки руководство (если вы используете онлайн-руководство, в противном случае используйте «man» в * nix), и если вам нужна определенная функциональность (которую вы не запомнили), просто обратитесь к руководству. Запоминание этих вещей должно происходить естественным путем. Например, я часто запускаю «tar» и «gzip» из командной строки, но мне придется обращаться к руководству для выполнения задач, которые я обычно не выполняю.

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

С уважением,
Деннис М.

бушевал
источник
0

Все, чтобы вы не зависели от X11 / Windows для разработки. Приятно иметь возможность полностью развиваться из терминала.

альтернатива
источник
Я согласен с вами;)
Оскар Медерос
0

Краткий ответ: лучшее время для изменения (т.е. использовать командную строку) сейчас . Настоящие мужчины используют клавиатуру. Настоящие мужчины НЕ щелкают. Период.

Более длинный ответ: в долгосрочной перспективе, помимо того, что он более продуктивен и, следовательно, более ценен (менее вероятно, будет уволен), использование командной строки может / будет / должно сделать вас умнее (из-за существенной практики / запоминания) и здоровее (потому что одновременное использование обеих рук в интерфейсе командной строки вместо одной с помощью мыши больше подходит для эргономики).

Вот очень рекомендуемая статья / эссе « Почему Windows вызывает глупость » на http://www.over-yonder.net/~fullermd/rants/winstupid/1


источник
3
Шутка или нет, что настоящая мужская чушь не выиграет никаких призов, хотя я на 100% согласен с тем, что использование CLI намного более продуктивно, шум от мачо просто тупой.
ocodo
0

Я не уверен, что вы должны когда-либо пытаться запомнить переключатели в инструменте командной строки. Если вы создаете сценарий оболочки или что-то еще для автоматизации какой-либо задачи, вам лучше разобраться со всем этим - потратьте тридцать секунд сейчас, чтобы избежать часов боли, чтобы выяснить, что пошло не так позже. Если вы используете один и тот же инструмент командной строки снова и снова, возможно, вам следует создать сценарий оболочки ...

mjfgates
источник