LX1 Основы командной строки

Лекция: Основы командной строки Linux

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

Видео занятия

Презентация

Смотреть слайды к этому занятию.

Тестирование

Пройти тестирование по этой теме.

Дополнительные материалы





Практика: 10 основных команд

В этой работе рассматриваются 10 самых частых команд оболочки bash. Вы изучите самые полезные команды работы с файлами и папками. Эти команды обычно составляют до 90% любой работы сисадмина.

Видео занятия

Цель работы

Познакомиться с основными приемами работы в командной строке Linux, основные приемы адресации файлов и освоить основные и самые распространенные команды - pwd, cd, ls, touch, rm, mkdir, cp, mv, cat, man

Основное задание

  1. Запустите виртуальную машину; познакомьтесь со справкой к изучаемым в данной работе командам. Обратите внимание на используемые ключи данных команд.
  2. Запустите текстовый терминал или программу-эмулятор терминала;
  3. Выведите на экран содержимое корневой директории файловой системы;
  4. Перейдите в свою домашнюю директорию, задав относительный путь;
  5. Выведите содержимое файла /etc/passwd;
  6. Создайте текстовый файл с именем user.txt в домашнем каталоге.
  7. Создайте директорию test в текущей.
  8. Переместите только что созданный файл в нее.
  9. Скопируйте директорию под именем test2.
  10. Удалите обе директории.

Методические указания

Для успешного выполнения работы необходимо ознакомиться со справочными материалами по командам pwd, cd, ls, touch, rm, mkdir, cp, mv, cat. Сделать это можно используя универсальную справочную команду man. Таким образом, набрав в командной строке:

1
$ man pwd

мы получим полную и актуальную справку (мануал) по команде pwd, включая все возможные ее ключи и опции. Команда man может показать мануал по любой команде bash.

Некоторые команды завершаются моментально (pwd), а другие (ping) - выполняются продолжительное время. Кроме того, некоторые команды запускают интерактивные программы (top).

Для успешной и быстрой работы в командной строке существует большое количество сочетаний клавиш. Ознакомьтесь с ними на практике и попробуйте запомнить наиболее полезные:

  • <Ctrl>+<C> - завершение текущей команды;
  • <Ctrl>+<D> - выход из текущего сеанса (разлогин);
  • <Tab> - подсказки и множественное дополнение;
  • clear, <Ctrl> + <L> - очистка экрана (перемотка вперед);
  • <↑> - переход к предыдущей команде;
  • <Ctrl> + <A> - переход к началу команды;
  • <Ctrl> + <E> - переход к концу команды;
  • <Alt> + <F>, <Alt> + <B> - переход к следующему и предыдущему слову в команде;
  • history - вывод истории команд в текущем сеансе;
  • <Ctrl> + <R> - поиск команды в истории;

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

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

В пути к файлу последовательно указываются папки, которые нужно пройти, чтобы найти файл, а затем - имя самого файла. Имена папок и файла разделяются прямым слешем. Так, в пути /etc/passwd первый символ / обозначает корневой каталог, etc - имя папки в корневом каталоге, passwd - имя нужного нам файла. Обратите внимание, что в Linux не принято использовать расширения в именах файлов (но, впрочем, и не запрещено, так что ими многие пользуются).

Находясь в командной строке, вы всегда находитесь в какой-то директории. По умолчанию, это домашний каталог пользователя (обычно находящийся по адресу /home/<login>). Текущий каталог можно изменить командой cd.

Путь к файлу можно задавать двумя способами - абсолютным или относительным. Абсолютный путь начинается с символа / и отсчитывается от корневого каталога. Относительный путь начинается с имени папки и отсчитывается от текущего каталога. Это сделано для удобства указания пути, чтобы не повторять одно и то же, если вы работаете в данный момент преимущественно с файлами в одной папке.

При указании путей к файлам можно пользоваться некоторыми сокращениями. Вы можете использовать два специальных имени: точку (.), означающую текущую директорию, и пару точек (..), означающую родительскую директорию текущей директории. Также вы можете использовать символ тильды (~), который означает вашу домашнюю директорию, и сочетание ~username, означающее домашнюю директорию пользователя с именем username.

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

Контрольные вопросы

  1. Как происходит авторизация пользователя в текстовом режиме?
  2. Как посмотреть рабочую директорию?
  3. Как посмотреть содержимое текущей директории?
  4. Чем отличается абсолютный и относительные пути к директориям?
  5. Как перейти в другую директорию в командной строке?
  6. Какие основные стандартные каталоги существуют в Linux?

Задания для самостоятельного выполнения

  1. Выяснить, какой каталог является текущим (см. man pwd).
  2. Выяснить, в каком терминале выполняется текущий сеанс.
  3. Перейдите в директорию /var;
  4. С помощью команды узнайте, в какой директории находимся;
  5. Прочитайте мануал по команде ls (только основное положение и про флаги -l, -t, -r, -A);
  6. Отобразите список директорий и файлов;
  7. Перейдите в директорию /var/log (без упоминания “var” в команде);
  8. Перейдите в директорию /var (снова без упоминания “var”);
  9. Создайте директорию ~/tmp/lesson/;
  10. Перейдите туда, задав абсолютный путь;
  11. Создайте текстовый файл txt_file с произвольным содержимым;
  12. Удалите созданную папку lesson;
  13. Сохраните подробное описание полного содержимого домашней директории (по команде ls -la) в файл home.dir.
  14. (*) Определить границы файлового пространства, где система позволяет создавать собственные файлы и каталоги (возможно использование автоматического скрипта).
  15. (*) Проверить, возможно ли вмешательство в личное файловое пространство другого пользователя? Пользователя root?




Практика: Служебные команды

Видео занятия

Цель работы

Научиться основным навыкам работы в многопользовательском режиме, переключению между терминалами и самым базовым командам - tty, who, whoami, sudo, su, less, who, exit, shutdown, grep.

Основное задание

  1. Откройте первый виртуальный терминал и залогиньтесь.
  2. Выполните команду tty.
  3. Выполните команду pwd.
  4. Повторите предыдущие пункты для второго и третьего виртуального терминала.
  5. Откройте эмулятор терминала в графическом режиме и введите команду tty.
  6. Выполните команду who. Посмотрите в справке, что она показывает.
  7. Выполните команду whoami. Прочитайте справку про нее.
  8. Перейдите в первый виртуальный терминал и разлогиньтесь.
  9. Вернитесь в графическое окружение и еще раз просмотрите вывод команды who. Объясните ее результат.
  10. Откройте файл /etc/passwd при помощи программы-пейджера.
  11. Найдите в этом файле запись о вашем текущем пользователе при помощи команды grep.
  12. Изучите команду man и прочитайте справку по всем командам, использованным в данной лабораторной.

Методические указания

Операционная система Linux, как и ее предшественник - UNIX изначально создавалась для многопользовательской работы. Для организации многопользовательской работы при загрузки системы создается семь виртуальных устройств (это число может меняться в зависимости от дистрибутива, но семь - это стандартное количество). Раньше предполагалось, что за ними будут работать из разных мест при помощи оконечных устройств (терминалов или тонких клиентов), но сейчас это уже не очень актуально. Обычно на последнем, седьмом терминале запускается графическая оболочка, если она установлена в данном дистрибутиве.

Для того, чтобы узнать, номер текущего терминала, можно использовать команду tty (см. man tty). Команда очень проста и не требует параметров. Пример работы tty:

1
2
$ tty  
/dev/tty1

Чтобы узнать, какие пользователи в каких терминалах залогинены в системе, можно использовать команду who:

1
2
3
4
$ who 
root tty1 Feb 17 17:11 
user tty2 Feb 17 17:12 
user tty5 Feb 17 17:40

Иногда возникает необходимость выполнить некоторые действия от имени другого пользователя (например, от имени root). Это можно сделать, открыв новый терминальный сеанс, но можно и иначе, в текущем сеансе. Для этого используется команда su. Эта команда по умолчанию (без параметров) открывает сеанс суперпользователя, выполняющийся внутри сеанса непривилегированного пользователя. Пример выполнения команды su:

1
2
3
$ su 
Password: 
[root@localhost user]#

Еще один пример, с явным указанием имени пользователя:

1
2
3
$ su stud 
Password:  
[stud@localhost ~]$

Для окончания пользовательского сеанса, запущенного командой su, или выхода из терминала, используется команда exit или комбинация клавиш Ctrl+D. В любом случае система закроет сеанс и отобразит строку приглашения.

Очень часто при работе с командной строкой приходится просматривать довольно длинные файлы. Для того, чтобы можно было перемещаться по файлу, содержимое которого не помещается на одном экране были созданы специальные программы-пейджеры. Это не текстовый редактор, а только средство просмотра. Самый стандартный на сегодня - программа less. Ей можно передать имя файла таким образом:

1
$ less filename

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

Также часто приходится искать определенную строку в файле или в выводе других команд. Для этого используют утилиту grep. Ей передаётся два параметра - строка поиска и имя файла вот так:

1
grep koroteev /etc/passwd

Дополнительная информация об указанных командах доступна в справочном руководстве формата man или info.

Еще одно важное замечание. При работе с эмулятором терминала в графическом режиме, копирование и вставка работают с комбинациями клавиш Ctrl + Shift+C и Ctrl + Shift+V. Это потому, что комбинацией клавиш Ctrl + C аварийно завершается (прерывается) выполнение текущей команды.

Контрольные вопросы

  1. Какой каталог будет установлен текущим сразу же после входа пользователя в систему?
  2. Какой каталог будет установлен текущим после выполнения команды su?
  3. Какой терминал (tty) будет открыт по нажатию Ctrl+F7?
  4. Как и где в Linux можно вводить команды командной строки?

Задания для самостоятельного выполнения

  1. Подключитесь к данной машине через ssh и введите команду who. Объясните, что значит ее результат.
  2. Загрузить систему в текстовом режиме и войти с собственной учетной записью
  3. Ознакомиться со справкой по команде shutdown;
  4. С её помощью перезагрузить виртуальную машину;
  5. С её помощью выключить виртуальную машину;
  6. Запустить отложенное выключение виртуальной машины на 2 минуты.




Лекция: Работа с файлами

Презентация

Смотреть слайды к этому занятию.



Практика: Работа с файлами

В этой работе вы познакомитесь с полезными приемами работы с файлами - созданием жестких и символических ссылок, командами архивации файлов.

Видео занятия

Цель работы

Ознакомиться со структурой файловой системы Линукс, типами файлов и командами управления файловой системой.

Основное задание

  1. В домашнем каталоге создать подкаталоги src, dst и temp;
  2. В каталоге temp создать файлы user.txt, root. txt и stud.txt произвольного содержания;
  3. В каталог src скопировать файлы user.txt, root. txt и stud.txt, различного содержания;
  4. В каталоге dst создать «жесткие» ссылки на все файлы из каталога src;
  5. В домашнем каталоге создать «мягкие» ссылки на файлы из каталога src;
  6. Вывести рекурсивно расширенную информацию о содержимом домашнего каталога. Обратить внимание на поле размера для физических файлов и ссылок;
  7. Из домашнего каталога выполнить команды:
1
2
3
cat src/user.txt
cat dst/user.txt
cat user.txt
  1. Заархивируйте содержимое папки src/ в архив .tar.gz.
  2. Распакуйте этот архив в директорию ~/backup
  3. Выведите названия всех файлов домашней директории, имеющих в названии .txt (подсказка: используйте команду find);
  4. Удалите файл user.txt. Что произошло со ссылками на него?
  5. Удалите каталог dst;
  6. Переместите каталог temp в src;
  7. Рекурсивно удалите каталог src

Методические указания

Организация файловой системы

Файловая система ОС Линукс (как и прочих unix-подобных систем) устроена так, что все ресурсы представлены единообразно, в виде файлов. Такой подход позволяет обеспечить универсальный интерфейс доступа к любым ресурсам: от физических устройств, до процессов, выполняющихся в системе. С точки зрения пользователя файловая система представляет логическую структуру каталогов и файлов. С другой стороны, невидимой пользователю, внутреннее устройство файловой системы реализует физические операции чтения/записи файлов на различные носители, алгоритмы доступа и многое другое.

Типы файлов

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

  • обычные (regular) файлы - текстовые, исполняемые, графические и пр. файлы, создаваемые пользователями и прикладными программами;
  • каталоги (directories) - именованные группы файлов и вложенных каталогов (т.е. содержимое каталога - файлы и другие каталоги);
  • файлы устройств (devices) - соответствуют присутствующим в системе реальным (жесткие диски, принтеры, мыши, ЦП и т.д.) устройствам и т. н. псевдоустройствам (например, /dev/null). Файлы устройств представляют символьные (последовательного доступа) и блочные (произвольного доступа) устройства. К первыми относятся, например, параллельные и последовательные порты, ко вторым - жесткие диски;
  • специальные файлы - сокеты (sockets) и именованные каналы (named pipes), которые предназначены для обмена информацией между процессами;
  • символьные ссылки (symlinks) - именованные указатели на физические файлы (аналог ярлыков ОС Windows), содержащие только путь к некоторому файлу. Символьные ссылки могут указывать на файлы, хранящиеся как локальных, так и в сетевых каталогах.
  • Символьные ссылки (или “мягкие”) не нужно путать с “жесткими”, которые указывают на inode файла. Inode (идентификатор узла) - это уникальный числовой идентификатор узла (файла или каталога) файловой системы, по которому и осуществляется доступ к нему. Символьное имя файла (включая полный путь) ориентировано на пользовательское восприятие. Для человека-оператора проще запомнить осмысленные имена файлов (например: report.txt, myfoto.jpg и т.п.), чем абстрактные числовые значения. Прочие отличия “жестких” и “мягких” ссылок вам предстоит выяснить в ходе выполнения этой лабораторной работы.
Каталоги Линукс

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

Файловая система имеет иерархическую структуру и начинается от корневого каталога (/). Его подкаталогами являются:

  • /bin - исполняемые файлы общего назначения;
  • /boot - содержит образ загружаемого ядра;
  • /dev - файлы устройств;
  • /etc - конфигурационные файлы общего пользования;
  • /home - домашние каталоги пользователей, включая программы и файлы личных предпочтений;
  • /lib - общесистемные библиотеки;
  • /mnt - каталог монтирования внешних файловых систем;
  • /proc - виртуальная файловая система для чтения информации о процессах;
  • /root - домашний каталог суперпользователя;
  • /sbin - программы системного администрирования;
  • /tmp - каталог для хранения временной информации;
  • /usr - каталог пользовательских прикладных программ со всеми их исполнимыми и конфигурационными файлами. Например, в подкаталог /usr/local инсталлируются программы, не входящие в дистрибутив Линукс, или собираемые из исходных текстов.
  • /var - каталог для хранения часто изменяющихся файлов. Например, спулера печати, различных лог-файлов, почтовых сообщений и т.п.
  • /lost+found - каталог для нарушенных фрагментов файлов, обнаруженных в результате проверки файловой системы после сбоя.

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

Именование файлов и каталогов

Файловая система Линукс поддерживает “длинные” имена, содержащие символы латиницы, национальных алфавитов, знаки пунктуации и спецсимволы. Абсолютно запрещенными к использованию в имени являются прямой и обратный слэши (/ и ). Максимальное количество символов в имени - 255. Понятие “расширения файла” в unix-системах отсутствует как таковое, поэтому в имени может быть несколько частей, разделенных точками. Все имена - регистрозависимые.

Приведенные выше правила справедливы и для каталогов.

Файлы и каталоги, названия которых начинаются с точки (т.н. dot-файлы), являются аналогами “скрытых” файлов Windows. То есть по умолчанию они не отображаются при просмотре содержимого файловой системы.

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

1
$ cd /home/usr1

и

1
$ cd $HOME

приведут к одному результату - переходу в домашний каталог пользователя usr1. Более того, в оболочке определен псевдоним для домашнего каталога - символ ~ (тильда) можно использовать аналогично $HOME. Например:

1
2
3
$ cd ~ 
$ pwd 
/home/usr1 

Некоторые другие возможности оболочки будут рассмотрены в следующих лабораторных работах. Дополнительная информация доступна в справочном руководстве bash (man bash).

Команды управления файловой системой

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

Основными командами для выполнения файловых операций являются: pwd, ls, cp, mv, dir, rm, cd, rmdir, mkdir, ln. Информацию о их назначении и параметрах доступна в формате man и info.

Несколько слов о способах создания файлов в Линукс:

  • во-первых, файлы могут быть созданы как результаты работы прикладных программ и иметь определенный формат (например, графические файлы, созданные редактором GIMP);
  • во-вторых, файлы могут быть созданы пользователем путем ввода информации с клавиатуры, например так:
1
2
3
$ cat > f1 
Hello, world! // нажатие Ctrl+D завершает ввод команд 
aag@stilo:~> 
  • в-третьих, файлы могут быть созданы путем перенаправления вывода команды со стандартного потока, например так:
1
# echo "Hello, World!" > f1 

В первом и втором случаях символ “>” - это команда перенаправления стандартных потоков ввода/вывода, встроенная в оболочку. В первом случае она получает информацию со стандартного потока ввода (клавиатура) и, по окончании ввода (Ctrl+D), отправляет ее в файл. Во втором - принимает строку, переданную командой echo и также отправляет ее в файл. Если файл отсутствует, то он будет создан, если имеется, то будет перезаписан. Для добавления информации в файл следует использовать команду “»”. Больше информации о командах перенаправления можно получить в справке о возможностях оболочки.

Контрольные вопросы

  1. Чем отличаются жесткие и символические ссылки?
  2. Что произойдет с жесткой ссылкой, если удалить исходный файл? А с символической?
  3. Совпадает ли размер символьных и жестких ссылок?
  4. Пусть в системе имеется каталог “~/test”. Что произойдет при попытке выполнить следующую команду: “cp ~/test ~/test/newdir”?
  5. Какие основные форматы архивов принято использовать в Linux? Какими командами можно пользоваться для создания / открытия этих архивов?

Задания для самостоятельного выполнения

  1. Настройте автоматическую инкрементальную архивацию домашнего каталога. Для этого создайте команду архивирования всех файлов, измененных за последние сутки и добавьте ее на автоматическое выполнение при помощи службы cron.
  2. Измените программу из предыдущего пункта так, чтобы пользователь мог опциями изменять настройки программы:
    1. Задавать папку, откуда происходит копирование;
    2. Задавать расположение архивов;
    3. Задавать частоту архивации;
    4. Исключать определенные типы файлов;
    5. (*) Передавать список папок и типов файлов, которые включаются в общий архив.




Разделы:

Дата изменения: