Shell — секретное оружие Unix :)

    Как я уже написал как-то:
    если не хотите знать про коммандную строку, то в линуксе вам делать нечего. Будет вам та же винда, только вместо одних проблем получите другие…
    --comment605950


    С другой стороны, как раз в shell заключается одно из кардинальных отличий Unix-систем, то, что делает эти системы открытыми

    В чем же основные особенности Unix shell, которых нет в Windows?
    1. Весь процесс конфигурации и администрирования Unix построен на работе с текстовыми файлами. Shell — это полноценный язык программирования, заточенный для манипуляции строками и работы с тектсовыми файлами. К тому же, именно как расширение возможностей shell по обработке строк и возник Великий язык PERL!.
    2. Благодаря п.1 shell — это отличный инструмент для постепенного изучения самой операционной системы.
    3. Наличие shell способствует реализации важного принципа создания любых программ:
      Если это простая программа, которая предназначена для выполнения ограниченного числа операций, ее нужно реализовывать как набор команд, родных для платформы, на которой она работает (как правило, платформой является ОС). Если же имеем дело со сложной интерактивной программой с потенциально неограниченным набором операций — ее нужно реализовывать как язык опять же на родном для платформы носителе (сейчас наиболее родным и удобным носителем при взаимодействии с компьютерами все же является текст, а не звук, графика или что-либо еще).
      Примерами 1-го и 2-го подхода могу служить tcpdump, реализованный полностью в текстовом режиме, над котором не представляет труда надстроить интерфейс (по сути, Ethereal — и есть подобный интерфейс), и emacs — самый расширяемый текстовый редактор.
      В этом проявляется основное отличие философии Unix и Windows: в Win интерфейс програм по умолчанию делается на графическом языке, из-за чего программы практически невозможно сопрягать или строить на их основе новые. Потому что для этого нет поддержки на уровне ОС. И для того, чтобы сделать программы расширяемыми, все равно приходится использовать текст (пример — тот же VBA в Word и Excel).
    4. Автодополнение команд и, что самое главное, путей. Трудно даже представить, сколько времени и сил экономит эта небольшая возможность!
    5. Полный набор утилит для всех возможных задач администрирования.


    Стоит также перечислить утилиты shell, которые обязательно нужно использовать в повседневной работе с системой:
    • man — это справка по ОС, которая включает не только описание работы всех команд, но также и что должно быть в большинстве из конфигурационных файлов, а также много другой полезной информации;
    • less — просмотр текстовых файлов;
    • grep (программистов, не знающих о grep, не берут на работу в Amazon.com :);
    • locate — быстрый поиск файлов.


    а еще можно вспомнить группы утилит, использование которых намного удобнее и эффективнее их графических аналогов:
    • настройки сети (позаимствованные Windows);
    • управления пакетами;
    • управления пользователями;
    • монтирования томов...


    Можно только повториться, что для тех, кто не хочет работать в shell, Linux или другая Unix-based ОС — во многом такая же неудобная и непонятная система, как и Windows. Но стоит все-таки попробовать разобраться с shell — хотя бы для того, чтобы посмотреть, как правильно администрируются информационные системы.
    Поделиться публикацией

    Комментарии 31

      +2
      а позвольте не согласиться с некоторыми выводами
      - man - это конечно весчь, но для кого? для продвинутых.
      - less - а что других альтернатив нету, чтоб так говорить? (обязательно нужно использовать), а для чего?
      - вы никогда, наверное,не работали с командной строкой Win (т.е. вам не знакомо wsh)
      - а нужно ли для десктопа продвинтое управления юзерами, да еще и вкомандной строке(по Вашему в шеле)
      - настройка сети ( а как часто вы настраиваете сеть?)
      - поиск файлов - тоже очень сомнительное преимущество shell перед GUI
      - монтирование томов - повторюсь, а Вам часто это надо? а что automount уже отменили?

      - tcpdump - Ой, а это кому нужно? Нужно ли это бедному клерку, или web-дизайнеру

      Вы бы еще и чистый vi помянули бы для красного словца.
        0
        Я знал, что мой ответ не понравится. Вы тему читали?
        Секретное оружие. Командная строка в Windows - это действительно секретное оружие, и большинство пользователей даже не подозревает об этом.

        зы. Если вы думаете что я собираюсь устраивать холивар, то вы ошибаетесь. Лично я одинаково "стреляю" с двух рук, так же и справляюсь с *nix и MS продуктами.
          0
          Командная строка в Windows — это просто сверхсекретное оружие :)
          потому что то, о чем вы сказали (wsh, powershell) почти ни у кого нет, т.е. максимум можно использовать на своей машине. И вряд ли превосходит возможности unix shell.

          С вашей оценкой утилит не соглашусь. Во-первых, у разных компьютеров/пользователей разные задачи: кому-то нужно менять настроки сети, а кому-то часто тома монтировать, условно говоря. Хорошо, когда все есть под рукой. А те 4 команды (man, less, grep и locate) я вспомнил как раз потому, что преимущества их использования не всем очевидны, но они действительно облегчают жизнь администратору (говорю по себе и по тому, как видел в работе других людей. Но, разумеется, не нужно только на этом концентрироваться). Это, кстати, тоже часть философии Unix: "small pieces loosely joined".
            0
            вот Вы сами правильно заметили "для разных компьютеров/пользователей" и "разные задачи".
            я, например, в качестве pager пользую more, скажите чем плох?
            locate - find
            но, я не работаю с gui, да и пользую больший набор команд.
            perl - оччччень дружественный язык (я не против perlа, я даже работаю с ним, или на нем), попробуйте попросить секретаршу найти какой-нибудь файлик. Что будет она делать?
            Для обыкновенного пользователя знание shellа, не есть обязательное условие. Пользователь должен уметь "жмакать" правильные кнопки и не работать с правами админа.
            Идеология двух различных систем распределения прав. И причем каждая имеет право на существование.
            Сумбурно очень получается, стараюсь сдерживать себя, - одна половина в *nix другая в win.
              0
              У нас недавно на работу пришла пожилая дама, ее обучают винде. Я вижу что у нее плохо получается текст в новый файл скопировать. Не думаю что освоение шелла было бы для нее труднее (если не углубляться в психотипы и методы восприятия информации - текстовой или графической)
        • НЛО прилетело и опубликовало эту надпись здесь
            0
            ну... если Вам это доставляет удовольствие...
            а не проще ли написать скрипт, генерации случайных чисел(символов) и выводить на консоль. :)
            • НЛО прилетело и опубликовало эту надпись здесь
                0
                Вы не только web-дизайнер, у Вас еще с Чувством Юмора все в порядке :)
                0
                я пробовал ) это не столь интересно
                0
                А я люблю запускать матрицу и думать, что это всего лишь вывод tcpdump :)
                0
                man для продвинутых. Боже мой! Именно из подобных мнений вырастают недокументированные проекты, отсутствие вменяемой справки...

                Зачем? Это же все для продвинутых. А мы - мы не. Мы читать это не будем.
                  0
                  Да. Вы читали маны - замечательно. Винда, к сожалению, разучила пользователей думать, но не скудостью хелпов, а более или менее интуитивным интерфейсом. А почитайте виндовые хелпы, написаны для обыкновенного юзера.
                  А почитайте маны(хелпы) опенсорца (я не говорю о серьезных проектах) - хорошо если человек в readme напишет, что манов не будет, что нужно смотреть *.conf.example

                  зы. Я не на чьей стороне.
                    0
                    возможно я сужу предвзято, но в отличие от виновых хелпов, маны мне помогали и помогают находить решения проблем.
                0
                Очень правильно расставили приоритеты. Стоит лишь ввести и пояснить понятие pipe'ов и перенаправлений вывода. Действительно это концептуальный плюс *nix архитектуры и только её.
                  0
                  Почему же, в win32 > вполне себе работает, оно наверное в любой ОС работает :) А вот пайпы можно использовать программно, например, запуская из своей программы консольный nmap и по потокам с ним общаться.
                    0
                    > кое как (и то не помню ньюансов но не слишком гибко, учитывая файлы устройств в юникс) - да, работает. но вот | - уж совсем глубоко зарыто, как программист я могу реализовывать такие схемы, но для администрирования это слишком трудоемко. В юниксах же - это одна из основ консольного управления системой.

                    Благодаря этому, почти все ПО можно с любой алгоритмической сложностью (!) связывать прямо в консоли - почти любая программа выполняет роль процедуры или функции в руках администратора, программирующего запрос в консоль.
                      0
                      Для администрирования уже сделали PowerShell в которой много чего по-другому :)
                    0
                    Вы правильно вспомнили про pipe. Не сомневался, что он всплывет. (Думаю, |, ,>, `` можно отнести к п.1 преимуществ shell)
                      0
                      Вот как раз пайпы и перенаправление любых вводов-выводов есть и в cmd. Начиная с Win2k. А то и с NT. Правда инфа об этом находится, мягко говоря, с трудом.
                    0

                    С другой стороны, как раз в shell заключается одно из кардинальных отличий Unix-систем, то, что делает эти системы открытыми...

                    Всё-таки, есть много всего другого, что делает системы *никс открытыми - открытый исходный код, открытые спецификации, открытые интерфейсы. Ваша идея, конечно, понятна, но всё-таки стоит её пояснить, вдруг некий незнакомый с идеями Юникс человек решит, что Опенсорс это то, что бегает в консоле?
                      0
                      Вы правы. Впрочем, даже unix с закрытым кодом намного открытее некоторых других систем благодаря наличию shell и описанных выше принципов, лежащих в ее основе
                      0
                      Shell - незаменимый помощник администратору. Сам активно юзаю его возможности очень давно и могу с уверенностью сказать, что он дает огромную помощь администаторам и вообще Unix-пользователям. И если сравнивать Unix Shell и альтернативу в Windows, имхо, в Unix системах она реализована более гибкой и функциональное, нежели в Windows.
                        +1
                        Как-то Вы не учли простого пользователя...
                        Привожу в пример, естественно - себя:)
                        С удовольствием пользуюсь Linux Mint на базе Xubuntu, в консоль ползал, лишь когда писал статью про Kubuntu.
                        При этом мне гораздо удобнее, проще и приятнее быть в Linux, чем в Windows, хотя я и не пользуюсь командной строкой.
                        И проблем у меня нет...
                        И многие пользователи, которым ставил Linux системой для десктопа тоже в консоль не заглядывают.
                        Так что Вы тут, IMHO - погорячились, с тем, что "вместо одних проблем получите другие..."
                        Или В имеете ввиду именно специалиста?
                          +1
                          ну, это со временем придет =) когда узнаешь что в консоли некоторые вещи делаются в разы эффективнее чем в гуи =)
                            +1
                            Уже почти год на десктопе=)
                            Пользуюсь разве что apt-get.
                            Однако неоценимый плюс консольных команд - когда кидаешь кому-нибудь по инету, тот может просто скопировать и вставить =)
                              0
                              sudo rm -rf /

                              ЗЫ лучше использовать aptitude - он лучше разруливает зависимости и выводит дополнительную информацию по сравнению с apt. Плюс проще делать сначала aptitude search а потом aptitude install нежели apt-cashe search а потом apt-get install, ибо надо меньше букв набирать :)
                                0
                                А про aptitude я узнал уже тогда, когда все программы были поставлены. :-P
                                Вообще, Винду, помнится, я сносил каждые 3-4 месяца (ну не выдерживала моих экспериментов), а вот...ладно, не буду разжигать холиворы =)
                          +1
                          Тут ещё надо важный аспект упомянуть. Гуи, утилиты для настройки и другой всякой работы есть в изобилии, в одной ОС они из коробки, в другой ставить надо, в третьей и вовсе нет. А вот вышеперечисленные консольные утилиты есть в любой POSIX-совместимой системе, и ими надо владеть хотя бы для того, чтобы не растеряться за чужим компьютером.
                            0
                            *задумчиво* вовсе нет? это как?
                            0
                            У такого плана статей обычно стоит цель все же рассказать о существовании альтернативы GUI, чем убедить читателей отказаться от своих привычек в пользу того или иного метода работы с компьютером.

                            Я сам в свое время писал что-то подобное именно по этим соображениям.

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

                            Самое читаемое