Журнал LinuxFormat - перейти на главную

LXF171:Ин­тер­фейс ко­манд­ной стро­ки ва­ше­го Raspberry Pi

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Raspberry Pi: Ос­во­им команды

Бен Эве­рард по­ка­зы­ва­ет, как ос­во­ить ин­тер­фейс ко­манд­ной стро­ки ва­ше­го Raspberry Pi и вы­сво­бо­дить всю его мощь, да­же не при­ка­са­ясь к мы­ши.

(thumbnail)
Наш эксперт Бен Эве­рард бро­сил долж­ность ИТ-кон­суль­тан­та, что­бы про­вес­ти два го­да в Тан­за­нии, ус­та­нав­ли­вая в шко­лах сис­те­мы на ба­зе Ubuntu. Те­перь он при­ме­ня­ет свои уме­ния в бур­ля­щем кот­ле от­кры­тий, ка­ко­вым яв­ля­ют­ся Баш­ни Linux Format.

Как вы, не­со­мнен­но, уже об­на­ру­жи­ли, у Raspbian име­ет­ся гра­фи­че­­ский ин­тер­фейс, по­доб­ный ин­тер­фей­су Windows или Mac OS X. В нем вы мо­же­те вы­пол­нять боль­шую часть сво­их по­все­днев­ных за­дач. Здесь есть ме­нед­жер фай­лов, web-брау­зер, тек­сто­вый ре­дак­тор и ку­ча дру­гих по­лез­ных при­ло­же­ний. Од­на­ко ино­гда вам ну­жен ин­тер­фейс, ко­то­рый был бы не­мно­го мощ­нее, и вот тут-то и вы­хо­дит на сце­ну Command Line Interface (CLI). Так­же он из­вес­тен под на­зва­ни­ем Terminal [тер­ми­нал] или Shell [обо­лоч­ка].

Это чис­то тек­сто­вый ин­тер­фейс, где вы пе­ча­тае­те ко­ман­ды и по­лу­чае­те от­вет на них. Не бу­дем вас об­ма­ны­вать: сна­ча­ла он ка­жет­ся не­сколь­ко за­пу­тан­ным. Но пе­ре­жи­вать не сто­ит: как толь­ко вы нач­не­те прак­ти­ко­вать­ся, он бу­дет ста­но­вить­ся все бо­лее по­нят­ным, и вре­мя, по­тра­чен­ное на его изу­че­ние, с лих­вой оку­пит­ся в бу­ду­щем.

Пер­вым де­лом на­до от­крыть тер­ми­нал. Щелк­ни­те по LXTerminal на ра­бо­чем сто­ле Raspbian.

Тут поя­вит­ся стро­ка при­мер­но та­ко­го ви­да:

pi@raspberrypi ~ $

Это под­сказ­ка ко­манд­ной стро­ки. Ко­гда вы ее ви­ди­те, вы по­ни­мае­те, что сис­те­ма го­то­ва при­ни­мать ко­ман­ды.

Вве­ди­те pwd и на­жми­те на кноп­ку Enter. Вы долж­ны уви­деть

/home/pi

Ес­ли вы из­ме­ни­ли свое имя поль­зо­ва­те­ля, то стро­ка бу­дет дру­гой. Ка­жу­щая­ся тай­но­пи­сью ко­ман­да pwd оз­на­ча­ет Print Working Directory, и сис­те­ма про­сто вы­во­дит ди­рек­то­рию, где вы в на­стоя­щий мо­мент на­хо­ди­тесь. Ко­гда вы за­пус­кае­те тер­ми­нал, он пе­рей­дет в ва­шу до­маш­нюю ди­рек­то­рию (в раз­де­ле Raspbian Storage вы най­де­те боль­ше ин­фор­ма­ции о том, что оз­на­ча­ет /home/).

Те­перь мы зна­ем, где мы на­хо­дим­ся; сле­дую­щим ло­ги­че­­ским ша­гом бу­дет пе­ре­ме­ще­ние по ди­рек­то­ри­ям. Это де­ла­ет­ся с по­мо­щью ко­ман­ды cd (change directory). По­про­буй­те вве­сти:

cd ..

pwd

Вы долж­ны уви­деть, что сис­те­ма вер­ну­ла /home. Это по­то­му, что мы да­ли ко­ман­ду из­ме­нить ди­рек­то­рию (cd) на ‘..’, а две точ­ки все­гда ука­зы­ва­ют на ро­ди­тель­скую ди­рек­то­рию. Что­бы вер­нуть­ся на­зад в до­маш­нюю ди­рек­то­рию, мож­но вве­сти cd pi. Есть еще один спо­соб сде­лать это. Знак ~ (тиль­да) все­гда ука­зы­ва­ет на до­маш­нюю ди­рек­то­рию, по­это­му где бы вы ни на­хо­ди­лись в фай­ло­вой сис­те­ме, вы мо­же­те вве­сти cd ~ — и по­па­де­те к се­бе «до­мой».

Те­перь на­бе­ри­те ls и на­жми­те на Enter. Вы­ве­дет­ся спи­сок всех фай­лов из те­ку­щей ди­рек­то­рии. Од­но из ог­ром­ных пре­иму­ществ ко­манд в том, что мы мо­жем ска­зать им, как имен­но они долж­ны се­бя вес­ти. Это де­ла­ет­ся с по­мо­щью фла­гов — они идут по­сле ко­ман­ды и на­чи­на­ют­ся с ‘-’. На­при­мер, ес­ли нуж­но пе­ре­чис­лить все фай­лы в те­ку­щей ди­рек­то­рии (вклю­чая скры­тые фай­лы, ко­то­рые в сис­те­мах, ос­но­ван­ных на Unix, на­чи­на­ют­ся с ‘.’), ис­поль­зу­ет­ся флаг -a. По­это­му в тер­ми­на­ле вве­ди­те ls -a.

На сей раз вы долж­ны уви­деть боль­ше фай­лов. Еще один флаг для ls — это -l. Он да­ет нам боль­ше ин­фор­ма­ции о ка­ж­дом фай­ле. По­про­буй­те его, вве­дя ls -l . Вы да­же мо­же­те ком­би­ни­ро­вать фла­ги, как, на­при­мер, в ls -al.

Учим­ся вы­би­рать ко­ман­ды

Сей­час вы, ве­ро­ят­но, раз­мыш­ляе­те о том, от­ку­да вам знать, ка­ким ко­ман­да­ми и ка­ки­ми фла­га­ми на­до вос­поль­зо­вать­ся для ре­ше­ния оп­ре­де­лен­ной за­да­чи.. Здесь есть хо­ро­шая но­вость и пло­хая но­вость. Хо­ро­шая но­вость в том, что вы­яс­нить, ка­кие фла­ги име­ют­ся для ко­ман­ды, обыч­но не про­бле­ма. Боль­шин­ст­во из них под­дер­жи­ва­ют фла­ги -h или --help, ко­то­рые да­дут вам ин­фор­ма­цию о фла­гах, при­ни­мае­мых ко­ман­дой, и их при­ме­не­нии. На­при­мер, за­пус­тив ls --help, вы уви­ди­те длин­ный спи­сок фла­гов и то­го, что они де­ла­ют, в том чис­ле:

-a, --all не иг­но­ри­ро­вать за­пи­си, на­чи­наю­щие­ся с .

-l ис­поль­зо­вать фор­мат длин­но­го спи­ска

Вто­рой спо­соб по­лу­чить ин­фор­ма­цию по ко­ман­де — на­брать man. Это со­кра­ще­ние от manual [ру­ко­во­дство]. Он ис­поль­зу­ет один ар­гу­мент, то есть сло­во по­сле ко­ман­ды, пе­ред ко­то­рым нет де­фи­са. За­тем он ото­бра­жа­ет ин­фор­ма­цию по ко­ман­де, вве­ден­ной в ка­че­­ст­ве ар­гу­мен­та. Что­бы по­смот­реть man по ls, вве­ди­те man ls. Мо­же­те пе­ре­ме­щать­ся по стра­ни­цам с по­мо­щью кла­виш со стрел­ка­ми или кла­виш Page Up и Page Down, что­бы про­кру­чи­вать их бы­ст­рее. Что­бы най­ти в спра­воч­ни­ке man сло­во или фра­зу, вве­ди­те /, а за­тем нуж­ную фра­зу. На­при­мер, /-l най­дет все сов­па­де­ния для -l. Мо­же­те ис­поль­зо­вать кла­ви­шу N и Shift+N, что­бы пе­ре­ме­щать­ся впе­ред и на­зад по вхо­ж­де­ни­ям -l.

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

Как же мне уз­нать?..

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

Что­бы най­ти в ва­шей сис­те­ме все про­грам­мы, от­но­ся­щие­ся к ‘browser’, за­пус­ти­те man -k browser. Вы уви­ди­те, что в спи­ске бу­дут пе­ре­чис­ле­ны не толь­ко про­грам­мы ко­манд­ной стро­ки, но и гра­фи­че­­ские про­грам­мы. Это по­то­му, что ме­ж­ду ни­ми на са­мом де­ле нет раз­ни­цы. Мож­но за­пус­кать ок­на из тер­ми­на­ла и да­же управ­лять ими.

Ес­ли у вас есть Iceweasel (реб­рен­дин­го­вая вер­сия Firefox) на ва­шем Pi (по умол­ча­нию она там не ус­та­нов­ле­на), вы мо­же­те от­крыть TuxRadar.com в но­вой вклад­ке в от­кры­том ок­не Iceweasel с по­мо­щью ко­ман­ды iceweasel --new-tab www.tuxradar.com.

Те­перь мы бы­ст­рень­ко по­зна­ко­мим вас с не­сколь­ки­ми по­лез­ны­ми ко­ман­да­ми. rm уда­ля­ет (ReMoves) файл. mkdir соз­да­ет но­вую ди­рек­то­рию. cp ко­пи­ру­ет файл из од­но­го мес­та в дру­гое. Ему нуж­но два ар­гу­мен­та: ис­ход­ный файл и но­вый файл. cat вы­во­дит со­дер­жа­ние од­но­го или бо­лее тек­сто­вых фай­лов. Он мо­жет при­нять сколь­ко угод­но ар­гу­мен­тов, ка­ж­дый для од­но­го тек­сто­во­го фай­ла, и пе­ре­дать их со­дер­жи­мое в тер­ми­нал.

less — бо­лее дру­же­ст­вен­ный спо­соб про­смот­ра тек­сто­вых фай­лов. Он по­зво­ля­ет про­кру­чи­вать файл вверх-вниз с по­мо­щью кла­виш со стрел­ка­ми. Что­бы вый­ти из про­грам­мы и вер­нуть­ся в ко­манд­ную стро­ку, на­жми­те на Q. Мы бу­дем ис­поль­зо­вать все эти ко­ман­ды в при­ме­рах ни­же, так что за­дер­жи­вать­ся на них не бу­дем.

find — по­лез­ная ко­ман­да для по­ис­ка фай­лов на ва­шем ком­пь­ю­те­ре. Вы ис­поль­зуе­те ее в фор­ма­те find <где ис­кать> <фла­ги>. На­при­мер, что­бы най­ти все фай­лы на ва­шем ком­пь­ю­те­ре, ко­то­рые бы­ли из­ме­не­ны за день до это­го, за­пус­ти­те

find / -mtime 1

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

Боль­ше мо­щи

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

Во-пер­вых, мы соз­да­дим но­вую ди­рек­то­рию, пе­ре­мес­тим­ся в нее и соз­да­дим не­сколь­ко пус­тых фай­лов (мы ис­поль­зу­ем ко­ман­ду touch, ко­то­рая соз­да­ет пус­той файл с име­нем ка­ж­до­го ар­гу­мен­та). Под­сказ­ка — вы мо­же­те ис­поль­зо­вать ав­то­за­пол­не­ние (см. врез­ку вверху), что­бы не на­би­рать по­сто­ян­но длин­ные на­зва­ния, как, на­при­мер, во вто­рой стро­ке.

mkdir wildcards

cd wildcards

touch one two three four

touch one.txt two.txt three.txt four.txt

За­тем за­пус­тим ls, что­бы уви­деть, ка­кие фай­лы есть в но­вой ди­рек­то­рии. Вы долж­ны уви­деть во­семь.

Пер­вый шаб­лон, ко­то­рый мы бу­дем ис­поль­зо­вать — *. Он со­от­вет­ст­ву­ет лю­бой стро­ке от ну­ля до боль­ше­го ко­ли­че­­ст­ва сим­во­лов. В про­стей­шем слу­чае он со­от­вет­ст­ву­ет лю­бо­му фай­лу в ди­рек­то­рии. По­про­буй­те за­пус­тить:

ls *

По­ка это не осо­бо удоб­но, но мы мо­жем по­ста­вить его сре­ди дру­гих сим­во­лов. Как вы ду­мае­те, че­му бу­дет со­от­вет­ст­во­вать *.txt? По­ду­май­те, а по­том за­пус­ти­те:

ls *.txt

что­бы про­ве­рить пра­виль­ность ва­ших вы­во­дов. Как на­счет one*? Сно­ва за­пус­ти­те

ls one*

что­бы уви­деть, пра­вы ли вы. Шаб­ло­ны мож­но ис­поль­зо­вать с лю­бой про­грам­мой ко­манд­ной стро­ки. Осо­бен­но они удоб­ны для сор­ти­ров­ки фай­лов. Что­бы ско­пи­ро­вать все тек­сто­вые фай­лы в но­вую ди­рек­то­рию, за­пус­ти­те

mkdir text-files

cp *.txt text-files

За­тем про­ве­рим, пра­виль­но ли это сде­ла­но, ко­ман­дой

ls text-files/

Шаб­лон: ?

Вто­рой шаб­лон, ко­то­рый мы рас­смот­рим, это ?. Он со­от­вет­ст­вует лю­бо­му оди­ноч­но­му сим­во­лу. Как вы ду­мае­те, че­му бу­дет со­от­вет­ст­во­вать

ls ???

По­про­буй­те до­га­дать­ся, а за­тем за­пус­ти­те ко­ман­ду, что­бы про­ве­рить пра­виль­ность сво­ей до­гад­ки.

Мы так­же мо­жем са­ми соз­да­вать шаб­ло­ны, со­от­вет­ст­вую­щие сим­во­лам, ко­то­рые нам нуж­ны. [abc] бу­дет со­от­вет­ст­во­вать ма­лень­ким бу­к­вам А, В и С. Как вы ду­мае­те, че­му бу­дет со­от­вет­ст­во­вать ls [ot]*? Те­перь по­про­буй­те за­пус­тить

ls [!ot]*

Что но­во­го внес вос­кли­ца­тель­ный знак? Он дол­жен был вер­нуть все, что не на­чи­на­ет­ся с ма­лень­ких букв О или Т.

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

Чтобы отправить его в файл, используйте символ >, за которым следует имя файла. Запустите

ls > files

cat files

и вы должны увидеть, что создан новый файл под названием files, и в нем содержится результат команды ls.

Вторая опция, возможность отправить результат в другую программу, являет собой еще одну действительно мощную функцию командной строки Linux, поскольку она позволяет соединить несколько команд в цепочку, сделав из них одну супер-команду.

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

Рассмотрим очень простой пример. Если вы запустите find / (но пока что не делайте этого!), вам выведется список всех файлов системы.

У вас получится длиннейший список из файловых имен, которые будут быстро бежать по экрану. Однако вместо того, чтобы выводить его на экран, мы можем отправить его в другую команду, которая сделает результат более удобным для чтения. Мы можем использовать для этого команду less, которую рассматривали ранее. Запустите:

find / | less

Идем дальше

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

Если вы хотите узнать больше (а это следует сделать!), вам в помощь есть множество ресурсов, как в печатном виде, так и онлайн. Очень хорошим стартовым пунктом станет www.linuxcommand.org. Их книгу (The Linux Command Line) можно приобрести в книжных магазинах, или найти бесплатно онлайн (www.linuxcommand.org/lc3_learning_the_shell.php).


Спра­воч­ник LXF по ко­ман­дам — вы­ре­жи и за­пом­ни!

Навигация и файлы

» cd Change directory — Смена директории. Например, cd movies переходит в папку movies. cd ~ переходит в домашнюю директорию, cd / переходит в директорию root, а cd .. переходит на одну директорию назад.

» ls List files — Вывод списка файлов. Сама по себе она выводит файлы из текущей директории. ls movies перечисляет файлы в директории movies. ls -a перечисляет все файлы (в том числе скрытые), а ls -l выдает более подробную информацию о каждом файле.

» cp Copy files — Копирование файлов. cp orig-file new-file копирует orig-file в new-file.

» wget Загружает файл из Интернет. Чтобы скачать домашнюю страницу Google в текущую директорию, используйте wget www.google.com.

» df -h Отображает количе­ство свободного места на устройстве.

» pwd Ото­бра­жа­ет те­ку­щую ди­рек­то­рию.

Поиск файлов

» find <location> <flags> среди полезных флагов: -mtime

<number> находит файлы, измененные за последние <number> дней. <number> может быть, например, 2 (ровно два дня назад), -2 (менее двух дней назад) или +2 (более двух дней назад).

-name <filename> находит файлы под названием <filename>. -iname <filename> соответствует файлам с именем <filename>, регистр букв (строчные или заглавные) неважен.

-writable находит записываемые файлы. Опций намного больше. Более подробный их список вы найдете в справочнике man. Например, find / -mtime -2 -writable находит все файлы в системе, которые были изменены менее двух дней назад и могут быть записаны текущим пользователем.

Удаленная работа

» ssh Войдите на удаленный компьютер с помощью Secure SHell (SSH протокол). ssh pi@192.168.1.2 войдет в каче­стве пользова­теля pi на компьютер с IP-адресом 192.168.1.2. Помните: это будет работать, только если на удаленном компьютере работает сервер SSH.

» scp Secure CoPy. scp file pi@192.168.1.2:/home/pi скопи­рует файл в директорию home/pi на компьютере с 192.168.1.2. scp pi@192.168.1.2:/home/pi/file скопирует файл home/pi/file с машины 192.168.1.2 в текущую директорию. Помните: это будет работать, только если на удаленной машине работает сервер SSH.

Шаблоны

» * Соответствует любой строке символов, или никакому символу.

» ? Соответствует любому единичному символу.

» [abc] Соответствует a, b или c.

» [!abc] Соответствует любому символу, кроме a, b или c.

» [A-Z] Соответствует любому символу в диапазоне A–Z (т. е. любой заглавной букве).

» [A-z] Соответствует любому символу в диапазоне A–z (т. е. любой заглавной или маленькой букве).

» [one, two] Со­от­вет­ст­ву­ет сло­вам one и two.

Информация о компьютере

» top Отображает программы, в данный момент потребляющие наибольшее количество тактов CPU и памяти.

» uname Отображает информацию о ядре. uname –m выведет информацию об архитектуре, на которой работает.

» lscpu Выводит информацию о CPU.

» dmesg Отображает сообщения ядра (может при­го­дить­ся для обнаружения проблем с оборудованием).

Текcтовые файлы

» head Отображает первые десять строк текстового файла. Замените десять на любое другое число с флагом -n. Например, dmesg | head -n 15 отобразит первые 15 строк журнала сообщений ядра.

» tail Отображает последние десять строк текстового файла. Может использовать флаг -n, как и с head, а также отслеживать изменения в файле с помощью флага -f (follow). Например, tail -n15 -f /var/log/syslog отобразит последние 15 строк файла журнала системы, и продолжит это делать по мере изменения файла.

» less Позволяет проматывать текстовый файл.

» cat выводит содержание текстового файла в терминал.

» nano Дружелюбный к пользователю текстовый редактор командной строки (Ctrl + X позволяет выйти и сохранить изменения).

Специальные клавиши

» Ctrl+C Убивает любую программу, работающую в терминале.

» Ctrl+D Отправляет при­знак кон­ца файла в любую программу, работающую в терминале.

» Ctrl+Shift+C Копирует выделенный текст в буфер обмена.

» Ctrl+Shift+V Встав­ля­ет текст из бу­фе­ра об­ме­на.

Установка программ

» tar zxvf file.tar.gz

» tar xjf file.tar.bz

» ./configure Ко­гда вы рас­па­ко­вы­вае­те ис­ход­ный код про­грам­мы, обыч­но соз­да­ет­ся но­вая ди­рек­то­рия с про­грам­мой внут­ри нее. Вой­ди­те в эту ди­рек­то­рию с по­мо­щью сd и за­пус­ти­те ./configure. Ва­ша сис­те­ма бу­дет про­ве­ре­на на пред­мет на­ли­чия в ней все­го не­об­хо­ди­мо­го для ком­пи­ля­ции про­грамм.

» make Эта ко­ман­да ском­пи­ли­ру­ет про­грам­му.

» make install (тре­бу­ет sudo) Эта ко­ман­да пе­ре­мес­тит вновь ском­пи­ли­ро­ван­ное ПО в со­от­вет­ст­вую­щее ме­сто в ва­шей сис­те­ме, что­бы вы мог­ли за­пус­кать его, как обыч­ную ко­ман­ду.

» apt-get Эту ко­ман­ду мож­но ис­поль­зо­вать для ус­та­нов­ки и уда­ле­ния про­грамм.

На­при­мер, sudo apt-get install iceweasel ус­та­но­вит па­кет iceweasel (реб­рен­дин­го­вую вер­сию Firefox). sudo apt-get purge iceweasel уда­лит па­кет. apt-get update ска­ча­ет об­нов­лен­ный спи­сок па­ке­тов из ре­по­зи­то­рия (не­пло­хая идея; всё бы так де­лалось!). apt-get upgrade об­но­вит все па­ке­ты, у ко­то­рых есть бо­лее но­вая вер­сия в ре­по­зи­то­рии.

» apt-cache search <keyword> бу­дет ис­кать в ре­по­зи­то­рии все па­ке­ты, со­от­вет­ст­вую­щие клю­че­во­му сло­ву. |

Персональные инструменты
купить
подписаться
Яндекс.Метрика