Со­вер­шенно не важ­но, какую опе­раци­онку ты пред­почита­ешь иметь на рабочем компь­юте­ре, — Linux сегод­ня бук­валь­но пов­сюду: на сер­верах, на желез­ках вро­де Raspberry Pi, на умных устрой­ствах, на компь­юте­рах в госуч­режде­ниях... Да что там, даже в Windows теперь мож­но запус­кать Linux, что­бы лег­че было, к при­меру, тес­тировать сер­верный софт. Хакеру же ори­енти­ровать­ся в Linux прос­то необ­ходимо.

Ог­ромное количес­тво хакер­ско­го соф­та работа­ет толь­ко на Linux и соб­рано в спе­циали­зиро­ван­ных дис­три­бути­вах вро­де Kali. К тому же при пен­тесте ты час­то будешь стал­кивать­ся с сис­темами на Linux и дол­жен уметь с ними обра­щать­ся. Да и прос­то полез­но иметь опыт работы с этой мощ­ной, абсо­лют­но бес­плат­ной сис­темой. В жиз­ни при­годит­ся, поверь!

В этой статье мы попыта­емся рас­ска­зать все, что сами хотели бы знать, ког­да начина­ли инте­ресо­вать­ся «Линук­сом» мно­го лет назад. Это и теоре­тичес­кие све­дения, которые помогут ори­енти­ровать­ся, и впол­не прак­тичные советы.

Важное предупреждение

По уров­ню слож­ности это не впол­не харак­терная для «Хакера» статья — она рас­счи­тана на сов­сем‑сов­сем новых поль­зовате­лей. Мысль о ней появи­лась, ког­да мы ста­ли ком­поновать под­борку матери­алов об исполь­зовании Linux и обна­ружи­ли, что у нас нет ничего, что подош­ло бы в качес­тве самого начала. А если и есть, то пок­рыто тол­сты­ми мха­ми.

Ес­ли ты про­тив таких ста­тей в «Хакере», можешь, конеч­но, отме­тить­ся в ком­мента­риях, но, пра­во сло­во, луч­ше иди почитай про экс­плу­ата­цию ядра или про то, как писать минима­лис­тичный бэк‑шелл на ассем­бле­ре. Бла­го таких ста­тей у нас боль­шинс­тво и менять в этом пла­не мы ничего не собира­емся.

Ес­ли же тема кажет­ся тебе в самый раз, то прис­тегивай­ся — наш звез­долет отправ­ляет­ся, что­бы про­нес­тись по осно­вам Linux со сверх­све­товой ско­ростью.

 

Какой бывает Linux

Пер­вое, с чем стал­кива­ется человек, жела­ющий уста­новить Linux, — это огромное раз­нооб­разие дис­три­бути­вов. Все эти наз­вания прос­то невоз­можно упом­нить, но в реаль­нос­ти и не нуж­но.

Три основных семей­ства дис­три­бути­вов, о которых нуж­но знать в пер­вую оче­редь, — это Debian, Red Hat и Arch. Еще мож­но вспом­нить SUSE, Mandriva и Gentoo, но день­ки их сла­вы уже позади, да прос­тят нас их поль­зовате­ли!

info

Chrome OS — это тоже внут­ри впол­не нас­тоящий Linux, и в новых вер­сиях под­держи­вает­ся запуск прог­рамм для Linux. Но в один ряд с дру­гими дис­три­бути­вами эту ОС все же не пос­тавишь.

Из семей­ства ­Debian в пер­вую оче­редь сто­ит обра­тить вни­мание на Ubuntu. Это и есть самый оче­вид­ный выбор, если ты раз­думыва­ешь, с чего начать. Ком­пания Canonical, сто­ящая за Ubuntu, прик­ладыва­ет огромные силы для того, что­бы этот дис­три­бутив хорошо работал и был дру­желю­бен к поль­зовате­лю. Для это­го дис­три­бути­ва име­ется широчай­ший выбор ста­биль­но работа­ющих прог­рамм — ты точ­но не будешь испы­тывать в них недос­татка.

Свежеустановленный Ubuntu
Све­жеус­танов­ленный Ubuntu
Стандартный набор приложений в Ununtu
Стан­дар­тный набор при­ложе­ний в Ununtu

К тому же у Ubuntu огромное сооб­щес­тво, что зна­читель­но упро­щает решение проб­лем: в 99% слу­чаев ты будешь не пер­вый, кто испы­тыва­ет ту или иную слож­ность. Прос­то копируй сооб­щение об ошиб­ке, и навер­няка най­дешь вет­ку форума, где более опыт­ные товари­щи объ­ясня­ют дру­гим пос­тра­дав­шим, как с этим спра­вить­ся.

Есть и дру­гие популяр­ные дис­три­бути­вы, осно­ван­ные на Debian, — к при­меру, Raspberry Pi OS, MX Linux или Kali Linux. А на Ubuntu базиру­ются Linux Mint, elementary OS и мно­гие дру­гие. Кста­ти, Mint и elementary тоже неп­лохие вари­анты для нович­ков.

Ста­вить Kali в качес­тве пер­вой сис­темы обыч­но не рекомен­дуют: этот узкоспе­циали­зиро­ван­ный хакер­ский дис­три­бутив пло­хо прис­пособ­лен для пов­седнев­ной работы, и уста­нав­ливать его пред­полага­ется в вир­туал­ку или в качес­тве вто­рой ОС. К тому же он под завяз­ку забит хак­тулза­ми вмес­то обыч­ных при­ложе­ний, что будет сби­вать с тол­ку. Но если ты ста­вишь Linux спе­циаль­но, что­бы заполу­чить все это богатс­тво, то кто мы такие, что­бы тебя оста­нав­ливать?

Что до самого Debian, то его глав­ная фиш­ка — это лицен­зион­ная чис­тота. Раз­работ­чики вни­матель­но сле­дят за тем, что­бы в него не попало ни строч­ки кода, который рас­простра­няет­ся не по сво­бод­ной лицен­зии. Что может быть и пох­валь­но с точ­ки зре­ния иде­оло­гии, но, ког­да ты хочешь осво­ить­ся с Linux, ско­рее все­го, обер­нется раз­ного рода слож­ностя­ми.

К семей­ству дис­три­бути­вов Red Hat отно­сят­ся в пер­вую оче­редь Fedora, Red Hat Enterprise Linux (RHEL) и Rocky Linux. На обыч­ный ПК есть смысл ста­вить «Федору», тог­да как RHEL — это ком­мерчес­кое решение для сер­веров, а Rocky Linux — его неком­мерчес­кий клон, соз­данный сооб­щес­твом.

Fedora Linux
Fedora Linux

И наконец, Arch — это край­не инте­рес­ный «гиков­ский» дис­три­бутив, который ты можешь сам соб­рать по кир­пичикам и нас­тро­ить как тебе захочет­ся. Одна­ко нырять в это без пред­варитель­ных поз­наний в Linux не совету­ем. Решая проб­лемы, ты, конеч­но, при­обре­тешь мно­го цен­ных зна­ний, но это далеко не самый прос­той путь, и луч­ше отло­жить хож­дение по нему на потом.

У Arch есть и менее суровые вари­ации — Manjaro и EndeavourOS. В обе­их хотя бы при­сутс­тву­ют заранее нас­тро­енные и под­готов­ленные к работе окру­жения, но тоже аске­тич­ные. С дру­гой сто­роны, отсутс­твие необуз­данно­го раз­нооб­разия может быть плю­сом при пер­вом зна­комс­тве, так что начинать с Manjaro — не такая пло­хая идея. Осо­бен­но если ты пла­ниру­ешь ста­вить Linux на сла­бый компь­ютер.

Manjaro для ARM
Manjaro для ARM

Not Unix

В чем отли­чие Linux от Unix? Если очень‑очень упростить, то мож­но ска­зать, что Unix — это пре­док Linux. Более слож­ный и раз­верну­тый ответ тре­бует нем­ного углу­бить­ся в исто­рию.

В семиде­сятые годы Ричард Стол­лман при­думал кло­ниро­вать ком­мерчес­кий и по тем вре­менам дорогос­тоящий Unix и соз­дать свою опе­раци­онку, которую он наз­вал GNU is not Unix или прос­то GNU. Стол­лман и ком­пания перепи­сали все ком­понен­ты Unix и опуб­ликова­ли их под при­думан­ной ими «вирус­ной» лицен­зией GPL.

Из­началь­но сло­вом Linux называ­ли толь­ко соз­данное Линусом Тор­валь­дсом ядро. Но наз­вание Linux и мас­кот‑пин­гвин быс­тро при­жились, и ими теперь обоз­нача­ют всю ОС — нес­мотря на воз­ражения Стол­лма­на и прось­бы писать толь­ко GNU/Linux.

Linux в эпо­ху интерне­та стал быс­тро набирать популяр­ность, и ком­мерчес­ким вари­антам Unix со вре­менем прос­то не оста­лось мес­та. Тем не менее до сих пор живы его потом­ки — опе­раци­онные сис­темы FreeBSD и OpenBSD, которые теперь бес­плат­ны и мно­гое заимс­тву­ют из сов­ремен­ного «Линук­са». Кста­ти, на FreeBSD осно­ваны macOS и iOS.

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

 

Ядро

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

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

В сис­теме может одновре­мен­но при­сутс­тво­вать сколь­ко угод­но ядер, а какое имен­но будет исполь­зовать­ся, ты можешь выб­рать в заг­рузчи­ке. Апгрейд ядра до более новой вер­сии — совер­шенно рутин­ное дело в Linux и обыч­но про­исхо­дит авто­мати­чес­ки.

 

Пакетный менеджер

Лю­бой Linux сос­тоит из тысяч мел­ких ком­понен­тов — прог­рамм, биб­лиотек и ресур­сов (нап­ример, фай­лов кон­фигура­ции, наборов ико­нок и так далее). Рас­простра­няют­ся они в виде пакетов (package).

Па­кет­ный менед­жер — это спе­циаль­ная прог­рамма, которая выпол­няет уста­нов­ку, нас­трой­ку, уда­ление, а так­же обновле­ние как отдель­ных при­ложе­ний, так и всей сис­темы в целом или ее ком­понен­тов.

Очень час­то один пакет тре­бует для работы наличия дру­гих, и сле­дить за эти­ми зависи­мос­тями вруч­ную на сов­ремен­ной сис­теме невоз­можно. Поэто­му осно­ва каж­дого дис­три­бути­ва — это пакет­ный менед­жер, который рулит уста­нов­кой и обновле­нием соф­та. В дис­три­бути­вах, осно­ван­ных на Debian, он называ­ется APT, в Red Hat — DNF, а в Arch — pacman.

Па­кеты менед­жер берет из репози­тория — боль­шого скла­да, куда соз­датели дис­три­бути­ва заг­ружа­ют их. Репози­тори­ев зачас­тую мож­но под­клю­чить сра­зу нес­коль­ко. Нап­ример, в Ubuntu есть четыре основных: Main (под­держи­ваемый раз­работ­чиками), Universe (под­держи­ваемый сооб­щес­твом), Restricted (с проп­риетар­ным ПО) и Multiverse (с ПО, на которые дей­ству­ют нес­вобод­ные лицен­зии).

Пос­коль­ку вско­ре пос­ле уста­нов­ки Linux ты обна­ружишь необ­ходимость в драй­верах для железа, допол­нитель­ных шриф­тах, кодеках и тому подоб­ных вещах, ско­рее все­го, понадо­бит­ся раз­решить сис­теме дос­туп к запят­нанным ком­мерци­ей репози­тори­ям. В Ubuntu это дела­ется в меню «Прог­раммы и обновле­ния».

 

Графическая система

Да­леко не каж­дый Linux снаб­жен гра­фичес­кой сис­темой или вооб­ще нуж­дает­ся в ней — очень мно­гие дей­ствия здесь мож­но делать и из коман­дной стро­ки. Одна­ко сов­ремен­ный рабочий стол — это все же икон­ки и окош­ки.

Что­бы работать с гра­фикой, в Linux дол­жны при­сутс­тво­вать сер­вер дис­плея X.Org (тра­дици­онный вари­ант) либо новомод­ный ком­позитор Wayland, на который сей­час перехо­дят наибо­лее передо­вые дис­три­бути­вы. Плюс тре­бует­ся окон­ный менед­жер — прог­рамма, которая отве­чает за то, как выг­лядят и работа­ют эле­мен­ты интерфей­са.

Впро­чем, это всё доволь­но низ­коуров­невые под­робнос­ти, нырять в которые с ходу не обя­затель­но. Куда ско­рее тебе при­дет­ся задумать­ся о выборе рабочей сре­ды (Desktop Environment, DE). Это совокуп­ность окон­ного менед­жера и раз­ного рода прог­рамм, мел­ких (нап­ример, рису­ющих раз­ные панели, рабочий стол, вид­жеты) и круп­ных — вро­де фай­лового менед­жера. Сюда же обыч­но вхо­дит и набор базово­го соф­та: кален­дарь, поч­товик и про­чее в таком духе.

Са­мые извес­тные окон­ные сре­ды — это GNOME и KDE. Но в реаль­нос­ти их спи­сок гораз­до длин­нее. Любите­ли минима­лиз­ма могут прис­мотреть­ся к Xfce или LXDE, а Ratpoison, dwm, i3 и xmonad пре­дос­тавля­ют сре­ду с неперек­рыва­ющи­мися окна­ми, что некото­рые находят удоб­ным.

А еще от GNOME отва­лились про­екты MATE и Cinnamon — их раз­работ­чикам не пон­равил­ся интерфейс GNOME 3, и они про­дол­жили раз­вивать вто­рую вет­ку. А в elementary OS исполь­зует­ся своя сре­да под наз­вани­ем Pantheon, которую не встре­тишь боль­ше ниг­де. В общем, раз­нооб­разие огромно!

Соз­датели дис­три­бути­вов, в которые вхо­дит гра­фичес­кая сре­да, обыч­но выбира­ют одну или нес­коль­ко сред, которые будут под­держи­вать офи­циаль­но. Но при этом тебе нич­то не меша­ет поменять DE или уста­новить одновре­мен­но боль­ше одной, что­бы перек­лючать­ся меж­ду ними или исполь­зовать прог­раммы одной сре­ды из дру­гой. Про­буй, экспе­римен­тируй, и сам пой­мешь, что тебе бли­же.

 

Командный интерпретатор

Поль­зовате­ли Windows при­вык­ли к тому, что в этой опе­раци­онной сис­теме име­ется стан­дар­тный интер­пре­татор команд cmd.exe, который при­нято называть коман­дной стро­кой. В пос­ледних вер­сиях вин­ды его орга­нич­но допол­нил PowerShell, одна­ко эти­ми дву­мя сре­дами ассорти­мент коман­дных интер­пре­тато­ров в Windows исчерпы­вает­ся.

В Linux коман­дных интер­пре­тато­ров сущес­тву­ет мно­жес­тво, и, если для Windows они лишь вспо­мога­тель­ное средс­тво адми­нис­три­рова­ния, здесь это один из основных и очень мощ­ных инс­тру­мен­тов работы с сис­темой.

Собс­твен­но, сама исто­рия Linux началась имен­но с коман­дной стро­ки, точ­нее тер­минала или даже телетай­па. Гра­фичес­кий интерфейс к нему при­дела­ли уже зна­читель­но поз­же. Имен­но поэто­му коман­дную стро­ку в Linux час­то называ­ют «эму­лятор тер­минала», а про­цес­сы с ними носят пре­фикс tty (teletype).

Как ты зна­ешь, с исполь­зовани­ем команд в Windows мож­но писать скрип­ты, авто­мати­зиру­ющие какие‑либо дей­ствия: пакет­ные фай­лы (batch files) были в ходу еще со вре­мен MS-DOS, а PowerShell замет­но рас­ширил и углу­бил эту тех­нологию. В Linux мож­но делать то же самое: соб­ранный в файл набор команд интер­пре­тато­ра может работать как слож­ная прог­рамма, а сами коман­ды явля­ются по боль­шому сче­ту язы­ком прог­рамми­рова­ния.

На­боры команд, сох­ранен­ные одним фай­лом, при­нято называть сце­нари­ями или скрип­тами. Все скрип­ты в Linux начина­ются с сим­волов #! (это сочета­ние называ­ется «шебанг») и пути к интер­пре­тато­ру — коман­де, которая будет исполнять скрипт.

Стан­дар­тным коман­дным интер­пре­тато­ром в Linux явля­ется bash — обновлен­ная и модер­низиро­ван­ная вер­сия коман­дной обо­лоч­ки Bourne shell, которая была изоб­ретена Сти­веном Бор­ном в 1978 году и исполь­зовалась еще в клас­сичес­ком Unix.

Прож­женные линук­соиды пред­почита­ют ста­вить вмес­то bash более прод­винутый интер­пре­татор — Z shell (ZSH), обратно сов­мести­мый с bash, но име­ющий по срав­нению с ним мно­жес­тво улуч­шений. Для этой обо­лоч­ки сооб­щес­твом был раз­работан спе­циаль­ный откры­тый и бес­плат­ный фрей­мворк Oh My ZSH, который содер­жит мно­жес­тво пла­гинов для авто­мати­зации работы с коман­дами и скрип­тами. Как минимум Oh My ZSH поз­воля­ет исполь­зовать кра­сивые темы офор­мле­ния окна коман­дной стро­ки, бла­года­ря которым окру­жающие точ­но соч­тут тебя гени­аль­ным хакером.

Пре­дуп­редим о проб­леме, с которой момен­таль­но стал­кива­ется каж­дый новый поль­зователь Linux. Если ты зай­дешь в какой‑то каталог и попыта­ешь­ся написать наз­вание исполня­емо­го фай­ла, что­бы запус­тить его, то ничего не получит­ся. Почему?

При­чина в том, что интер­пре­татор ищет фай­лы толь­ко в катало­гах, которые ука­заны в перемен­ной окру­жения $PATH. То есть тебе нуж­но либо задать пол­ный путь к исполня­емо­му фай­лу, либо явно ука­зать на текущий каталог. Как ты зна­ешь, родитель­ский каталог отме­чает­ся дву­мя точ­ками (../), а что­бы ука­зать на текущий, нуж­но писать ./. То есть вмес­то program пиши ./program, и все получит­ся!

И еще один очень важ­ный момент. В Windows тип фай­ла опре­деля­ется его рас­ширени­ем — в зависи­мос­ти от него коман­дный интер­пре­татор и обо­лоч­ка опре­деля­ют, как они будут обра­баты­вать файл. В Linux все устро­ено нем­ного по‑дру­гому: у bash пол­ностью отсутс­тву­ет какое‑либо ува­жение к рас­ширени­ям фай­лов. Исполня­емый файл отли­чает­ся от обыч­ного не рас­ширени­ем, а наличи­ем пра­ва на его исполне­ние: если оно есть, сис­тема счи­тает такой файл прог­раммой (или скрип­том) и пыта­ется выпол­нить. О пра­вах на фай­лы мы под­робнее погово­рим чуть даль­ше в соот­ветс­тву­ющем раз­деле.

 

Домашний каталог и скрытые файлы

Пос­коль­ку Linux изна­чаль­но задумы­вал­ся как мно­гополь­зователь­ская опе­раци­онная сис­тема, все пути к «домаш­ним» пап­кам, перемен­ные окру­жения, прог­раммы, которые запус­кают­ся при откры­тии тер­минала, и дру­гие нас­трой­ки зада­ются в про­филе поль­зовате­ля. У раз­ных юзе­ров они, соот­ветс­твен­но, раз­ные. Бла­года­ря это­му ты можешь, нап­ример, нас­тро­ить сис­темное окру­жение так, как ком­фор­тно имен­но тебе.

Что­бы ука­зывать на домаш­ний каталог, очень удоб­но исполь­зовать сим­вол ~. Так, вмес­то /home/vasya/ мож­но писать прос­то ~/, если ты залоги­нен как vasya.

В Linux час­то встре­чает­ся то, что в Windows поп­росту невоз­можно: фай­лы, имя которых начина­ется с точ­ки (поль­зовате­ли вин­ды с неп­ривыч­ки дума­ют, буд­то это фай­лы без име­ни, име­ющие одно толь­ко рас­ширение). На самом деле в Linux так обоз­нача­ют скры­тые фай­лы. Нап­ример, имя .htacess говорит нам о том, что этот файл скры­тый, — бла­года­ря наличию точ­ки перед име­нем его лег­ко отли­чить от дру­гих фай­ловых объ­ектов.

В домаш­нем катало­ге поль­зовате­ля хра­нит­ся нес­коль­ко скры­тых фай­лов, которые могут быть очень полез­ны при работе в Linux. Что­бы прос­мотреть скры­тые фай­лы в текущем катало­ге, исполь­зуй кон­соль­ную коман­ду ls -a или поковы­ряй­ся в меню фай­лового менед­жера: нап­ример, в Nautilus пункт «Показать скры­тые фай­лы» пря­чет­ся в меню «Вид». Обра­ти вни­мание на сле­дующие скры­тые фай­лы:

  • .bash_profile — содер­жит информа­цию о поль­зователь­ском окру­жении и запус­каемых при авто­риза­ции поль­зовате­ля прог­раммах. В некото­рых дис­три­бути­вах, осно­ван­ных на Debian, дан­ного фай­ла по умол­чанию не сущес­тву­ет, но ты можешь соз­дать его самос­тоятель­но;
  • .bash_login — этот файл исполня­ется, если отсутс­тву­ет .bash_profile, и выпол­няет схо­жую фун­кцию. Это­го фай­ла не сущес­тву­ет по умол­чанию ни в дис­три­бути­ве Debian, ни в дис­три­бути­ве Red Hat;
  • .profile — выпол­няет­ся при отсутс­твии .bash_profile и .bash_login;
  • .bash_logout — сце­нарий, который выпол­няет­ся авто­мати­чес­ки при завер­шении работы коман­дной обо­лоч­ки;
  • .bash_history — хра­нит информа­цию обо всех коман­дах, наб­ранных в bash;
  • .ssh — каталог, в котором хра­нят­ся клю­чи шиф­рования для под­клю­чения по SSH;
  • .bashrc — сце­нарий, который обыч­но нас­тра­ивает­ся дру­гими сце­нари­ями для сво­их собс­твен­ных нужд — нап­ример, запус­ка демонов или обра­бот­ки каких‑либо команд.

Необходимый минимум команд

Итак, запоми­най самые важ­ные коман­ды, если еще не зна­ешь их:

  • man — чуть ли не самая важ­ная коман­да — она отоб­ража­ет справ­ку о коман­де, наз­вание которой ты напишешь сле­дом;
  • ls (от сло­ва list, спи­сок) — перечис­лить все фай­лы в текущей дирек­тории, ана­лог вин­довой коман­ды dir. Самые важ­ные клю­чи: -a (all) — показы­вать скры­тые фай­лы, -l (long) — показы­вать под­робнос­ти, -h (human) — показы­вать раз­меры в «челове­чес­ких» еди­ницах, а не в бай­тах. Мож­но писать все клю­чи сра­зу: ls -lha;
  • cd (change directory) — сме­нить дирек­торию. Даль­ше мож­но ука­зать пап­ку, в которую ты хочешь перей­ти;
  • pwd (print working directory) — узнать текущий путь;
  • cp (copy) — ско­пиро­вать файл. Даль­ше нуж­но ука­зать, что и куда копиро­вать;
  • mv (move) — перемес­тить файл. Тоже ука­зыва­ем какой, затем — куда;
  • rm (remove) — сте­реть файл. Если сти­раешь каталог, ука­зывай опцию -r (recursive), что­бы сте­реть все под­катало­ги внут­ри, под­катало­ги внут­ри них и так далее;
  • chmod и chown — поменять пра­ва на файл или вла­дель­ца фай­ла;
  • cat (concatenate) — при­дума­на, что­бы объ­еди­нять фай­лы, но час­то исполь­зует­ся, что­бы все­го лишь вывес­ти содер­жимое тек­сто­вого фай­ла. Прос­то напиши его наз­вание пос­ле cat;
  • less — если файл длин­ный, то его удоб­но прок­ручивать. Для это­го и при­дума­на коман­да less;
  • head и tail — с опци­ей -n число показы­вают сколь­ко‑то строк от начала (head) или кон­ца (tail) ука­зан­ного фай­ла;
  • grep — поиск в стро­ке по подс­тро­ке или регуляр­ному выраже­нию;
  • find — поиск фай­лов;
  • mkdir (make directory) — соз­дание дирек­тории;
  • touch — соз­дание пус­того фай­ла. Прос­то ука­жи его наз­вание;
  • sudo — выпол­нить сле­дующую далее коман­ду от име­ни супер­поль­зовате­ля;
  • df (disk free) — пос­мотреть, сколь­ко на дис­ках сво­бод­ного мес­та. Рекомен­дую писать df -h по ана­логии с ls -h;
  • du (disk usage) — узнать, сколь­ко занима­ет каталог. Тоже есть опция -h;
  • ps (processes) — пос­мотреть спи­сок запущен­ных тобой про­цес­сов и их иден­тифика­торы;
  • kill и иден­тифика­тор — завер­шить какой‑то про­цесс.

Нес­коль­ко важ­ных сетевых команд:

  • ping — попин­говать узел;
  • nslookup — узнать информа­цию об узле;
  • traceroute — прос­ледить путь пакетов до узла;
  • netstat — информа­ция об откры­тых пор­тах и соеди­нени­ях;
  • whois — информа­ция о регис­тра­ции домена.

По­мимо это­го, в Linux обыч­но есть нес­коль­ко ути­лит, которые силь­но облегчат тебе жизнь. Если их нет, то сто­ит их уста­новить:

  • git — популяр­ней­шая сис­тема кон­тро­ля вер­сий, как и ядро Linux, соз­данная Линусом Тор­валь­дсом;
  • nano — прос­тей­ший тек­сто­вый редак­тор, работа­ющий в тер­минале;
  • unzip и unrar — думаю, ты догады­ваешь­ся, зачем они нуж­ны;
  • curl нужен для веб‑зап­росов;
  • wget — для ска­чива­ния боль­ших фай­лов;
  • htop показы­вает уро­вень заг­рузки сис­темы и спи­сок про­цес­сов.

Важ­но: вый­ти из прог­рамм, которые не зак­рыва­ются сами, обыч­но мож­но, нажав Q. Прер­вать работу — Ctrl-C. А что­бы вый­ти из vim, если ты его открыл слу­чай­но, набери пос­ледова­тель­ность :q! и наж­ми Enter.

 

Ввод-вывод и пайпы

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

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Подписаться
Уведомить о
15 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии