10 Unix команди, които всеки потребител на Mac и Linux трябва да знае

GUI са страхотни - не бихме искали да живеем без тях. Но ако сте потребител на Mac или Linux и искате да извлечете максимума от вашата операционна система (и вашите натискания на клавиши), вие дължите на себе си да се запознаете с командния ред на Unix. Point-and-click е прекрасно винаги, когато трябва да направите нещо веднъж или два пъти. Но ако трябва да повторите тази задача много пъти, командният ред е вашият спасител.

Командният ред е прозорец към пълната, страхотна мощ на вашия компютър. Ако копнеете да се освободите от ограниченията на графичния интерфейс или смятате, че програмирането или администрирането на отдалечени машини е във вашето бъдеще, тогава изучаването на командния ред на Unix определено е за вас.

Не се притеснявайте, ако командите на Unix изглеждат като магически заклинания или мистериозните вътрешни елементи на системата изглеждат извън вашите възможности. Те не са толкова трудни за научаване и тази статия ще ви даде 10-те основни команди, от които се нуждаете, за да започнете. Не след дълго тези загадъчни струни ще бъдат втора природа.

Основи на черупката

Черупката на командния ред на Unix е приблизително еквивалентна на командния прозорец в Microsoft Windows (cmd или PowerShell). Командите, които разглеждаме по-долу, ще работят на всяка система, подобна на Unix, включително Linux, Darwin (основата на MacOS), FreeBSD и дори Windows с нещо като Git Bash или новата обвивка на Bash в Windows 10. Опциите и изходът варират леко, но не би трябвало да имате проблеми с осмислянето им.

Първо, трябва да отворите черупка, понякога наричана терминален прозорец. Често Unix дистрибуциите поставят това под менютата за администриране или система. В MacOS ще намерите терминала в Приложения> Помощни програми> Терминал. Когато го стартирате, ще видите нещо подобно:

Този екран, от MacOS 10.11, е типичен за повечето черупки в GUI. В горната част на прозореца виждаме типа черупка, в този случай Bash (Bourne Again Shell, която е обвивката по подразбиране в MacOS и повечето дистрибуции на Linux), както и размера на прозореца. Вътре в прозореца е подканата, в този случай конфигурирана да показва името на машината ( Mercury), името на текущата работна директория (тук тилдата ~, което е съкращение за домашната директория на потребителя), името на потребителя, и накрая символът за подкана ($). Обърнете внимание, че вашият ред ще се промени, докато се движите по файловата система или ако станете различен потребител на вашата машина (като корен или суперпотребител, за да стартирате административни команди). Подканата показва тази информация, така че можете лесно да разберете къде и кой сте на която и да е машина.

Струва си да се знае, че има два основни вкуса на черупката на Unix: Bourne и C shell. Борн и компания са получени от оригиналния AT&T Unix, докато C черупката идва от Калифорнийския университет в Бъркли и BSD Unix. Обикновено дериватите на Bourne и C са добри за интерактивна работа на терминала. Стандартната обвивка на POSIX, черупката Korn, е тази, която бихте искали да използвате за писане на свои собствени програми в черупката, наречена скриптове. Използваме черупката на Bash за примерите в този урок.

Средата на черупката

Един от първите факти, които трябва да се разбере за работата по командния ред на Unix е, че черупката работи в собствената си среда. Разбирането как да се контролира средата на черупката е важна част от постигането на ефективност в командния ред. Нека да разгледаме околната среда с помощта на envкомандата:

Не се притеснявайте да разберете всички променливи на околната среда сега, но знайте, че те са там. Вече трябва да разпознаете няколко променливи. Например SHELL=/bin/bashни казва, че използваме черупката на Bash. HOME=/Users/nunezуказва местоположението на домашната директория на потребителя. Можете да променяте или създавате променливи на средата и често ще го правите. Ето пример за задаване на променлива на околната среда, извикана FOOи показваща нейната стойност:

Както виждате, по конвенция поставяме променливи с главни букви. Обърнете специално внимание как се позоваваме на променливите на околната среда, когато ги използваме в команди, с предходните $. The $казва на интерпретатора на команди да използва стойността на променливата. Без $, echoкомандата по-горе просто ще отпечата името на променливата FOO,.

Команди на Unix

Независимо от коя черупка използвате, всеки път, когато въведете команда в черупката, ще предизвикате изпълнение на програма Unix. Философията на дизайна на Unix е да създава програми, които правят едно нещо добре и да ги свързва (или „свързва“) заедно, за да вършат полезна работа. Нека разгледаме един прост пример за преброяване на броя на файловете в директорията / etc (ще видим как да преминем към директорията / etc по-късно):

Тази последователност от команди илюстрира две важни концепции: тръбопроводи и опции. В lsкомандата (еквивалентно на dirкоманда в Windows) показва съдържанието на дадена директория, и  wc(брой думи) броят на думи. Забелязвате ли вертикалната лента между тях? Това е лулата. Тръбата приема изхода на първата команда и я насочва като вход към втората команда. Можете да свържете произволен брой команди заедно в Unix, като свържете една към друга с тръби.

Второто нещо, което трябва да забележите, са опциите, дадени на всяка команда. В Unix опциите традиционно имат префикс с един тире -,. Тези опции на командния ред променят поведението на командата. В този пример -l опцията to lsозначава да се изведе съдържанието на директорията във формат „long“, докато –lопцията to wcозначава да се преброят „редовете“ вместо думите. На английски тази команда може да се чете:

Избройте броя на редовете в текущата директория и след това ги изпратете до програмата за преброяване на думи, за да преброите броя на редовете.

Често тези опции на командния ред заменят настройките по подразбиране, зададени в средата. Ако искате да промените начина, по който командата се държи постоянно, можете да зададете променливата на средата автоматично, когато влезете в системата. Много команди ви позволяват да комбинирате опции в един низ - например, ls -laно други не. Можете да научите за всички опции за дадена команда, като проверите нейното ръководство или „ръководства“ (които обсъждаме по-долу).

Изучаването и използването на опциите на командния ред е голяма част от ефективността в командния ред на Unix. Някои команди имат толкова много опции, че документацията преминава към десетки страници. Нека това не ви тревожи сега. Често се нуждаете само от няколко опции за изпълнение на дадена задача и много опции се използват само при писане на програми на езика на черупката.

Ръководството

След като разберете основите на командния ред и околната среда, можем да започнем да се гмуркаме по-дълбоко в системата. Първото място за започване е с ръководството.

Един от хубавите аспекти на Unix е високото качество на документацията. Има документация за потребители, системни администратори и разработчици на софтуер. Достъп до документацията става с manкомандата. Нека започнем с четене на ръководството за ръководството (въведете man manв командния ред):

Ръководствата са разделени на осем раздела, които варират леко в зависимост от това дали сте на BSD / Linux / Mac или System V тип Unix. Полезно е да започнете, като прочетете увода към всеки раздел и можете да направите това със заклинание като man -s 1 intro, което означава да погледнете в раздел 1, за да намерите ръчна страница, наречена „въведение“:

Ако не сте сигурни в това, което ти заповядвам, което търсите, можете да опитате -fи -kопции. ще ви каже функцията на команда, ако знаете нейното име, докато ще изброи имената на съответните команди въз основа на една или повече ключови думи. И двете опции ще търсят вградена база данни (ако е конфигурирана; обикновено има) и ще връщат всички съвпадения. Например, ще се покажат ръководствата, които започват с низа :man –f command man –k hint man –k bzerbz

Файловата система

Има много команди, свързани с файловата система Unix, тъй като тя е основна за операционната система. Видяхме един от тях по-рано:, lsкойто изброява файлове в директория:

В lsзаповедта може да бъде най-често се използва командата на всички, и той има много опции, за да коригират своята продукция. Една от опциите, за която ще искате да знаете веднага е ls -a(избройте всички). Това ще разкрие файлове с точки (файлове или директории, чиито имена започват с точка или точка), които са скрити по подразбиране. Тези файлове или директории обикновено съдържат информация за конфигурацията или регистрационни файлове за системата Unix. Файлът .bash_history например регистрира всички команди, които въвеждате в командния ред.

Другата команда, от която ще се нуждаете веднага, е cdкомандата, която използвате за промяна на директории. Това е подобно на същата команда в Windows, но с важна разлика. В Unix всички устройства (устройства) се показват като едно устройство. Докато в Windows може да имате вашите снимки на външен твърд диск, който се появява като E :, в Unix това устройство може да е / home / user / pictures. Всички файлове в Unix системата са достъпни по път, който започва с / (основната директория) и можете да монтирате различни твърди дискове в различни точки на файловата система според вашите нужди.

Преди да започнете да се лутате из файловата система, позволете ми да въведа друга команда, която ще ви е необходима: pwd(печат на работна директория). Тъй като има потенциално много места за изгубване във все по-голяма файлова система, тази команда ви позволява бързо да определите къде се намирате. Нека превключим директориите към местоположението, където се съхраняват системните конфигурационни файлове и да проверим нашето местоположение:

Имайте предвид, че можете да използвате cdкомандата без аргументи, за да се върнете бързо в домашната си директория. Друг съвет: The ~може да се използва като пряк път за препращане към вашата домашна директория както в черупката Bash, така и в C. 

На този етап знаете как да се движите по файловата система и да изброявате съдържанието на директориите. Сега се нуждаем от начин за четене на файловете, съхранявани в тях. В наши дни повечето системи идват с lessкомандата за това. lessще покаже файл страница по страница и ще ви позволи да навигирате с помощта на команди Vi (натиснете, за jда се придвижите надолу, kда се придвижите нагоре, hда получите помощ и qда излезете от файла).

Нека да видим какво има в нашия / etc / passwd файл, като въведем less /etc/passwd:

Файлът passwd изброява потребителските акаунти в Unix система, заедно с техните идентификационни номера на потребители и групи, тяхната домашна директория и пътя към съответната команда или обвивка. В MacOS обаче ще намерите само акаунти за системни услуги в passwd. Това е така, защото човешките потребители са конфигурирани под Потребители и групи в системните предпочитания на MacOS.

Дисково пространство

Изчерпването на дисковото пространство е постепенен процес, който може да отнеме години, но все пак може да ви изненада. Има две команди, които можете да използвате, за да проверите свободното си пространство и да определите кои файлове задържат диска ви: du(използване на диска) и df(без диск). И двамата вземат -hопция (разбираема от човека). За да разберете колко е пълен вашият диск, използвайте dfкомандата:

За сега, да се съсредоточи върху %iusedи mounted onколони. Това показва, че домашната ми директория е пълна с 92 процента, така че вероятно трябва да я изчистя. Но как да разбера къде се използва цялото пространство? Това duе за:

За този пример отидох с заклинание, което ограничава изхода до първите 10 реда. В противен случай duще изброи всяка директория на машината, което лесно може да бъде твърде много за разбиране. От този списък можете да видите колко място изразходва всяка директория. Можете също така да видите как, като обединим няколко команди, можем лесно да съберем скрипт, който да изброява 10-те най-големи директории по използване на пространството. Командата, от която се нуждаем, за да сортираме изхода, разбира се е sortкомандата.

Тъй като версията на MacOS на sortне може да се справи duс човешки четлив изход, използвах -mопцията за duпоказване на използването на диска в мегабайта (използвайте -gили -kопцията за показване в гигабайта или килобайта). В -nи -rопции за sortсортиране на изхода числено и в обратен ред, така че най-големите директории ще се показват в горната част на списъка.

Суперпотребители, su и sudo

Редица команди се отнасят до системното администриране. Опитайте да въведете man -s 8 introза въведение към тях. Отивам да ви дам една съществена команда за системно администриране тук: su. Това означава „супер потребител“ и се отнася до администраторския потребител или основния акаунт. Всички файлове, принадлежащи на системата, са собственост на този потребител и ще трябва да станете този потребител, за да извършите администрация.

Свързана команда, sudoви позволява да станете супер потребител за една команда. Защо да се използва sudoвместо su? Тъй като най-добрите практики повеляват да не се движите като основен потребител със силата да нанесете непоправима вреда случайно. Винаги ще искате да правите всичко, което е възможно, като нормален потребител и да станете супер потребител само когато имате нужда. Точно как ще получите суперпотребителски привилегии ще зависи от вашата Unix дистрибуция. Нека да видим как suработи на MacOS:

А? Сигурен съм, че съм въвел паролата правилно. Това, което се случи тук, е, че настоящият ми потребител nunez, няма разрешение за това su. В някои Unixes това означава, че потребителят трябва да е в wheelгрупата, а в други системи (включително MacOS) потребителят трябва да е във sudoersфайла.

Нека завършим с добавяне nunezна sudoers, което ще ви даде вкус на редактиране на файлове в командния ред. Енергийните потребители пеят похвалите на редакторите Emacs и Vi и ви препоръчвам да ги изпробвате, но ние ще използваме Nano тук Nano е лесен за научаване и използване, а MacOS и много дистрибуции на Linux идват с вече инсталиран.