В днешния онлайн свят битката за ангажиране на потребителите продължава да бушува, като производителите на приложения предпочитат мобилни или уеб приложения. Настолните приложения са все по-малко подходящи. Освен това те са склонни да бъдат нищо повече от богати клиенти на уеб приложения - Electron е популярната избрана платформа.
Означава ли това, че скоро ще напуснем работния плот като платформа? Не, разбира се, че не бих казал това. Също така, въпреки че наскоро приложенията на GUI спряха, има сегмент от настолни приложения, който продължава да расте.
Виждали ли сте някога филм с хакери? По-голямата част от времето тези хора са показани да работят пред монитори, показващи някакъв терминал (обикновено с тъмен фон и светъл преден план). Този терминал от своя страна е склонен да бъде залят от символи, които очевидно имат някакво значение за човека, който ги чете.
Подобни изображения на хакери в действие често се подиграват професионални разработчици , и дори има някои програми, които симулират различни 'хакерски' ефекти, просто за забавление.
В реалния свят обаче инструментите на командния ред не се използват поради тяхната развлекателна стойност.
Тази статия се фокусира върху практическите възможности за използване на инструментите за интерфейс на командния ред (CLI). Познаването на командите CLI и използването на качествени инструменти може да ви направи по-продуктивни и да отвори врати за различни подходи към автоматизацията, които са много по-практични с текстовите интерфейси, отколкото с GUI приложенията.
Можете да подобрите, като правите повтарящи се задачи в GUI, до точката, в която вашите многократни кликвания се чуват като едно. Проблемът е, че това няма да подобри ефективността на специализиран скрипт. Освен това, извършването на същите операции ръчно въвежда както допълнително когнитивно натоварване, така и по-голяма възможност за човешка грешка. Както обикновено, ние разчитаме на компютрите да се справят със задачи, които хората могат да намерят за скучни, повтарящи се или поразителни.
Струва си да се знае, че терминалният инструмент може да предложи няколко вида интерфейси. Има неинтерактивни елементи като ls , които просто вземат параметрите и осигуряват изхода. Има интерактивни или полуинтерактивни интерфейси, които най-често се срещат в мениджърите на пакети. („Наистина ли искате да продължите с инсталацията от непроверен източник?“) След това има текстови потребителски интерфейси (TUI), които са интерактивни GUI приложения, предназначени да се поберат в ограниченията на терминала. Може би най-известният е Среднощен командир (mc), изключително популярен клонинг (от 90-те) Нортън командир .
Ако искате да станете обитател на конзолата, трябва да се оборудвате с минимален набор от инструменти за разработка на командния ред - най-важното. Нещата, с които определено не можете да живеете, са едно интерактивна обвивка (насочете се към нещо модерно с удобен завършек) и a текстов редактор .
Сега ще спомена UNIX философия , което често е в основата на дизайнерските решения, взети от авторите на инструмента, независимо дали съзнателно или не. Някои от ключовите моменти могат да бъдат обобщени, както следва:
Първото нещо, което ще видите при отваряне на терминал, е черупка. Това е частта, която прави възможно взаимодействието между потребителя и машината. Той интерпретира командите ви, разделя ги на имена на програми и аргументи и изпълнява всички команди на черупката, които хвърляте върху него.
В исторически план е имало много различни видове черупки. Сред най-популярните са csh (C Shell) и различни изпълнения на Bourne Shell (обикновено известни просто като ш ). Bourne Shell се разпространи в Korn Shell, който също придоби известна сила и все още се използва от своите ентусиасти. Понастоящем Csh е черупката по подразбиране за някои BSD системи, докато почти всички други подобни на UNIX операционни системи предпочитат някакъв тип Bourne Shell. Линукс дистрибуциите са предпочитани баш докато Mac OS X идва с zsh като опция по подразбиране.
Има и други възможности, но те са много по-малко популярни, с изключение на Microsoft PowerShell на Windows системи. PowerShell е вдъхновен отчасти от интерактивни UNIX черупки като zsh и отчасти от времето за изпълнение .NET. Вместо да третира всичко като текст, често срещана концепция в света на UNIX, той позволява манипулиране на обектно-ориентирани данни.
Въпреки че Microsoft PowerShell е доста популярен на Windows сцена, много програми с UNIX произход (най-вече Git, Autotools или Make) предпочитат някои варианти на Bourne Shell. Поради това проекти като msys (включено в Git за Windows), Cygwin или скорошното [WSL] на Microsoft . Ако искате Linux-подобно усещане за Windows, MSys е най-добрият вариант тук. Ако искате пълнофункционална Linux среда, способна да изпълнява стандартни двоични файлове на Linux, тогава WSL е пътят. За нещо средно: UNIX API, но компилиран като изпълним файл на Windows (използвайте го само когато наистина знаете защо ви е необходим) -Cygwin е отговорът.
След като се запознаете с черупката си, ще искате да придобиете някои полезни умения. Тъй като по-голямата част от работата по кодирането се върти около писането на текст (код, README, съобщения за фиксиране), доброто познаване на интерактивните текстови редактори е от съществено значение. Има много от които да избирате и тъй като редакторът е един от най-необходимите инструменти за всеки разработчик, вероятно има толкова мнения относно това кой редактор е най-добрият.
Интернет системите са единствените системи, които изпитват проблеми със сигурността.
Мнозинството популярни текстови редактори могат да бъдат разделени на две основни групи: Прости текстови редактори Y. програмируеми текстови редактори .
И двете могат да бъдат чудесни за писане на код, но както подсказва името, програмируемите предлагат възможност за оформяне и персонализиране на редактора, за да отговарят напълно на вашите нужди. Това обаче си има цена, тъй като те също са склонни да имат по-стръмна крива на обучение и може да отнеме повече време за установяване.
Сред простите текстови редактори, GNU Nano той е най-широко разпространен. Това всъщност е клонинг на редактора връх така че ако единият не е наличен във вашата система, можете да опитате другия. Друга по-модерна алтернатива и за двамата е редакторът микро . Ако искате нещо просто и разтегателно едновременно, това е добро място да започнете.
Много разработчици разчитат на програмируеми редактори от различни области, като например дойдох Y. GNU Emacs . И двата редактора могат да работят в конзолен или GUI режим и и двата са имали влияние върху ключовите обвързвания, намерени в друг софтуер. И двете предлагат не само API, но и реални вградени програмни езици. Emacs се фокусира върху LISP и Vim използва свой собствен VimL, но предлага и интерфейси към други популярни скриптови езици (като Lua, Perl, Python или Ruby). Заслужава да се спомене и по-скорошен подход към Vim, наречен Неовим тъй като започва да получава сериозно следване.
Може да е объркващо, но има и наречен редактор ние което е предшественик на Vim (което между другото означава „ Ние подобрен'). Това е много по-просто от Vim, но ако сте достатъчно уверени да пишете във Vim, не би трябвало да представлява предизвикателство за вас, ако сметнете за необходимо да използвате vi.
Тъй като pico / GNU Nano и vi / Vim обикновено са предварително инсталирани на различни системи, добре е поне да разберете техните основи (излизането от Vim е прословуто труден проблем за начинаещи). По този начин, ако трябва да редактирате нещо на отдалечена машина, то ще бъде готово, независимо кой редактор вече е там. На вашето лично устройство можете да използвате всеки редактор, който е най-удобен за вас.
Последното нещо, което трябва да имате предвид, е, че вашата система може да има така наречения редактор по подразбиране.
Променливата на средата $ EDITOR
сочи към редактора по подразбиране и в черупки, съвместими с Bourne (sh, bash, ksh, zsh), можете да го видите, като въведете echo $ EDITOR
Ако стойността се различава от вашия личен избор, можете да я зададете, като добавите export EDITOR = my-awesome-editor
към конфигурацията по време на изпълнение на вашата черупка ( ~ / .profile
, ~. / Bashrc
, ~ /. zshrc
и т.н.).
Други програми, като системи за контрол на версиите и пощенски клиенти, ще използват този редактор, когато се нуждаят от по-дълго въвеждане на текст.
Веднага щом започнете да правите сериозни неща в CLI, ще срещнете ограничението да можете да държите само едно приложение отворено по всяко време. Когато кодирате, може да искате да редактирате кода, да го стартирате, да поправите грешките и да стартирате отново. Когато търсите грешка, може да искате да изброите дневниците и да видите какво се регистрира, когато изпратите заявка до сървъра. Обикновено това означава постоянно превключване между двете приложения или отваряне на множество терминални прозорци.
Тук терминалният мултиплексор може да ви помогне. Когато говорят за мултиплексори, някои хора веднага приемат, че темата е такава Екран GNU . Това беше първият удължен инструмент от този вид и все още е много популярен днес (често се инсталира по подразбиране). Модерният му заместител е tmux което, изненадващо, означава „ т ерминал mu многократно х е. '
Тези две ви позволяват да отворите повече от един прозорец в дадена терминална сесия и да превключвате свободно между тези сесии. Те ви позволяват да разделите прозорците на панели, което помага да стартирате няколко приложения едновременно и да наблюдавате изхода им в реално време (без промяна на прозорците). Освен това те работят в режим клиент-сървър, което означава, че можете да ги откачите по всяко време и да се върнете по-късно, за да продължите да работите точно там, където сте спрели. Тази последна функция доведе до популярността на Screen, когато хората искаха постоянни сесии. IRC .
За повечето случаи на употреба GNU Screen или tmux трябва да са чудесни за вас, но ако по някаква причина установите, че те са твърде тежки за ресурси, има и по-леки алтернативи. Има dtach / атач и е abdQco . Те са умишлено ограничени по обхват, но могат да изпълняват съответните си задължения добре.
На този етап можете да започнете да мислите за инсталиране на гореспоменатия софтуер на вашата машина. Един от проблемите е, че всеки от инструментите има различни инструкции за инсталиране. Понякога трябва да изтеглите източници и да ги компилирате сами, понякога получавате самостоятелния двоичен файл, а понякога получавате това, което се нарича двоичен пакет , което обикновено означава компресиран изпълним файл заедно с някои метаданни.
За да улеснят процеса на инсталиране на софтуера, създателите на операционни системи излязоха с концепцията за мениджъри на пакети. Просто казано, мениджърът на пакети е като магазин за приложения за CLI и настолни приложения. Той изпреварва реалните магазини за приложения с няколко десетилетия. Проблемът е, че почти всяка система има свой собствен мениджър на пакети. Извлечените от Debian, Ubuntu и GNU / Linux дистрибуции използват APT, Red Hat дистрибуциите предпочитат yum или DNF, други Linux дистрибуции имат по-екзотични средства за инсталиране на софтуер, както и различните BSD клонинги. В допълнение към вградените мениджъри на пакети има и инсталирани от потребителя подобни Шоколадов за MS Windows и Homebrew за Mac OS X / Mac OS. Когато искате да напишете инструкции как да инсталирате програмата си, можете в крайна сметка да напишете случаи за всяка от тези системи. Изглежда твърде много, нали?
За щастие, последната от споменатите системи, Homebrew, може да е най-преносимата, благодарение на Linuxbrew , порт Homebrew за GNU / Linux системи. Смешното е, че дори работи в WSL, ако искате да имате подобен потребителски опит в Microsoft Windows. Моля, обърнете внимание, че WSL не се поддържа официално.
И така, освен преносимостта, какво друго може да предложи Homebrew? На първо място, това не пречи на системните пакети, така че всичко, което инсталирате, се намира в отделен слой на операционната система. Също така не са необходими root права за инсталиране на пакети. Следователно можете да имате системни пакети, които да са стабилни и тествани, но в същото време да проверявате по-новите си версии, без да жертвате стабилността на системата.
Ако искате да тествате редакторите, споменах по-рано, че всичко, което трябва да направите на система Homebrew или Linuxbrew, е да изпълните тази команда:
brew install emacs micro nano vim neovim
.
Това, което вече обсъдихме, несъмнено е полезно за работа. Но има и приложения, които, макар и да не са необходими, все пак внасят комфорт в ежедневието. Може да не ви трябват, но винаги си струва да ги знаете.
Търсенето в историята на командите може да бъде досадно. Докато bash и zsh имат клавиши Ctrl + R, той показва само по една замяна наведнъж. Освен това трябва да въведете точния текст, който сте използвали преди. Тъй като това е доста често срещана операция, след като започнете да използвате командния ред, изглежда добро място за подобрение.
Интерактивни филтри, като мързелив , перкол , парче или fzf ви помага да филтрирате дълги редове текст. Това може да бъде гореспоменатата история на командите, всички редове код в директория на проект или списък с имена на файлове, генерирани от find.
. Общата идея е първо да ви представим всички налични редове и след това да разчитаме на размити алгоритми за търсене, за да филтрираме всичко, което не съвпада.
Например, свързването на Ctrl + R с fzf показва списък с най-новите команди, в които можете да навигирате нагоре и надолу със стрелки или можете да въведете git
да се показват само командите, които имат Git някъде вътре. Лично аз, когато работя с черупка, която няма интерактивен филтър, изведнъж се чувствам малко изгубена. Тази функция е наистина убедителна!
Също така можете да направите своя интерактивен филтър достъпен в програмирания текстов редактор. По този начин ще имате унифицирани възможности за търсене между вашата черупка и вашия редактор.
Facebook PathPicker беше голяма помощ, когато работех основно с проекти на C ++. Генерираният от компилатора дневник за грешки може да бъде доста голям и неприятен, а възможността за намиране на действителните пътища в този дневник беше огромна благодат за производителността.
Във всеки даден текстов файл или в съдържанието на екрана, когато се използва с tmux , fpp филтрира всичко, освен файловите пътища. След това представя потребителски интерфейс, където можете да изберете един или повече от тези пътища и да изпълните команда с тях. Най-често срещаният отговор би бил отварянето на файловете в редактор, разбира се, което е действието по подразбиране.
Вероятно се използва поне един от проектите, по които работите Отивам като система за контрол на версиите. Макар и напълно мощен, Git CLI не е върхът на страхотното потребителско изживяване. За да си спестите малко стрес, като прочетете всички опции в помощ за Git $ SUBCOMMAND
, препоръчвам ви да проверите тиг . Той предлага приятен потребителски интерфейс на конзолата за операции, които се възползват от него, като log
или blame
.
Друг инструмент, който има за цел да помогне на потребителите на GIt, е направете , което е съкращение от Коригирайте всички конфликти . Както може би се досещате, това е полезно, когато се сблъскате с конфликт при сливане или изпреварване. Това е алтернатива на други инструменти за сливане като vimdiff.
Имаше време през 90-те, когато всички искаха двупанелен файлов мениджър. Тенденцията започна с Нортън командир . Много други са следвали същия път, но този, който все още вижда стабилна потребителска база, е Среднощен командир . Най-очевидният случай на използване е използването на mc за манипулиране на локални файлове, но също така е много полезно при работа с отдалечени машини.
Подобно на повечето програми от командния ред, той е много лек, така че няма проблем да го стартирате чрез ssh и благодарение на поддържаните протоколи FTP и FISH можете да имате локална файлова система, видима на панела, а дистанционното в другия. Удобна функция, когато искате да избягвате писането или копирането на имена на файлове като аргументи в scp.
'Цялата работа и никаква игра правят Джак скучно момче.' те казват. Има много програми, команден ред и така нататък, които са само за ваше забавление. Видеоиграта Измамник попада в тази категория. Той дори даде името на целия жанр на играта! Други популярни играчки са състояние Y. кравец , което може да го направи по-малко скучен ден, ако ги използвате някъде в вашите CI скриптове, например.
Но за някои от нас основното привличане на използването на конзола на първо място е усещането за хакер във филмите. Няма повече тайни Y. Холивудски хакер те добре представляват тази група. Опитайте, когато някой ви гледа как работите и доверието ви в хакерите със сигурност ще се увеличи!
И така, какво толкова страхотно има в командния ред, който компенсира часовете, прекарани в учене как да използвате черупката, редактора и всички ключове в различни приложения? Краткият отговор е производителност , което идва от две неща:
Единият е, че когато ви се представи само терминален прозорец и нищо друго, можете да се фокусирате по-интензивно, тъй като няма много какво да ви разсейва. Не се появяват известия, реклами или снимки на сладки котенца. Само вие и вашата цел.
Втората е автоматизацията. Можете да поставите множество действия, често комбинирани в скрипт, и да го извикате по-късно като цяло, вместо всеки път да ги записвате на ръка. Можете бързо да се върнете към особено сложна команда, която сте въвели веднъж, като търсите в историята на черупката. По принцип можете да записвате и възпроизвеждате всичко и кодът е достъпен като документация за това, което сте направили.
Възможността за добавяне на псевдоними също допринася за печалбите. Например, често се оказвам, че създавам комити в Git, като ги актуализирам до съвършенство (засега). След като подготвя желаните файлове, стартирам git carmh
. Моля, не се опитвайте да го търсите в ръководството, тъй като това е моят личен псевдоним, което означава commit --amend --reuse-message = HEAD
. Запазете малко писане със сигурност.
Работата е там, че хората се отегчават да повтарят едни и същи действия отново и отново и скуката намалява фокуса. Това може да доведе до грешки и грешки. Единственият начин да ги избегнете е да не преплитате действия с висок и нисък фокус. Кодът за писане е с висок фокус, а прегледът на съобщение за ангажимент и съдържанието е с висок фокус, но когато трябва да повторите няколко механични щраквания тук и там, за да стигнете до етапа на преглед на ангажимента, фокусът ви вероятно ще намалее. Командният ред, разбира се, не е свободен от подобни механични дейности, но благодарение на автоматизацията можете да избегнете повечето от тях.
Вероятно вече имате познания за някои или всички инструменти на командния ред, споменати в тази статия. Може да сте научили нещо ново и полезно, като го прочетете. Ако е така, отлично. Целта ми тук не беше да предложа преглед и сравнение на различни инструменти, а да демонстрирам някои ключови инструменти, които намирам за полезни в ежедневната си работа, с надеждата, че някои от тях също ще ви бъдат полезни.
Има много по-интересни програми от командния ред и ако се интересувате от тях, горещо препоръчвам да разгледате подбрания списък на Страхотна черупка на някои от най-добрите команди на черупки, налични днес
Повечето GUI приложения имат своя терминален аналог. Това включва уеб браузъри, имейл клиенти, клиенти за чат (IRC, Slack, XMPP), PIM пакети или електронни таблици. Ако знаете за добри предавания, които не съм споменавал, моля, предоставете ги в коментари.