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

LXF151:Покорим командную строку

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: « $ покорим \ > командную строку {{Врезка|Содержание=Ваши пальцы обладают суперсилой, главн…»)
 
 
(не показаны 12 промежуточных версий 1 участника)
Строка 1: Строка 1:
$ покорим \ > командную строку
+
{{Врезка|Содержание=Командная строка — чрезвычайно мощный способ взаимодействия с компьютером. Она не только предоставляет доступ ко многим низкоуровневым административным утилитам, но и является эффективным и гибким способом решать ежедневные задачи.|Ширина=30%}}
{{Врезка|Содержание=Ваши пальцы обладают суперсилой, главное – уметь ею пользоваться. Джонатан Робертс овладевает командной строкой...}}
+
:''Ваши пальцы обладают суперсилой, главное – уметь ею пользоваться. '''Джонатан Робертс''' овладевает командной строкой...''
 
+
<!-- $ покорим \ > командную строку / По­ко­ре­ние ко­манд­ной стро­ки -->
'''Командная строка — чрезвычайно мощный способ взаимодействия с компьютером. Она не только предоставляет доступ ко многим низкоуровневым административным утилитам, но и является эффективным и гибким способом решать ежедневные задачи.'''
+
 
+
 
К сожалению, непосвященных она немало пугает. Этот мигающий курсор и загадочный текст, идущий перед ним, намекают на целый мир возможностей, но отнюдь не поясняют, с чего начать.
 
К сожалению, непосвященных она немало пугает. Этот мигающий курсор и загадочный текст, идущий перед ним, намекают на целый мир возможностей, но отнюдь не поясняют, с чего начать.
  
Строка 13: Строка 11:
  
 
Присматривайте за врезками с примерами, поскольку проверка теории на практике – это лучший способ ознакомиться с материалом. А в качестве небольшого бонуса, сотрудники LXF открыли свои любимые трюки в командной строке. Мы многое увидим, многое узнаем и здорово позабавимся, так чего же вы ждете?
 
Присматривайте за врезками с примерами, поскольку проверка теории на практике – это лучший способ ознакомиться с материалом. А в качестве небольшого бонуса, сотрудники LXF открыли свои любимые трюки в командной строке. Мы многое увидим, многое узнаем и здорово позабавимся, так чего же вы ждете?
 
+
{{Врезка|Ширина=30%|Содержание=«Мигающий курсор и текст намекают на целый мир возможностей...»}}
 
== Перво-наперво ==
 
== Перво-наперво ==
Перед погружением в настоящую работу. давайте начнем с самого начала (я знаю, это тавтология) и убедимся, что мы мыслим одинаково. Командная строка – это просто вариант интерфейса к вашему компьютеру, как Gnome или KDE. Ее отличает то, что здесь вы не нажимаете мышью на красивые кнопочки, а управляете компьютером, вводя команды с клавиатуры.
+
 
 +
Перед погружением в настоящую работу давайте начнем с самого начала (я знаю, это тавтология) и убедимся, что мы мыслим одинаково. Командная строка – это просто вариант интерфейса к вашему компьютеру, как Gnome или KDE. Ее отличает то, что здесь вы не нажимаете мышью на красивые кнопочки, а управляете компьютером, вводя команды с клавиатуры.
 +
 
 
В командах нет ни малейшего волшебства: это просто сочетания букв, интерпретируемые компьютером по строгим правилам. Каждая команда начинается со своего имени, чтобы компьютер распознавал, что вы вызываете, а после имени могут стоять опции и аргументы, управляющие работой команды.
 
В командах нет ни малейшего волшебства: это просто сочетания букв, интерпретируемые компьютером по строгим правилам. Каждая команда начинается со своего имени, чтобы компьютер распознавал, что вы вызываете, а после имени могут стоять опции и аргументы, управляющие работой команды.
Многие из этих опций и аргументов определяют, с какой папкой или файлом эта команда должна работать, и в отсутствии графического менеджера файлов есть специальный синтаксис для их указания в командной строке. В системе Linux файлы и папки организованы в иерархическую структуру, в верхней ступени которой стоит корневая папка. В командной строке эта корневая папка задается одиночным прямым слэшем, /. Все лежащие ниже файлы и папки представлены своими именами, которые чувствительны к регистру букв, а разные папки отделены другим прямым слэшем.
 
Например, моя домашняя папка, которая является подпапкой системной папки home (а та, в свою очередь, является подпапкой корневой папки), выглядит как /home/jon/. К такому представлению мы будем прибегать неоднократно, и это скоро сделается вашей второй натурой.
 
  
{{Врезка|Содержание=«Мигающий курсор и текст намекают на целый мир возможностей...»}}
+
Многие из этих опций и аргументов определяют, с какой папкой или файлом эта команда должна работать, и в отсутствии графического менеджера файлов есть специальный синтаксис для их указания в командной строке. В системе Linux файлы и папки организованы в иерархическую структуру, в верхней ступени которой стоит корневая папка. В командной строке эта корневая папка задается одиночным прямым слэшем, <code>/</code>. Все лежащие ниже файлы и папки представлены своими именами, которые чувствительны к регистру букв, а разные папки отделены другим прямым слэшем.
  
274612.png
+
Например, моя домашняя папка, которая является подпапкой системной папки home (а та, в свою очередь, является подпапкой корневой папки), выглядит как <code>/home/jon/</code>. К такому представлению мы будем прибегать неоднократно, и это скоро сделается вашей второй натурой.
271028.png
+
271063.png Примеры командных файлов
+
  
 
=Ваша первая команда: ls=
 
=Ваша первая команда: ls=
 +
[[Файл:LXF151.feature1.termin opt.jpeg|thumb|300px|Чтобы получить доступ к командной строке, она же — оболочка, запустите приложение Terminal в Gnome или Konsole в KDE.]]
 +
{{врезка|Заголовок=Терминал и терминология|Содержание=
 +
Если вы уже читали про командную строку в Интернете, вы, наверно, видели, что ее сопровождает много терминов, которые с виду обозначают очень похожие объекты.
 +
Два часто применяемых термина, оболочка и командная строка, вполне взаимозаменяемы и обозначают текстовый интерфейс; а другой часто используемый термин, терминал, имеет совсем другое значение.
 +
Терминал – это программа, которая предоставляет доступ к командной строке. По своей функции она довольно проста – забирает то, что вы вводите с клавиатуры, и отображает это на экране; а еще она получает вывод от разнообразных команд, которые вы запускали, и тоже отображает это на экране.
 +
В данной статье, говоря «запустить терминал», мы будем иметь в виду запуск этой программы с целью получить доступ к командной строке. В Gnome или Xfce вам, скорее всего, следует найти программу под названием Terminal, тогда как в KDE эта программа называется Konsole.|Ширина=30%}}
 +
Разобравшись с основой, пора вызвать первую команду. Команда, с которой мы хотим начать, называется <code>ls</code> – она всего-навсего выводит список содержимого каталога. Действия команды легко запомнить: она похожа на “list”. Сначала мы вызовем терминал (см. врезку), после чего вы увидите на рабочем столе новое окно. Там на белом (или черном) фоне будет виден непонятный текст. Этот текст, с мигающим курсором после него, называется приглашением – оно указывает, что компьютер готов принимать команды.
 +
 +
Ну, раз уж компьютер готов, вводите в окне терминала имя команды, то есть <code>ls</code>, и жмите Ввод. Вы сразу увидите, что в терминале появится несколько строк текста, а после них будет новое приглашение, указывающее, что компьютер опять готов к новой команде.
  
Разобравшись с основой, пора вызвать первую команду. Команда, с которой мы хотим начать, называется ls – она всего-навсего выводит список содержимого каталога. Действия команды легко запомнить: она похожа на “list”. Сначала мы вызовем терминал (см. врезку внизу), после чего вы увидите на рабочем столе новое окно. Там на белом (или черном) фоне будет виден непонятный текст. Этот текст, с мигающим курсором после него, называется приглашением – оно указывает, что компьютер готов принимать команды.
 
Ну, раз уж компьютер готов, вводите в окне терминала имя команды, то есть ls, и жмите Ввод. Вы сразу увидите, что в терминале появится несколько строк текста, а после них будет новое приглашение, указывающее, что компьютер опять готов к новой команде.
 
 
Если посмотреть на выведенный текст повнимательнее, можно заметить, что он вам знаком... ба, это же список всех файлов вашей папки home!
 
Если посмотреть на выведенный текст повнимательнее, можно заметить, что он вам знаком... ба, это же список всех файлов вашей папки home!
Ваш первый аргумент
+
 
 +
==Ваш первый аргумент==
 +
[[Файл:LXF151.feature1.music opt.jpeg|thumb|300px|Ко­ман­да ls с пап­кой Music, ко­то­рую пе­ре­да­ли ей в ви­де ар­гу­мен­та.]]
 
Мило и несложно, не так ли? Но почему же команда вывела содержимое именно домашней папки, а не папки Music или какой-либо другой?
 
Мило и несложно, не так ли? Но почему же команда вывела содержимое именно домашней папки, а не папки Music или какой-либо другой?
 +
 
Оказывается, что при работе в командной строке вы всегда работаете то в одном каталоге, то в другом – ни одна команда не работает вне этого контекста. Очевидно, каждый сеанс работы с командной строкой где-то да начинается, и по умолчанию это место – домашний каталог пользователя.
 
Оказывается, что при работе в командной строке вы всегда работаете то в одном каталоге, то в другом – ни одна команда не работает вне этого контекста. Очевидно, каждый сеанс работы с командной строкой где-то да начинается, и по умолчанию это место – домашний каталог пользователя.
 +
 
Это, конечно, хорошо, но все же не объясняет, почему ls выдал содержимое именно домашнего каталога. А дело в том, что раз мы ничего не задали ls, то команда решила, что мы хотим увидеть содержимое текущего каталога, коим на данным момент является домашняя папка.
 
Это, конечно, хорошо, но все же не объясняет, почему ls выдал содержимое именно домашнего каталога. А дело в том, что раз мы ничего не задали ls, то команда решила, что мы хотим увидеть содержимое текущего каталога, коим на данным момент является домашняя папка.
Однако мы можем сообщить ls, что намерены заглянуть в другое место, путем «передачи аргумента» этой команде. По сути это означает, что после ввода имени команды вы указываете расположение папки, содержимое которой вас интересует. Так, если вам хочется посмотреть содержимое папки с музыкой, команда должна быть ls Music.
+
 
Заметьте, что мы ввели просто Music, а не полный путь к этой папке, который выглядит как /home/jon/Music. Это называется «относительным путем»: поскольку мы уже внутри нашей домашней папки, полный путь указывать не нужно. Командная строка просто произведет поиск папки с заданным именем в текущем каталоге.
+
Однако мы можем сообщить ls, что намерены заглянуть в другое место, путем «передачи аргумента» этой команде. По сути это означает, что после ввода имени команды вы указываете расположение папки, содержимое которой вас интересует. Так, если вам хочется посмотреть содержимое папки с музыкой, команда должна быть <code>ls Music</code>.
Терминал и терминология
+
 
Если вы уже читали про командную строку в Интернете, вы, наверно, видели, что ее сопровождает много терминов, которые с виду обозначают очень похожие объекты.
+
Заметьте, что мы ввели просто Music, а не полный путь к этой папке, который выглядит как <code>/home/jon/Music</code>. Это называется «относительным путем»: поскольку мы уже внутри нашей домашней папки, полный путь указывать не нужно. Командная строка просто произведет поиск папки с заданным именем в текущем каталоге.
Два часто применяемых термина, оболочка и командная строка, вполне взаимозаменяемы и обозначают текстовый интерфейс; а другой часто используемый термин, терминал, имеет совсем другое значение.
+
 
Терминал – это программа, которая предоставляет доступ к командной строке. По своей функции она довольно проста – забирает то, что вы вводите с клавиатуры, и отображает это на экране; а еще она получает вывод от разнообразных команд, которые вы запускали, и тоже отображает это на экране.
+
=МИНИ-ПРОЕКТ 1 Рулим папками и файлами=
В данной статье, говоря «запустить терминал», мы будем иметь в виду запуск этой программы с целью получить доступ к командной строке. В Gnome или Xfce вам, скорее всего, следует найти программу под названием Terminal, тогда как в KDE эта программа называется Konsole.
+
 
LXF151.feature1.terminal.jpg
+
277685.png Чтобы получить доступ к командной строке, она же — оболочка, запустите приложение Terminal в Gnome или Konsole в KDE.
+
МИНИ-ПРОЕКТ 1 Рулим папками и файлами
+
 
Теперь вы умеете применять одну команду и видоизменять ее работу одним аргументом. Но чтобы ваши новоприобретенные знания принесли пользу, вам придется узнать некоторые другие команды и осмыслить способы их совместного употребления.
 
Теперь вы умеете применять одну команду и видоизменять ее работу одним аргументом. Но чтобы ваши новоприобретенные знания принесли пользу, вам придется узнать некоторые другие команды и осмыслить способы их совместного употребления.
 +
 
В этом разделе мы шаг за шагом освоим простой мини-проект, который познакомит вас с программами, облегчающими управление файлами и папками, перемещение по файловой системе и редактирование текстовых файлов.
 
В этом разделе мы шаг за шагом освоим простой мини-проект, который познакомит вас с программами, облегчающими управление файлами и папками, перемещение по файловой системе и редактирование текстовых файлов.
 +
 
Опять же для взаимопонимания, мы включили макет домашней папки на диск этого номера. Скопируйте его в вашу родную домашнюю папку и распакуйте любой понравившейся вам программой, внимательно проследив за именем папки (jons-home).
 
Опять же для взаимопонимания, мы включили макет домашней папки на диск этого номера. Скопируйте его в вашу родную домашнюю папку и распакуйте любой понравившейся вам программой, внимательно проследив за именем папки (jons-home).
 +
 
Заглянув вовнутрь, вы быстро осознаете предпосылки нашего мини-проекта. Мои файлы для LXF рассеяны по всей домашней папке, и вам нужно помочь мне отследить их и закончить работу. Задача несколько притянутая за уши, однако работу нужно выполнить.
 
Заглянув вовнутрь, вы быстро осознаете предпосылки нашего мини-проекта. Мои файлы для LXF рассеяны по всей домашней папке, и вам нужно помочь мне отследить их и закончить работу. Задача несколько притянутая за уши, однако работу нужно выполнить.
 +
 
Первая наша задача в командной строке – попасть в эту лжедомашнюю папку. Запустите новое окно терминала и выполните команду ls, чтобы убедиться, что мы находимся в нашей домашней папке. Если вы распаковали фальшивую папку сюда, то в списке вы должны увидеть jons-home. Чтобы попасть в нее, необходимо использовать команду cd.
 
Первая наша задача в командной строке – попасть в эту лжедомашнюю папку. Запустите новое окно терминала и выполните команду ls, чтобы убедиться, что мы находимся в нашей домашней папке. Если вы распаковали фальшивую папку сюда, то в списке вы должны увидеть jons-home. Чтобы попасть в нее, необходимо использовать команду cd.
 +
 
cd означает – по крайней мере, в нашем понимании – change directory [сменить каталог]; именно это команда и делает. Вызов cd без аргументов переместит вас в ваш домашний каталог, но нам туда не надо. А если приписать к команде аргумент – имя папки, куда вы хотите попасть – команда переместит вас в эту папку, что намного полезнее. Чтобы оказаться в jons-home, нужна, стало быть, команда cd jons-home.
 
cd означает – по крайней мере, в нашем понимании – change directory [сменить каталог]; именно это команда и делает. Вызов cd без аргументов переместит вас в ваш домашний каталог, но нам туда не надо. А если приписать к команде аргумент – имя папки, куда вы хотите попасть – команда переместит вас в эту папку, что намного полезнее. Чтобы оказаться в jons-home, нужна, стало быть, команда cd jons-home.
 +
 
По выполнении команды вроде бы ничего не происходит. Действительно, результат не так заметен, как в команде ls. Но, присмотревшись внимательнее, вы увидите, что текст в приглашении изменился. Тильда ~ пропала, и на ее место очутилось jons-home, имя новой текущей папки.
 
По выполнении команды вроде бы ничего не происходит. Действительно, результат не так заметен, как в команде ls. Но, присмотревшись внимательнее, вы увидите, что текст в приглашении изменился. Тильда ~ пропала, и на ее место очутилось jons-home, имя новой текущей папки.
 +
 
Эта часть приглашения всегда отображает имя текущей папки, чтобы вы не потерялись. Тильда ~, которая сперва кажется странной, на деле является сокращением для домашнего каталога пользователя. При желании в этом можно убедиться, если ввести сначала cd ~, а затем ls – вы снова попадете в ваш домашний каталог. Ура! Теперь взглянем командой ls на то, что внутри jons-home. Вы увидите, что там несколько файлов для каждой из статей, которые я написал для данного номера. Глупо и неряшливо. Не будет ли аккуратнее завести для каждой статьи отдельную папку? Думаю, да, и этим-то вы и займетесь.
 
Эта часть приглашения всегда отображает имя текущей папки, чтобы вы не потерялись. Тильда ~, которая сперва кажется странной, на деле является сокращением для домашнего каталога пользователя. При желании в этом можно убедиться, если ввести сначала cd ~, а затем ls – вы снова попадете в ваш домашний каталог. Ура! Теперь взглянем командой ls на то, что внутри jons-home. Вы увидите, что там несколько файлов для каждой из статей, которые я написал для данного номера. Глупо и неряшливо. Не будет ли аккуратнее завести для каждой статьи отдельную папку? Думаю, да, и этим-то вы и займетесь.
 +
 
Первым делом создадим папку для каждой статьи командой mkdir. Возможно, вам будет просто ее заучить, так как она напоминает “make directory” [создать каталог].
 
Первым делом создадим папку для каждой статьи командой mkdir. Возможно, вам будет просто ее заучить, так как она напоминает “make directory” [создать каталог].
 +
 
Чтобы команда mkdir сработала, ей нужно передать один аргумент, указывающий имя создаваемого каталога. Допустим, для создания каталога под файлы этой статьи выполните mkdir command-feature.
 
Чтобы команда mkdir сработала, ей нужно передать один аргумент, указывающий имя создаваемого каталога. Допустим, для создания каталога под файлы этой статьи выполните mkdir command-feature.
Возьмите себя в скобки
+
 
 +
{{Врезка|Заголовок=Примеры (1)|Ширина=100%|Содержание=
 +
В этом разделе мы будем в основном рассматривать команду ls, в целях демонстрации основ командной строки.
 +
 
 +
Конечно, ls умеет не только выводить содержимое каталога; вот примеры, как обращаться с ее выводом. Вы, возможно, захотите к ним вернуться после знакомства с «опциями» далее в статье:
 +
<br><code>[jon@adam ~]$ ls -a</code><br>
 +
Выводит список всех файлов каталога, включая «скрытые», то есть те, у которых перед именем файла стоит точка.
 +
<br><code>[jon@adam ~]$ ls --color</code><br>
 +
Раскрашивает вывод указанным цветом (color) для облегчения его чтения.
 +
<br><code>[jon@adam ~]$ ls --sort=X</code><br>
 +
Сортирует вывод по признаку, отличному от имени файла. X рассортировывает по расширению, S – по размеру, t – по времени, а v – по версии.
 +
<br><code>[jon@adam ~]$ ls -l <filename></code><br>
 +
Выводит подробности о <filename>, включая права доступа, владельца и время последнего изменения файла.}}
 +
 
 +
==Возьмите себя в скобки==
 +
[[Файл:LXF151.feature1.prompt opt.jpeg|thumb|300px|При­гла­ше­ние круп­ным пла­ном. Об­ра­ти­те вни­ма­ние, что по­сле ко­ман­ды cd оно ме­ня­ет­ся, что­бы все­гда по­ка­зы­вать те­ку­щий ка­та­лог.]]
 +
{{врезка|Содержание=«Вместо троекратного ввода команды mkdir обойдемся одним, а грязную работу оставим командной строке.»|Ширина=30%}}
 
Вам нужно выполнить эту команду три раза, поочередно вместо command-feature подставляя first-steps и WoE, чтобы создать папки для моих трех статей. Однако это долго, и командная строка предоставляет более быстрый способ проделывать такую операцию – раскрытие скобок [brace expansion].
 
Вам нужно выполнить эту команду три раза, поочередно вместо command-feature подставляя first-steps и WoE, чтобы создать папки для моих трех статей. Однако это долго, и командная строка предоставляет более быстрый способ проделывать такую операцию – раскрытие скобок [brace expansion].
 +
 
Звучит немного глупо, но зато работает. Взгляните на следующую команду:
 
Звучит немного глупо, но зато работает. Взгляните на следующую команду:
[jon@adam jons-home]$ mkdir {commandfeature, WoE,first-steps}
+
 
 +
[jon@adam jons-home]$ mkdir {commandfeature, WoE,first-steps}
 +
 
 
Поместив три имени папки в фигурные скобки, мы велим командной строке выполнять команду mkdir для каждого из содержащихся внутри аргументов. Вместо троекратного ввода команды mkdir мы обойдемся одним, а всю грязную работу оставим командной строке – очень эффективно.
 
Поместив три имени папки в фигурные скобки, мы велим командной строке выполнять команду mkdir для каждого из содержащихся внутри аргументов. Вместо троекратного ввода команды mkdir мы обойдемся одним, а всю грязную работу оставим командной строке – очень эффективно.
 +
 
Этот трюк сработает не только с командой mkdir, но и с любой командой. Например, сейчас, когда у нас есть все три папки, мы можем переместить в них файлы (командой mv), вызвав одну команду для каждой группы файлов:
 
Этот трюк сработает не только с командой mkdir, но и с любой командой. Например, сейчас, когда у нас есть все три папки, мы можем переместить в них файлы (командой mv), вызвав одну команду для каждой группы файлов:
[jon@adam jons-home]$ mv {commandnotes, command-feature-1,commandfeature- 2} command-feature/
+
 
 +
[jon@adam jons-home]$ mv {commandnotes, command-feature-1,commandfeature- 2} command-feature/
 +
 
 
Обратите внимание, что команде mv потребовалось два аргумента, а до сих пор у команд их было не больше одного. Первый аргумент определяет перемещаемый файл, а второй – место назначения. При работе с командами, требующими несколько аргументов, важно соблюдать порядок следования аргументов: иначе не задать смысл каждого из них.
 
Обратите внимание, что команде mv потребовалось два аргумента, а до сих пор у команд их было не больше одного. Первый аргумент определяет перемещаемый файл, а второй – место назначения. При работе с командами, требующими несколько аргументов, важно соблюдать порядок следования аргументов: иначе не задать смысл каждого из них.
Правка текстовых файлов
+
 
 +
==Правка текстовых файлов==
 +
{{врезка|Заголовок=Пробелы и спецсимволы|Содержание=Может быть, вас удивило, что наша лжедомашняя папка называется jons-home. Было бы куда понятнее, если бы она называлась Jon’s Home?
 +
Но у второго названия есть проблема. Оно содержит пробел и одиночную кавычку (которая служит апострофом), а в командной строке оба эти символа имеют особое значение.
 +
Пробел, например, используется для отделения названия команды от ее аргументов и аргументов друг от друга. Если в имени папки затесался пробел, то как cd или ls определят, что это одно имя, а не разные аргументы?
 +
Чтобы избежать такой путаницы, лучше всего принять ограничение, чтобы имена файлов и папок содержали только символы букв, цифр, а также знаки минус, подчеркивания и точку. Если вам встретилась команда, которая сбоит, а обрабатываемые папка или файл имеют странные названия, то проблема может оказаться в этом.
 +
Эту проблему можно устранить, добавив символ экранирования (\) перед специальным символом, но это весьма ненаглядно.
 +
Для справки: чтобы создать каталог Jon’s Home, вам надо выполнить команду mkdir Jon\’s\ Home.
 +
|Ширина=30%}}
 
Итак, файлы упорядочены, но мне требуется небольшая помощь в завершении редактирования статей. К счастью, я работаю с простыми текстовыми файлами, и нам не потребуется столь громоздкая программа, как LibreOffice; вместо этого воспользуемся одним из множества текстовых редакторов, запускаемых из командной строки.
 
Итак, файлы упорядочены, но мне требуется небольшая помощь в завершении редактирования статей. К счастью, я работаю с простыми текстовыми файлами, и нам не потребуется столь громоздкая программа, как LibreOffice; вместо этого воспользуемся одним из множества текстовых редакторов, запускаемых из командной строки.
 +
 
Текстовые редакторы отличаются от рассмотренных нами команд тем, что они интерактивны, а не типа ввел-и-запустил. Представить такое сложно; однако, последовав пошаговому руководству, вы скоро все поймете. Мы возьмем текстовый редактор nano, так как он, безусловно, самый интуитивный. Но существует и множество других, и мы всячески приветствуем, чтобы вы исследовали их в свободное время, если nano будет недоступен (а вот Vi обязательно отыщется на любой системе Linux).
 
Текстовые редакторы отличаются от рассмотренных нами команд тем, что они интерактивны, а не типа ввел-и-запустил. Представить такое сложно; однако, последовав пошаговому руководству, вы скоро все поймете. Мы возьмем текстовый редактор nano, так как он, безусловно, самый интуитивный. Но существует и множество других, и мы всячески приветствуем, чтобы вы исследовали их в свободное время, если nano будет недоступен (а вот Vi обязательно отыщется на любой системе Linux).
Поддерживайте порядок
+
 
 +
==Поддерживайте порядок==
 +
 
 
Сейчас у нас файлы организованы по папкам и их редактирование завершено, но осталась еще пара действий. Первое – создать копии отредактированных файлов, на случай непреднамеренного удаления. И второе – привести все в порядок, удалив старые, ненужные наборы заметок.
 
Сейчас у нас файлы организованы по папкам и их редактирование завершено, но осталась еще пара действий. Первое – создать копии отредактированных файлов, на случай непреднамеренного удаления. И второе – привести все в порядок, удалив старые, ненужные наборы заметок.
 +
 
Обе этих цели легко достигаются с использованием важных каждодневных команд. Во-первых, при создании копии файла используется команда cp, которая работает так же, как перемещение – в качестве первого аргумента указывается копируемый файл, а расположение копии должно быть во втором аргументе (а значит, копию не обязательно хранить в том же каталоге, где находится исходный файл).
 
Обе этих цели легко достигаются с использованием важных каждодневных команд. Во-первых, при создании копии файла используется команда cp, которая работает так же, как перемещение – в качестве первого аргумента указывается копируемый файл, а расположение копии должно быть во втором аргументе (а значит, копию не обязательно хранить в том же каталоге, где находится исходный файл).
 +
 
Во-вторых, воспользуемся командой rm, передав ей в качестве аргумента имя файла, который нужно удалить. Но будьте осторожны с этой командой – для нее нет корзины, и если файл удален, то это навсегда: восстановить его будет невозможно.
 
Во-вторых, воспользуемся командой rm, передав ей в качестве аргумента имя файла, который нужно удалить. Но будьте осторожны с этой командой – для нее нет корзины, и если файл удален, то это навсегда: восстановить его будет невозможно.
 +
 
Ни один из этих способов не будет работать, если вы захотите применить cp или rm ко всему каталогу – они годятся только для отдельных файлов. Чтобы показать, как это можно приспособить для каталога, познакомимся с опциями.
 
Ни один из этих способов не будет работать, если вы захотите применить cp или rm ко всему каталогу – они годятся только для отдельных файлов. Чтобы показать, как это можно приспособить для каталога, познакомимся с опциями.
 +
 
Опция, как и аргумент, меняет способ работы команды, но она гораздо детальнее и дает гораздо больше возможностей.
 
Опция, как и аргумент, меняет способ работы команды, но она гораздо детальнее и дает гораздо больше возможностей.
Знайте свои опции
+
 
 +
==Знайте свои опции==
 +
[[Файл:LXF151.feature1.islong opt.jpeg|thumb|300px|Об­ра­ти­те вни­ма­ние, как оп­ция -l из­ме­ни­ла ра­бо­ту ls.]]
 +
{{врезка|Ширина=30%|left|Заголовок=Совет от Джона|Содержание=При выполнении действий с несколькими файлами, имена которых содержат общую часть, можно использовать шаблон, чтобы действие затронуло все файлы. Например, cp *.txt скопирует все текстовые файлы в текущем каталоге.}}
 
Каждая опция связана с отдельной буквой или строке текста, и в командной строке задается этой буквой или текстом, предваряемыми минусом или двумя минусами, соответственно. Чтобы понять, что имеется в виду, рассмотрим пример:
 
Каждая опция связана с отдельной буквой или строке текста, и в командной строке задается этой буквой или текстом, предваряемыми минусом или двумя минусами, соответственно. Чтобы понять, что имеется в виду, рассмотрим пример:
[jon@adam ~]$ ls -l jons-home
+
 
 +
[jon@adam ~]$ ls -l jons-home
 +
 
 
Опция -l команды ls означает “long” [длинная] и велит команде предоставить больше подробностей о содержимом рассматриваемой папки. Особенно приятно то, что опции можно сочетать с аргументами: даже когда мы велим ls выдать больше информации, мы все равно можем указать команде папку, которую хотим проверить.
 
Опция -l команды ls означает “long” [длинная] и велит команде предоставить больше подробностей о содержимом рассматриваемой папки. Особенно приятно то, что опции можно сочетать с аргументами: даже когда мы велим ls выдать больше информации, мы все равно можем указать команде папку, которую хотим проверить.
 +
 
Применительно к командам cp и rm, у них обеих есть опция -r, которая велит команде работать «рекурсивно». Это означает, что будет копироваться или удаляться все, что содержится внутри папки, включая подпапки и саму папку.
 
Применительно к командам cp и rm, у них обеих есть опция -r, которая велит команде работать «рекурсивно». Это означает, что будет копироваться или удаляться все, что содержится внутри папки, включая подпапки и саму папку.
Примеры (1)
+
 
В этом разделе мы будем в основном рассматривать команду ls, в целях демонстрации основ командной строки.
+
{{Врезка|Ширина=100%|Заголовок=Шаг за шагом: Текстовый редактор nano|Содержание=<gallery widths="300">
Конечно, ls умеет не только выводить содержимое каталога; вот примеры, как обращаться с ее выводом. Вы, возможно, захотите к ним вернуться после знакомства с «опциями» далее в статье:
+
Файл:LXF151.feature1.nano1 opt.jpeg|1) Откройте файл. Чтобы открыть в nano текстовый файл, перейдите в каталог с файлом, введите nano и передайте этой команде в качестве аргумента имя файла, например nano command-notes.txt.
[jon@adam ~]$ ls -a
+
Файл:LXF151.feature1.nano2 opt.jpeg|2) Наберите текст. Весь экран терминала будет занят интерфейсом nano. Можно сразу же начинать ввод текста, и в главной части окна вы увидите то, что набираете.
Выводит список всех файлов каталога, включая «скрытые», то есть те, у которых перед именем файла стоит точка.
+
Файл:LXF151.feature1.nano3 opt.jpeg|3) Пишите как обычно. Все работает, как и ожидалось: клавиша Ввод создает новую строку, а курсорные клавиши прокручивают файл, если он достаточно большой.
[jon@adam ~]$ ls --color
+
Файл:LXF151.feature1.nano4 opt.jpeg|4) Быстрые клавиши. Внизу экрана указаны часто используемые сочетания клавиш. Значок ^ указывает, что нужно нажать Ctrl одновременно с буквой. Обратите внимание, что WriteOut означает сохранение.
Раскрашивает вывод указанным цветом (color) для облегчения его чтения.
+
Файл:LXF151.feature1.nano5 opt.jpeg|5) Сообщения о состоянии. Некоторые сочетания клавиш приводят к сообщениям в строке состояния и задаваемым там вопросам. Прочитайте сообщений и ответьте одной из представленных ниже опций.
[jon@adam ~]$ ls --sort=X
+
Файл:LXF151.feature1.nano6 opt.jpeg|6) Экран справки. Не забудьте проверить, работает ли комбинация Ctrl+G, которая выдаст вам экран справки, где перечислены все доступные опции. Счастливого редактирования!
Сортирует вывод по признаку, отличному от имени файла. X рассортировывает по расширению, S – по размеру, t – по времени, а v – по версии.
+
</gallery>}}
[jon@adam ~]$ ls -l <filename>
+
<br clear="both">
Выводит подробности о <filename>, включая права доступа, владельца и время последнего изменения файла.
+
=МИНИ-ПРОЕКТ 2 Найти и убрать проблемы=
LXF151.feature1.music.jpg
+
[[Файл:LXF151.feature1.su opt.jpeg|thumb|300px|Об­ра­ти­те вни­ма­ние, что jon по­ме­нял­ся на root, то есть по­сле su — все ва­ши ко­ман­ды вы­пол­ня­ют­ся от име­ни не обыч­но­го поль­зо­ва­те­ля, а root.]]
277215.png Команда ls с папкой Music, которую передали ей в виде аргумента.
+
274857.png
+
LXF151.feature1.prompt.jpg
+
269600.png Приглашение крупным планом. Обратите внимание, что после команды cd оно меняется, чтобы всегда показывать текущий каталог.
+
«Вместо троекратного ввода команды mkdir обойдемся одним, а грязную работу оставим командной строке.»
+
Пробелы и спецсимволы
+
Может быть, вас удивило, что наша лжедомашняя папка называется jons-home. Было бы куда понятнее, если бы она называлась Jon’s Home?
+
Но у второго названия есть проблема. Оно содержит пробел и одиночную кавычку (которая служит апострофом), а в командной строке оба эти символа имеют особое значение.
+
Пробел, например, используется для отделения названия команды от ее аргументов и аргументов друг от друга. Если в имени папки затесался пробел, то как cd или ls определят, что это одно имя, а не разные аргументы?
+
Чтобы избежать такой путаницы, лучше всего принять ограничение, чтобы имена файлов и папок содержали только символы букв, цифр, а также знаки минус, подчеркивания и точку. Если вам встретилась команда, которая сбоит, а обрабатываемые папка или файл имеют странные названия, то проблема может оказаться в этом.
+
Эту проблему можно устранить, добавив символ экранирования (\) перед специальным символом, но это весьма ненаглядно.
+
Для справки: чтобы создать каталог Jon’s Home, вам надо выполнить команду mkdir Jon\’s\ Home.
+
LXF00.tut.step.psd
+
LXF151.feature1.islong.jpg
+
269739.png Обратите внимание, как опция -l изменила
+
работу ls.
+
276695.png
+
1
+
Откройте файл
+
Чтобы открыть в nano текстовый файл, перейдите в каталог с файлом, введите nano и передайте этой команде в качестве аргумента имя файла, например nano command-notes.txt.
+
276670.png
+
2
+
Наберите текст
+
Весь экран терминала будет занят интерфейсом nano. Можно сразу же начинать ввод текста, и в главной части окна вы увидите то, что набираете.
+
276645.png
+
3
+
Пишите как обычно
+
Все работает, как и ожидалось: клавиша Ввод создает новую строку, а курсорные клавиши прокручивают файл, если он достаточно большой.
+
276620.png
+
4
+
Быстрые клавиши
+
Внизу экрана указаны часто используемые сочетания клавиш. Значок ^ указывает, что нужно нажать Ctrl одновременно с буквой. Обратите внимание, что WriteOut означает сохранение.
+
276595.png
+
5
+
Сообщения о состоянии
+
Некоторые сочетания клавиш приводят к сообщениям в строке состояния и задаваемым там вопросам. Прочитайте сообщений и ответьте одной из представленных ниже опций.
+
276570.png
+
6
+
Экран справки
+
Не забудьте проверить, работает ли комбинация Ctrl+G, которая выдаст вам экран справки, где перечислены все доступные опции. Счастливого редактирования!
+
LXF151.feature1.nano1.jpg
+
LXF151.feature1.nano3.jpg
+
Шаг за шагом: Текстовый редактор nano
+
LXF151.feature1.nano2.jpg
+
LXF151.feature1.nano5.jpg
+
LXF151.feature1.nano4.jpg
+
LXF151.feature1.nano6.jpg
+
Совет от Джона
+
При выполнении действий с несколькими файлами, имена которых содержат общую часть, можно использовать шаблон, чтобы действие затронуло все файлы. Например, cp *.txt скопирует все текстовые файлы в текущем каталоге.
+
МИНИ-ПРОЕКТ 2 Найти и убрать проблемы
+
 
Ну вот, теперь моя работа завершена, и мы можем спокойно перейти к следующему, менее надуманному проекту. Наш план – рассмотреть программы и приемы командной строки, полезные при диагностике и исправлении проблем с вашим компьютером. Это одно из самых больших достоинств командной строки.
 
Ну вот, теперь моя работа завершена, и мы можем спокойно перейти к следующему, менее надуманному проекту. Наш план – рассмотреть программы и приемы командной строки, полезные при диагностике и исправлении проблем с вашим компьютером. Это одно из самых больших достоинств командной строки.
 +
 
Начнем со знакомства с правами доступа и с командой su - – двумя концепциями, которые жизненно важны, если вам хочется собирать информацию о системе и менять ее работу.
 
Начнем со знакомства с правами доступа и с командой su - – двумя концепциями, которые жизненно важны, если вам хочется собирать информацию о системе и менять ее работу.
 +
 
Затем мы перейдем к командам, требуемым для сбора информации об оборудовании, и покажем важные файлы журнала, где хранится информация о работе системы.
 
Затем мы перейдем к командам, требуемым для сбора информации об оборудовании, и покажем важные файлы журнала, где хранится информация о работе системы.
 +
 
Мы не станем показывать, какие файлы настройки надо редактировать и как это делается, поскольку тут слишком много возможностей, а данная задача сводится к запуску текстового редактора в сочетании с su -, и это мы все равно сейчас рассмотрим.
 
Мы не станем показывать, какие файлы настройки надо редактировать и как это делается, поскольку тут слишком много возможностей, а данная задача сводится к запуску текстового редактора в сочетании с su -, и это мы все равно сейчас рассмотрим.
Права доступа, su и sudo
+
 
 +
==Права доступа, su и sudo==
 +
 
 
Самое первое, что нужно уяснить при рассмотрении прав доступа – Linux разрабатывался в расчете на многопользовательскую работу.
 
Самое первое, что нужно уяснить при рассмотрении прав доступа – Linux разрабатывался в расчете на многопользовательскую работу.
 +
 
Каждый файл в системе, таким образом, «закреплен» за определенным пользователем, владельцем этого файла. Владелец может указывать, какие другие пользователи могут считывать и изменять его файлы, то есть владелец устанавливает права доступа.
 
Каждый файл в системе, таким образом, «закреплен» за определенным пользователем, владельцем этого файла. Владелец может указывать, какие другие пользователи могут считывать и изменять его файлы, то есть владелец устанавливает права доступа.
 +
 
Попробуйте, например, зайти в домашний каталог другого пользователя. Система просто не пустит вас туда. И это прекрасно, ведь система становится более защищенной и безопасной.
 
Попробуйте, например, зайти в домашний каталог другого пользователя. Система просто не пустит вас туда. И это прекрасно, ведь система становится более защищенной и безопасной.
 +
 
Более важно, однако, то, что системные файлы и файлы пользователя отделены друг от друга. Большую часть времени, когда вы вошли в систему как jon или fred, у вас ограниченный доступ к системе, и вы можете менять в основном только файлы из своего домашнего каталога.
 
Более важно, однако, то, что системные файлы и файлы пользователя отделены друг от друга. Большую часть времени, когда вы вошли в систему как jon или fred, у вас ограниченный доступ к системе, и вы можете менять в основном только файлы из своего домашнего каталога.
 +
 
Но в системе есть множество других файлов, важных для работы компьютера, и они недоступны обычному пользователю. Их владельцем является пользователь root. То есть, чтобы поменять работу компьютера или исследовать большинство проблем, вам придется стать пользователем root, ведь только у него есть привилегии делать это.
 
Но в системе есть множество других файлов, важных для работы компьютера, и они недоступны обычному пользователю. Их владельцем является пользователь root. То есть, чтобы поменять работу компьютера или исследовать большинство проблем, вам придется стать пользователем root, ведь только у него есть привилегии делать это.
 +
 
В командной строке это достигается командой su (сокращение от switch user – смена пользователя). Если вы введете su -, вас сразу спросят пароль пользователя root. После его ввода появится новое приглашение, и если приглядеться, то можно заметить некоторые различия.
 
В командной строке это достигается командой su (сокращение от switch user – смена пользователя). Если вы введете su -, вас сразу спросят пароль пользователя root. После его ввода появится новое приглашение, и если приглядеться, то можно заметить некоторые различия.
 +
 
Та часть приглашения, что похожа на адрес электронной почты, уже не содержит имени пользователя: вместо него там стоит root@. В этой части приглашения всегда отображается имя пользователя, который в данный момент работает за компьютером. Если вам известен пароль пользователя, вы можете использовать su для переключения в любого пользователя, заменив - на его имя.
 
Та часть приглашения, что похожа на адрес электронной почты, уже не содержит имени пользователя: вместо него там стоит root@. В этой части приглашения всегда отображается имя пользователя, который в данный момент работает за компьютером. Если вам известен пароль пользователя, вы можете использовать su для переключения в любого пользователя, заменив - на его имя.
 +
 
В Ubuntu и аналогичных системах для выполнения отдельных команд более привычно использовать команду под названием sudo (от super-user do), а не запускать целый сеанс пользователя root. То есть в Ubuntu вам нужно к каждой команде из этого раздела приписывать вначале sudo. В первый раз у вас затребуют ваш пароль, а в последующие вызовы – уже нет (если только у вас не будет простоя на пять или более минут).
 
В Ubuntu и аналогичных системах для выполнения отдельных команд более привычно использовать команду под названием sudo (от super-user do), а не запускать целый сеанс пользователя root. То есть в Ubuntu вам нужно к каждой команде из этого раздела приписывать вначале sudo. В первый раз у вас затребуют ваш пароль, а в последующие вызовы – уже нет (если только у вас не будет простоя на пять или более минут).
Полный контроль
+
 
 +
==Полный контроль==
 +
{{врезка|Ширина=30%|Заголовок=Совет от Грэма|Содержание=
 +
В командной строке я часто использую сочетание sudo bash. Это работает только в дистрибутивах типа Ubuntu (и в OS X!), но легко позволяет создавать новый сеанс с правами суперпользователя – очень удобно при работе с файлами настроек или службами, ведь вам не приходится каждый раз писать sudo перед командой.}}
 
Описанные простые шаги обеспечат вам полный контроль над вашим компьютером. В дальнейшем не забывайте об этом, так как при работе от имени root потенциальная опасность от неправильно введенной команды намного выше (на самом деле, вам вряд ли удастся наделать много вреда: просто осторожнее обращайтесь с командой rm и никогда не вызывайте ее в папке /).
 
Описанные простые шаги обеспечат вам полный контроль над вашим компьютером. В дальнейшем не забывайте об этом, так как при работе от имени root потенциальная опасность от неправильно введенной команды намного выше (на самом деле, вам вряд ли удастся наделать много вреда: просто осторожнее обращайтесь с командой rm и никогда не вызывайте ее в папке /).
 +
 
Разобравшись в правах доступа и научившись становиться root, мы можем начать сбор информации о вашей системе и получить помощь при наличии проблем. Сперва рассмотрим файлы журнала.
 
Разобравшись в правах доступа и научившись становиться root, мы можем начать сбор информации о вашей системе и получить помощь при наличии проблем. Сперва рассмотрим файлы журнала.
 +
 
Ваш компьютер, работая, постоянно записывает информацию о своей деятельности и о проблемах, с которыми сталкивается. Вся эта информация хранится в файлах журнала [log files] – это простые текстовые файлы, и хранятся они в каталоге /var/log.
 
Ваш компьютер, работая, постоянно записывает информацию о своей деятельности и о проблемах, с которыми сталкивается. Вся эта информация хранится в файлах журнала [log files] – это простые текстовые файлы, и хранятся они в каталоге /var/log.
Файлы журнала
+
 
 +
{{Врезка|Заголовок=Примеры (2)|Ширина=100%|Содержание=
 +
В этом разделе мы рассмотрели команды и приемы работы в командной строке. Чтобы закрепить ваше понимание темы, вот несколько примеров:
 +
<br><code>[jon@adam ~]$ cp -r /home/jon/Documents /home/jon/Documents-bk</code><br>
 +
Копирует всю папку Documents вместе с ее содержимым в Documents-bk в целях безопасности.
 +
<br><code>[jon@adam ~]$ mv {demo.txt,demo-1. txt,demo-3.txt} Documents/Examples</code><br>
 +
Перемещает сразу три демонстрационных файла в папку Examples, которая находится в /home/jon/Documents.
 +
<br><code>[jon@adam ~]$ mkdir LXF\ \(Version\ 1\)</code><br>
 +
Создает новый каталог, который называется LXF (Version 1), с использованием символа экранирования (\) – этот символ гарантирует, что командная строка правильно интерпретирует специальные символы (, ) и ..}}
 +
 
 +
{{Врезка|Заголовок=Примеры (3)|Ширина=100%|Содержание=Вот и последний набор примеров для нашей статьи.
 +
<br><code>[jon@adam ~]$ su -</code><br>
 +
Переключение на пользователя root. Заменив - на имя другого пользователя, вы переключитесь в его сеанс, хотя, конечно, для этого нужно знать его пароль.
 +
<br><code>[root@adam ~]$ cat /var/log/errors.log</code><br>
 +
От имени root, перенос содержимого errors.log в окно терминала.
 +
<br><code>[root@adam ~]$ cat /var/log/errors.log >> /home/jon/error-file</code><br>
 +
Передает содержимое errors.log в файл /home/jon/error-file, приписывая новые данные к тем, что могли существовать в этом файле.
 +
<br><code>[root@adam ~]$ dmesg <nowiki>|</nowiki> grep error</code><br>
 +
Перенаправляет вывод от dmesg команде grep, которая поищет по всему выводу и отобразит только строки, содержащие слово error. Обратите внимание, что мы использовали &gt; для перенаправления вывода, а <nowiki>|</nowiki> – для такого перенаправления вывода, чтобы он стал вводом для другой команды.
 +
}}
 +
<br clear="both" />
 +
==Файлы журнала==
 +
 
 
Будучи обычным пользователем, вы можете вызвать в этом каталоге ls и увидеть, что за файлы в нем хранятся. Попытавшись открыть какой-либо из этих файлов в текстовом редакторе или вывести его содержимое командой cat, вы получите сообщение об отказе в доступе.
 
Будучи обычным пользователем, вы можете вызвать в этом каталоге ls и увидеть, что за файлы в нем хранятся. Попытавшись открыть какой-либо из этих файлов в текстовом редакторе или вывести его содержимое командой cat, вы получите сообщение об отказе в доступе.
 +
 
Причина здесь в том, что пользователем файлов из /var/log является root, как обсуждалось выше. Чтобы узнать содержимое любого из этих файлов, вам нужно воспользоваться командой su — или sudo, дающие полномочия root, и только потом вызывать nano или cat.
 
Причина здесь в том, что пользователем файлов из /var/log является root, как обсуждалось выше. Чтобы узнать содержимое любого из этих файлов, вам нужно воспользоваться командой su — или sudo, дающие полномочия root, и только потом вызывать nano или cat.
 +
 
Запустив ls, вы, скорее всего, будете ошеломлены количеством файлов журналов и их неуклюжими именами, а если отважитесь посмотреть содержимое любого из них с помощью cat или nano, то будете ошарашены еще больше: оно совершенно не поддается расшифровке, если только не знать, что именно вам нужно.
 
Запустив ls, вы, скорее всего, будете ошеломлены количеством файлов журналов и их неуклюжими именами, а если отважитесь посмотреть содержимое любого из них с помощью cat или nano, то будете ошарашены еще больше: оно совершенно не поддается расшифровке, если только не знать, что именно вам нужно.
 +
 
Хотя мы не можем предложить вам исчерпывающего описания, что делает каждый файл журнала, мы, по крайней мере, можем дать несколько указаний для понимания errors.log, возможно, самого полезного из файлов журнала, чтобы облегчить ваши страдания.
 
Хотя мы не можем предложить вам исчерпывающего описания, что делает каждый файл журнала, мы, по крайней мере, можем дать несколько указаний для понимания errors.log, возможно, самого полезного из файлов журнала, чтобы облегчить ваши страдания.
 +
 
Как подсказывает его название, сюда записывается каждая ошибка в системе, вместе со временем, когда она произошла. То есть, столкнувшись с конкретной проблемой, вспомните время, когда это случилось, а затем поищите соответствующие записи в этом файле.
 
Как подсказывает его название, сюда записывается каждая ошибка в системе, вместе со временем, когда она произошла. То есть, столкнувшись с конкретной проблемой, вспомните время, когда это случилось, а затем поищите соответствующие записи в этом файле.
 +
 
Тщательно изучите сообщение об ошибке, а потом направьте его в Google или поделитесь им в крике о помощи на форумах, IRC или почтовой рассылке. Это не только даст другим больше информации для разрешения проблемы, но и продемонстрирует, что вы уже бились сами над этой проблемой, насколько могли, и люди будут относиться к вам дружелюбнее.
 
Тщательно изучите сообщение об ошибке, а потом направьте его в Google или поделитесь им в крике о помощи на форумах, IRC или почтовой рассылке. Это не только даст другим больше информации для разрешения проблемы, но и продемонстрирует, что вы уже бились сами над этой проблемой, насколько могли, и люди будут относиться к вам дружелюбнее.
Информация о железе
+
{{Врезка|Ширина=30%|Содержание=«Мы можем начать сбор информации о вашей системе и получить помощь при наличии проблем.»}}
 +
==Информация о железе==
 +
[[Файл:LXF151.feature1.ispci opt.jpeg|thumb|300px|Боль­шой и жут­кий вы­вод lspci удоб­нее пе­ре­на­пра­вить в файл.]]
 +
{{врезка|Ширина=30%|Заголовок=Совет от Майка|Содержание=
 +
Устали вводить logout или exit каждый раз в командной строке? Для этого есть удобная комбинация. Нажмите Ctrl+D одновременно, и вы выйдете из текущего сеанса оболочки. Если вы вошли как обычный пользователь, а затем переключились на root, то нажатие вернет вас в обычный сеанс работы.}}
 +
{{врезка|Ширина=30%|Заголовок=Совет от Эндрю|Содержание=
 +
На преобразование (например, из MP3 в Ogg) большого числа файлов в GUI может уйти масса времени. Вместо этого пользуйтесь pacpl. Команда pacpl --to ogg -r -p /home/music/mp3s --outdir /home/music/oggs преобразует всю не-свободную музыку в формат Ogg за считанные минуты.}}
 
Бывают моменты, когда наряду с файлами журнала требуется предоставить подробную информацию об оборудовании, на котором работает ваша система.
 
Бывают моменты, когда наряду с файлами журнала требуется предоставить подробную информацию об оборудовании, на котором работает ваша система.
 +
 
Смотреть какой-либо файл для этого не требуется: существуют специальные команды, которые выводят информацию о любом оборудовании, подключенном к вашей системе. Чаще всего из этих команд используются lspci и lsusb – они выводят список подключенных устройств PCI и USB, соответственно.
 
Смотреть какой-либо файл для этого не требуется: существуют специальные команды, которые выводят информацию о любом оборудовании, подключенном к вашей системе. Чаще всего из этих команд используются lspci и lsusb – они выводят список подключенных устройств PCI и USB, соответственно.
 +
 
От lsusb, вероятно, большого прока не будет, зато lspci чрезвычайно полезна, поскольку большая часть основного оборудования вашей системы, включая графическую и сетевую карты, подключено через этот интерфейс.
 
От lsusb, вероятно, большого прока не будет, зато lspci чрезвычайно полезна, поскольку большая часть основного оборудования вашей системы, включая графическую и сетевую карты, подключено через этот интерфейс.
 +
 
Попытавшись запустить lspci, вы увидите, что вывод этой команды очень обилен – новичку трудно в нем разобраться. Поэтому, если вы хотите включить в пост на форуме или почтовой рассылке информацию об оборудовании, лучше процитировать весь вывод, чтобы более сведущие люди, чем вы, смогли найти там подходящую информацию.
 
Попытавшись запустить lspci, вы увидите, что вывод этой команды очень обилен – новичку трудно в нем разобраться. Поэтому, если вы хотите включить в пост на форуме или почтовой рассылке информацию об оборудовании, лучше процитировать весь вывод, чтобы более сведущие люди, чем вы, смогли найти там подходящую информацию.
 +
 
Возникает вопрос: а как передать текст, выданный командой lspci, на форум? Вы же не хотите копировать его вручную, а если вы застряли в текстовом терминале, а не в графическом эмуляторе, то копирование и вставка не поддерживаются.
 
Возникает вопрос: а как передать текст, выданный командой lspci, на форум? Вы же не хотите копировать его вручную, а если вы застряли в текстовом терминале, а не в графическом эмуляторе, то копирование и вставка не поддерживаются.
Перенаправление
+
 
 +
==Перенаправление==
 
Выходом из положения будет трюк под названием перенаправление. Его основная идея в том, что можно брать вывод любой команды и направлять его из терминала в другое место, будь то файл или другая программа, для дальнейшей обработки. Затем можно будет прикрепить этот файл к электронной почте, сохранить его на USB-брелке и вообще вытворять с ним все, что можно делать с обычными файлами.
 
Выходом из положения будет трюк под названием перенаправление. Его основная идея в том, что можно брать вывод любой команды и направлять его из терминала в другое место, будь то файл или другая программа, для дальнейшей обработки. Затем можно будет прикрепить этот файл к электронной почте, сохранить его на USB-брелке и вообще вытворять с ним все, что можно делать с обычными файлами.
 +
 
Перенаправление, делается символом > или |, помещаемым между той командой, чей вывод вы хотите взять, и файлом или программой, куда вы хотите направить этот вывод. Вот пример использования с командой lspci:
 
Перенаправление, делается символом > или |, помещаемым между той командой, чей вывод вы хотите взять, и файлом или программой, куда вы хотите направить этот вывод. Вот пример использования с командой lspci:
[jon@adam ~]$ lspci > lspci.txt
+
 
 +
[jon@adam ~]$ lspci > lspci.txt
 +
 
 
В результате большой список, обычно выдаваемый lspci, уже не появится в окне терминала, а будет сохранен в файле lspci.txt. В этом можно убедиться с помощью nano или воспользоваться командой cat, которая выводит содержимое любого файла в окно терминала.
 
В результате большой список, обычно выдаваемый lspci, уже не появится в окне терминала, а будет сохранен в файле lspci.txt. В этом можно убедиться с помощью nano или воспользоваться командой cat, которая выводит содержимое любого файла в окно терминала.
 +
 
Заметим, что одиночный > перезапишет содержимое существующего файла, а >> припишет новые данные в конец существующего файла – очень важное и полезное отличие.
 
Заметим, что одиночный > перезапишет содержимое существующего файла, а >> припишет новые данные в конец существующего файла – очень важное и полезное отличие.
 +
 
Еще одна очень полезная команда – dmesg, она часто используется в связке с перенаправлением, когда нужна помощь от других пользователей. Она выводит всю информацию, которую генерирует ядро, включая процесс загрузки, а также сведения о том, распозналось или нет подключаемое оборудование.
 
Еще одна очень полезная команда – dmesg, она часто используется в связке с перенаправлением, когда нужна помощь от других пользователей. Она выводит всю информацию, которую генерирует ядро, включая процесс загрузки, а также сведения о том, распозналось или нет подключаемое оборудование.
Примеры (2)
+
 
В этом разделе мы рассмотрели команды и приемы работы в командной строке. Чтобы закрепить ваше понимание темы, вот несколько примеров:
+
=Супер-совет от man=
[jon@adam ~]$ cp -r /home/jon/Documents /home/jon/Documents-bk
+
[[Файл:LXF151.feature1.manual opt.jpeg|thumb|left|Полезнейшая команда man. Запуск man man покажет, как эффективнее ею пользоваться, и помните, что перемещение по экрану производится клавишами курсора.]]
Копирует всю папку Documents вместе с ее содержимым в Documents-bk в целях безопасности.
+
[jon@adam ~]$ mv {demo.txt,demo-1. txt,demo-3.txt} Documents/Examples
+
Перемещает сразу три демонстрационных файла в папку Examples, которая находится в /home/jon/Documents.
+
[jon@adam ~]$ mkdir LXF\ \(Version\ 1\)
+
Создает новый каталог, который называется LXF (Version 1), с использованием символа экранирования (\) – этот символ гарантирует, что командная строка правильно интерпретирует специальные символы (, ) и ..
+
LXF151.feature1.su.jpg
+
277391.png Обратите внимание, что jon поменялся на root, то есть после su все ваши команды выполняются от имени не обычного пользователя, а root.
+
274959.png
+
Совет от Грэма
+
В командной строке я часто использую сочетание sudo bash. Это работает только в дистрибутивах типа Ubuntu (и в OS X!), но легко позволяет создавать новый сеанс с правами суперпользователя – очень удобно при работе с файлами настроек или службами, ведь вам не приходится каждый раз писать sudo перед командой.
+
«Мы можем начать сбор информации о вашей системе и получить
+
помощь при наличии проблем.»
+
LXF151.feature1.ispci.jpg
+
277133.png Большой и жуткий вывод lspci удобнее перенаправить в файл.
+
Примеры (3)
+
Вот и последний набор примеров для нашей статьи.
+
[jon@adam ~]$ su -
+
Переключение на пользователя root. Заменив - на имя другого пользователя, вы переключитесь в его сеанс, хотя, конечно, для этого нужно знать его пароль.
+
[root@adam ~]$ cat /var/log/errors.log
+
От имени root, перенос содержимого errors.log в окно терминала.
+
[root@adam ~]$ cat /var/log/errors.log >> /home/jon/error-file
+
Передает содержимое errors.log в файл /home/jon/error-file, приписывая новые данные к тем, что могли существовать в этом файле.
+
[root@adam ~]$ dmesg | grep error
+
Перенаправляет вывод от dmesg команде grep, которая поищет по всему выводу и отобразит только строки, содержащие слово error. Обратите внимание, что мы использовали > для перенаправления вывода, а | – для такого перенаправления вывода, чтобы он стал вводом для другой команды.
+
Совет от Майка
+
Устали вводить logout или exit каждый раз в командной строке? Для этого есть удобная комбинация. Нажмите Ctrl+D одновременно, и вы выйдете из текущего сеанса оболочки. Если вы вошли как обычный пользователь, а затем переключились на root, то нажатие вернет вас в обычный сеанс работы.
+
Совет от Эндрю
+
На преобразование (например, из MP3 в Ogg) большого числа файлов в GUI может уйти масса времени. Вместо этого пользуйтесь pacpl. Команда pacpl --to ogg -r -p /home/music/mp3s --outdir /home/music/oggs преобразует всю не-свободную музыку в формат Ogg за считанные минуты.
+
Супер-совет от man
+
 
Мы успели рассмотреть очень многое, и надеемся, что после первых шагов вы чувствуете себя в командной строке более комфортно. По крайней мере, надеемся, что теперь у вас достаточно знаний, чтобы, прочитав в Интернете посвященные командной строке статьи, вы смогли безопасно применять их советы на практике.
 
Мы успели рассмотреть очень многое, и надеемся, что после первых шагов вы чувствуете себя в командной строке более комфортно. По крайней мере, надеемся, что теперь у вас достаточно знаний, чтобы, прочитав в Интернете посвященные командной строке статьи, вы смогли безопасно применять их советы на практике.
 +
 
Но прежде чем закончить, и в лучших традициях TuxRadar, расскажем еще об одном. Многие рассмотренные нами команды могут иметь различные опции и аргументы, и как прикажете упомнить, какие аргументы и опции передавать каждой команде, и в каком порядке?
 
Но прежде чем закончить, и в лучших традициях TuxRadar, расскажем еще об одном. Многие рассмотренные нами команды могут иметь различные опции и аргументы, и как прикажете упомнить, какие аргументы и опции передавать каждой команде, и в каком порядке?
 +
 
Ну, благодаря команде под названием man у вас нет нужды запоминать все эти подробности для каждой команды. Вызовите man, передайте ей имя какой угодно команды вашей системы, и вы увидите страницы руководства для этой команды.
 
Ну, благодаря команде под названием man у вас нет нужды запоминать все эти подробности для каждой команды. Вызовите man, передайте ей имя какой угодно команды вашей системы, и вы увидите страницы руководства для этой команды.
 +
 
На этих страницах перечислены все доступные опции и указан порядок передачи аргументы, а во многих случаях даже приведены примеры использования команды на практике. Эта команда незаменима. Самая замечательная ее черта в том, что если вы хотите узнать, как эффективнее использовать эти руководства, запустите команду man man, и увидите страницу руководства для самой команды man.
 
На этих страницах перечислены все доступные опции и указан порядок передачи аргументы, а во многих случаях даже приведены примеры использования команды на практике. Эта команда незаменима. Самая замечательная ее черта в том, что если вы хотите узнать, как эффективнее использовать эти руководства, запустите команду man man, и увидите страницу руководства для самой команды man.
277631.png
+
 
277632.png
+
[[Категория:LXF151]]
LXF151.feature1.manual.jpg
+
277419.png Полезнейшая команда — man. Запуск man man покажет, как эффективнее ею пользоваться, и помните, что перемещение по экрану производится клавишами курсора.
+
275524.png
+

Текущая версия на 05:01, 7 февраля 2018

Ваши пальцы обладают суперсилой, главное – уметь ею пользоваться. Джонатан Робертс овладевает командной строкой...

К сожалению, непосвященных она немало пугает. Этот мигающий курсор и загадочный текст, идущий перед ним, намекают на целый мир возможностей, но отнюдь не поясняют, с чего начать.

И всем известно, что нажатие не на ту клавишу переведет компьютер в секретный скоростной режим, который расплавит процессор и уничтожит все данные.

Однако волноваться вам не о чем. Командная строка – и вправду мощная штука, а за этой мощью стоит большая ответственность, но при небольшом запасе знаний вы спокойно направите эту мощь на более эффективную работу и извлечете из своего компьютера больше пользы.

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

Присматривайте за врезками с примерами, поскольку проверка теории на практике – это лучший способ ознакомиться с материалом. А в качестве небольшого бонуса, сотрудники LXF открыли свои любимые трюки в командной строке. Мы многое увидим, многое узнаем и здорово позабавимся, так чего же вы ждете?

Содержание

[править] Перво-наперво

Перед погружением в настоящую работу давайте начнем с самого начала (я знаю, это тавтология) и убедимся, что мы мыслим одинаково. Командная строка – это просто вариант интерфейса к вашему компьютеру, как Gnome или KDE. Ее отличает то, что здесь вы не нажимаете мышью на красивые кнопочки, а управляете компьютером, вводя команды с клавиатуры.

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

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

Например, моя домашняя папка, которая является подпапкой системной папки home (а та, в свою очередь, является подпапкой корневой папки), выглядит как /home/jon/. К такому представлению мы будем прибегать неоднократно, и это скоро сделается вашей второй натурой.

[править] Ваша первая команда: ls

(thumbnail)
Чтобы получить доступ к командной строке, она же — оболочка, запустите приложение Terminal в Gnome или Konsole в KDE.

Разобравшись с основой, пора вызвать первую команду. Команда, с которой мы хотим начать, называется ls – она всего-навсего выводит список содержимого каталога. Действия команды легко запомнить: она похожа на “list”. Сначала мы вызовем терминал (см. врезку), после чего вы увидите на рабочем столе новое окно. Там на белом (или черном) фоне будет виден непонятный текст. Этот текст, с мигающим курсором после него, называется приглашением – оно указывает, что компьютер готов принимать команды.

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

Если посмотреть на выведенный текст повнимательнее, можно заметить, что он вам знаком... ба, это же список всех файлов вашей папки home!

[править] Ваш первый аргумент

(thumbnail)
Ко­ман­да ls с пап­кой Music, ко­то­рую пе­ре­да­ли ей в ви­де ар­гу­мен­та.

Мило и несложно, не так ли? Но почему же команда вывела содержимое именно домашней папки, а не папки Music или какой-либо другой?

Оказывается, что при работе в командной строке вы всегда работаете то в одном каталоге, то в другом – ни одна команда не работает вне этого контекста. Очевидно, каждый сеанс работы с командной строкой где-то да начинается, и по умолчанию это место – домашний каталог пользователя.

Это, конечно, хорошо, но все же не объясняет, почему ls выдал содержимое именно домашнего каталога. А дело в том, что раз мы ничего не задали ls, то команда решила, что мы хотим увидеть содержимое текущего каталога, коим на данным момент является домашняя папка.

Однако мы можем сообщить ls, что намерены заглянуть в другое место, путем «передачи аргумента» этой команде. По сути это означает, что после ввода имени команды вы указываете расположение папки, содержимое которой вас интересует. Так, если вам хочется посмотреть содержимое папки с музыкой, команда должна быть ls Music.

Заметьте, что мы ввели просто Music, а не полный путь к этой папке, который выглядит как /home/jon/Music. Это называется «относительным путем»: поскольку мы уже внутри нашей домашней папки, полный путь указывать не нужно. Командная строка просто произведет поиск папки с заданным именем в текущем каталоге.

[править] МИНИ-ПРОЕКТ 1 Рулим папками и файлами

Теперь вы умеете применять одну команду и видоизменять ее работу одним аргументом. Но чтобы ваши новоприобретенные знания принесли пользу, вам придется узнать некоторые другие команды и осмыслить способы их совместного употребления.

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

Опять же для взаимопонимания, мы включили макет домашней папки на диск этого номера. Скопируйте его в вашу родную домашнюю папку и распакуйте любой понравившейся вам программой, внимательно проследив за именем папки (jons-home).

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

Первая наша задача в командной строке – попасть в эту лжедомашнюю папку. Запустите новое окно терминала и выполните команду ls, чтобы убедиться, что мы находимся в нашей домашней папке. Если вы распаковали фальшивую папку сюда, то в списке вы должны увидеть jons-home. Чтобы попасть в нее, необходимо использовать команду cd.

cd означает – по крайней мере, в нашем понимании – change directory [сменить каталог]; именно это команда и делает. Вызов cd без аргументов переместит вас в ваш домашний каталог, но нам туда не надо. А если приписать к команде аргумент – имя папки, куда вы хотите попасть – команда переместит вас в эту папку, что намного полезнее. Чтобы оказаться в jons-home, нужна, стало быть, команда cd jons-home.

По выполнении команды вроде бы ничего не происходит. Действительно, результат не так заметен, как в команде ls. Но, присмотревшись внимательнее, вы увидите, что текст в приглашении изменился. Тильда ~ пропала, и на ее место очутилось jons-home, имя новой текущей папки.

Эта часть приглашения всегда отображает имя текущей папки, чтобы вы не потерялись. Тильда ~, которая сперва кажется странной, на деле является сокращением для домашнего каталога пользователя. При желании в этом можно убедиться, если ввести сначала cd ~, а затем ls – вы снова попадете в ваш домашний каталог. Ура! Теперь взглянем командой ls на то, что внутри jons-home. Вы увидите, что там несколько файлов для каждой из статей, которые я написал для данного номера. Глупо и неряшливо. Не будет ли аккуратнее завести для каждой статьи отдельную папку? Думаю, да, и этим-то вы и займетесь.

Первым делом создадим папку для каждой статьи командой mkdir. Возможно, вам будет просто ее заучить, так как она напоминает “make directory” [создать каталог].

Чтобы команда mkdir сработала, ей нужно передать один аргумент, указывающий имя создаваемого каталога. Допустим, для создания каталога под файлы этой статьи выполните mkdir command-feature.


[править] Возьмите себя в скобки

(thumbnail)
При­гла­ше­ние круп­ным пла­ном. Об­ра­ти­те вни­ма­ние, что по­сле ко­ман­ды cd оно ме­ня­ет­ся, что­бы все­гда по­ка­зы­вать те­ку­щий ка­та­лог.

Вам нужно выполнить эту команду три раза, поочередно вместо command-feature подставляя first-steps и WoE, чтобы создать папки для моих трех статей. Однако это долго, и командная строка предоставляет более быстрый способ проделывать такую операцию – раскрытие скобок [brace expansion].

Звучит немного глупо, но зато работает. Взгляните на следующую команду:

[jon@adam jons-home]$ mkdir {commandfeature, WoE,first-steps}

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

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

[jon@adam jons-home]$ mv {commandnotes, command-feature-1,commandfeature- 2} command-feature/

Обратите внимание, что команде mv потребовалось два аргумента, а до сих пор у команд их было не больше одного. Первый аргумент определяет перемещаемый файл, а второй – место назначения. При работе с командами, требующими несколько аргументов, важно соблюдать порядок следования аргументов: иначе не задать смысл каждого из них.

[править] Правка текстовых файлов

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

Текстовые редакторы отличаются от рассмотренных нами команд тем, что они интерактивны, а не типа ввел-и-запустил. Представить такое сложно; однако, последовав пошаговому руководству, вы скоро все поймете. Мы возьмем текстовый редактор nano, так как он, безусловно, самый интуитивный. Но существует и множество других, и мы всячески приветствуем, чтобы вы исследовали их в свободное время, если nano будет недоступен (а вот Vi обязательно отыщется на любой системе Linux).

[править] Поддерживайте порядок

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

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

Во-вторых, воспользуемся командой rm, передав ей в качестве аргумента имя файла, который нужно удалить. Но будьте осторожны с этой командой – для нее нет корзины, и если файл удален, то это навсегда: восстановить его будет невозможно.

Ни один из этих способов не будет работать, если вы захотите применить cp или rm ко всему каталогу – они годятся только для отдельных файлов. Чтобы показать, как это можно приспособить для каталога, познакомимся с опциями.

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

[править] Знайте свои опции

(thumbnail)
Об­ра­ти­те вни­ма­ние, как оп­ция -l из­ме­ни­ла ра­бо­ту ls.

Каждая опция связана с отдельной буквой или строке текста, и в командной строке задается этой буквой или текстом, предваряемыми минусом или двумя минусами, соответственно. Чтобы понять, что имеется в виду, рассмотрим пример:

[jon@adam ~]$ ls -l jons-home

Опция -l команды ls означает “long” [длинная] и велит команде предоставить больше подробностей о содержимом рассматриваемой папки. Особенно приятно то, что опции можно сочетать с аргументами: даже когда мы велим ls выдать больше информации, мы все равно можем указать команде папку, которую хотим проверить.

Применительно к командам cp и rm, у них обеих есть опция -r, которая велит команде работать «рекурсивно». Это означает, что будет копироваться или удаляться все, что содержится внутри папки, включая подпапки и саму папку.



[править] МИНИ-ПРОЕКТ 2 Найти и убрать проблемы

(thumbnail)
Об­ра­ти­те вни­ма­ние, что jon по­ме­нял­ся на root, то есть по­сле su — все ва­ши ко­ман­ды вы­пол­ня­ют­ся от име­ни не обыч­но­го поль­зо­ва­те­ля, а root.

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

Начнем со знакомства с правами доступа и с командой su - – двумя концепциями, которые жизненно важны, если вам хочется собирать информацию о системе и менять ее работу.

Затем мы перейдем к командам, требуемым для сбора информации об оборудовании, и покажем важные файлы журнала, где хранится информация о работе системы.

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

[править] Права доступа, su и sudo

Самое первое, что нужно уяснить при рассмотрении прав доступа – Linux разрабатывался в расчете на многопользовательскую работу.

Каждый файл в системе, таким образом, «закреплен» за определенным пользователем, владельцем этого файла. Владелец может указывать, какие другие пользователи могут считывать и изменять его файлы, то есть владелец устанавливает права доступа.

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

Более важно, однако, то, что системные файлы и файлы пользователя отделены друг от друга. Большую часть времени, когда вы вошли в систему как jon или fred, у вас ограниченный доступ к системе, и вы можете менять в основном только файлы из своего домашнего каталога.

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

В командной строке это достигается командой su (сокращение от switch user – смена пользователя). Если вы введете su -, вас сразу спросят пароль пользователя root. После его ввода появится новое приглашение, и если приглядеться, то можно заметить некоторые различия.

Та часть приглашения, что похожа на адрес электронной почты, уже не содержит имени пользователя: вместо него там стоит root@. В этой части приглашения всегда отображается имя пользователя, который в данный момент работает за компьютером. Если вам известен пароль пользователя, вы можете использовать su для переключения в любого пользователя, заменив - на его имя.

В Ubuntu и аналогичных системах для выполнения отдельных команд более привычно использовать команду под названием sudo (от super-user do), а не запускать целый сеанс пользователя root. То есть в Ubuntu вам нужно к каждой команде из этого раздела приписывать вначале sudo. В первый раз у вас затребуют ваш пароль, а в последующие вызовы – уже нет (если только у вас не будет простоя на пять или более минут).

[править] Полный контроль

Описанные простые шаги обеспечат вам полный контроль над вашим компьютером. В дальнейшем не забывайте об этом, так как при работе от имени root потенциальная опасность от неправильно введенной команды намного выше (на самом деле, вам вряд ли удастся наделать много вреда: просто осторожнее обращайтесь с командой rm и никогда не вызывайте ее в папке /).

Разобравшись в правах доступа и научившись становиться root, мы можем начать сбор информации о вашей системе и получить помощь при наличии проблем. Сперва рассмотрим файлы журнала.

Ваш компьютер, работая, постоянно записывает информацию о своей деятельности и о проблемах, с которыми сталкивается. Вся эта информация хранится в файлах журнала [log files] – это простые текстовые файлы, и хранятся они в каталоге /var/log.




[править] Файлы журнала

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

Причина здесь в том, что пользователем файлов из /var/log является root, как обсуждалось выше. Чтобы узнать содержимое любого из этих файлов, вам нужно воспользоваться командой su — или sudo, дающие полномочия root, и только потом вызывать nano или cat.

Запустив ls, вы, скорее всего, будете ошеломлены количеством файлов журналов и их неуклюжими именами, а если отважитесь посмотреть содержимое любого из них с помощью cat или nano, то будете ошарашены еще больше: оно совершенно не поддается расшифровке, если только не знать, что именно вам нужно.

Хотя мы не можем предложить вам исчерпывающего описания, что делает каждый файл журнала, мы, по крайней мере, можем дать несколько указаний для понимания errors.log, возможно, самого полезного из файлов журнала, чтобы облегчить ваши страдания.

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

Тщательно изучите сообщение об ошибке, а потом направьте его в Google или поделитесь им в крике о помощи на форумах, IRC или почтовой рассылке. Это не только даст другим больше информации для разрешения проблемы, но и продемонстрирует, что вы уже бились сами над этой проблемой, насколько могли, и люди будут относиться к вам дружелюбнее.

[править] Информация о железе

(thumbnail)
Боль­шой и жут­кий вы­вод lspci удоб­нее пе­ре­на­пра­вить в файл.

Бывают моменты, когда наряду с файлами журнала требуется предоставить подробную информацию об оборудовании, на котором работает ваша система.

Смотреть какой-либо файл для этого не требуется: существуют специальные команды, которые выводят информацию о любом оборудовании, подключенном к вашей системе. Чаще всего из этих команд используются lspci и lsusb – они выводят список подключенных устройств PCI и USB, соответственно.

От lsusb, вероятно, большого прока не будет, зато lspci чрезвычайно полезна, поскольку большая часть основного оборудования вашей системы, включая графическую и сетевую карты, подключено через этот интерфейс.

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

Возникает вопрос: а как передать текст, выданный командой lspci, на форум? Вы же не хотите копировать его вручную, а если вы застряли в текстовом терминале, а не в графическом эмуляторе, то копирование и вставка не поддерживаются.

[править] Перенаправление

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

Перенаправление, делается символом > или |, помещаемым между той командой, чей вывод вы хотите взять, и файлом или программой, куда вы хотите направить этот вывод. Вот пример использования с командой lspci:

[jon@adam ~]$ lspci > lspci.txt

В результате большой список, обычно выдаваемый lspci, уже не появится в окне терминала, а будет сохранен в файле lspci.txt. В этом можно убедиться с помощью nano или воспользоваться командой cat, которая выводит содержимое любого файла в окно терминала.

Заметим, что одиночный > перезапишет содержимое существующего файла, а >> припишет новые данные в конец существующего файла – очень важное и полезное отличие.

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

[править] Супер-совет от man

(thumbnail)
Полезнейшая команда — man. Запуск man man покажет, как эффективнее ею пользоваться, и помните, что перемещение по экрану производится клавишами курсора.

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

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

Ну, благодаря команде под названием man у вас нет нужды запоминать все эти подробности для каждой команды. Вызовите man, передайте ей имя какой угодно команды вашей системы, и вы увидите страницы руководства для этой команды.

На этих страницах перечислены все доступные опции и указан порядок передачи аргументы, а во многих случаях даже приведены примеры использования команды на практике. Эта команда незаменима. Самая замечательная ее черта в том, что если вы хотите узнать, как эффективнее использовать эти руководства, запустите команду man man, и увидите страницу руководства для самой команды man.

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