Лаба. Лабораторные работы (47). Лабораторная работа Основы интерфейса командной строки ос gnu linux Цель работы Приобретение практических навыков общения с операционной системой на уровне командной строки (вход и выход,
Скачать 109.84 Kb.
|
|
Каталог | Описание |
/ | Корневая директория, содержащая всю файловую иерархию |
/bin | Основные системные утилиты, необходимые как в однопользовательском режиме, так и при обычной работе всем пользователям (например: cat, ls, cp) |
/etc | Общесистемные конфигурационные файлы и файлы конфигурации установленных программ |
/home | Содержит домашние директории пользователей, которые, в свою очередь, содержат персональные настройки и данные пользователя |
/media | Точки монтирования для сменных носителей, таких как CD- ROM, DVD-ROM, flash |
/root | Домашняя директория пользователя root |
/tmp | Временные файлы |
/usr | Вторичная иерархия для данных пользователя; содержит большинство пользовательских приложений и утилит, используемых в многопользовательском режиме; может быть смонтирована по сети только для чтения и быть общей для нескольких машин |
Обратиться к файлу, расположенному в каком-то каталоге, можно указав путь к нему. Существует несколько видов путей к файлу:
- полный или абсолютный путь — начинается от корня (/), образуется перечислением всех каталогов, разделённых прямым слешем (/), и завершается именем файла (например, полный путь к файлу addition.txt из каталога user в каталоге home, находящемся в корневом каталоге, будет иметь вид: /home/user/documents/addition.txt;
- относительный путь — так же как и полный путь, строится перечислением через / всех каталогов, но начинается от текущего каталога (каталога, в котором «находится» пользователь), т.е. пользователь, находясь в каталоге user, может обратиться к файлу addition.txt, указав относительный путь documents/addition.txt.
Таким образом, в Linux если имя объекта начинается с /, то системой это интерпретируется как полный путь, в любом другом случае — как относительный.
В Linux любой пользователь имеет домашний каталог, который обычно расположен в каталоге /home и, как правило, имеет имя пользователя. В домашних каталогах хранятся документы и настройки пользователя. Для обозначения домашнего каталога используется знак тильды (). При переходе из домашнего каталога знак тильды будет заменён на имя нового текущего каталога.
1.2.3. Введение в командную строку GNU Linux
Работу ОС GNU Linux можно представить в виде функционирования множества взаимосвязанных процессов. При загрузке системы сначала запускается ядро, которое, в свою очередь, запускает оболочку ОС (от англ. shell «оболочка»). Взаимодействие пользователя с системой Linux (работа с данными и управление работающими в системе процессами) происходит в интерактивном режиме посредством командного языка. Оболочка операционной системы (или командная оболочка, интерпретатор команд) — интерпретирует (т.е. переводит на машинный язык) вводимые пользователем команды, запускает соответствующие программы (процессы), формирует и выводит ответные сообщения. Кроме того, на языке командной оболочки можно писать небольшие программы для выполнения ряда последовательных операций с файлами и содержащимися в них данными — сценарии (скрипты).
В операционные системы Windows включён командный интерпретатор cmd.exe, в MS-DOS — command.com. В GNU Linux у пользователя есть возможность менять командный интерпретатор, используемый по умолчанию. Из командных оболочек GNU Linux наиболее популярны bash, csh, ksh, zsh. В качестве предустановленной командной оболочки GNU Linux используется одна из наиболее распространённых разновидностей командной оболочки — bash (Bourne again shell).
В GNU Linux доступ пользователя к командной оболочке обеспечивается через терминал (или консоль). Запуск терминала можно осуществить через главное меню Приложения^Стандартные^Терминал (или Консоль) или нажав Ctrl+ Alt + t •
Интерфейс командной оболочки очень прост. Обычно он состоит из приглашения командной строки (строки, оканчивающейся символом $), по которому пользователь вводит команды: iivanova@dk4n31:$
Это приглашение командной оболочки, которое несёт в себе информацию об имени пользователя (iivanova), имени компьютера (dk4n31) и текущем каталоге, в котором находится пользователь, в данном случае это домашний каталог пользователя, обозначенный как ().
Команды могут быть использованы с ключами (или опциями) — указаниями, модифицирующими поведение команды. Ключи обычно начинаются с символа '-' или '--' и часто состоят из одной буквы. Кроме ключей после команды могут быть использованы аргументы (параметры) — названия объектов, для которых нужно выполнить команду (например, имена файлов и каталогов).
Ввод команды завершается нажатием клавиши Enter, после чего команда передаётся оболочке на исполнение. Результатом выполнения команды могут являться сообщения о ходе выполнения команды или об ошибках. Появление приглашения командной строки говорит о том, что выполнение команды завершено.
Иногда в GNU Linux имена программ и команд слишком длинные, однако bash может завершать имена при их вводе в терминале. Нажав клавишу Tab, можно завершить имя команды, программы или каталога. Например, предположим, что нужно использовать программу mcedit. Для этого наберите в командной строке mc, затем нажмите один раз клавишу Tab . Если ничего не происходит, то это означает, что существует несколько возможных вариантов завершения команды. Нажав клавишу Tab ещё раз, можно получить список имён, начинающихся с mc: user@dk4n31:$ mc mc mcd mcedit mclasserase mcookie mcview
mcat mcdiff mcheck mcomp mcopy
user@dk4n31:$ mc
Более подробно о работе в операционной системе Linux см., например, в [2; 3].
1.2.4. Базовые команды bash
Первые задачи, которые приходится решать в любой системе, — работа с данными (обычно хранящимися в файлах) и управление работающими в системе программами (процессами). Для получения достаточно подробной информации по каждой из команд используйте команду man, например: user@dk4n31:$ man ls
1.2.4.1. Команда pwd: вывод имени текущего каталога
Определить каталог, в котором в данный момент находится пользователь, можно набрав команду pwd (Print Working Directory):
user@dk4n31:/usr/src$ pwd /usr/src
user@dk4n31:/usr/src$
1.2.4.2. Команда cd: смена каталога
Команда cd (Change Directory) позволяет сменить текущий каталог на другой, указав путь к нему в качестве параметра. Команда cd работает как с абсолютными, так и с относительными путями.
Предположим, что вы находитесь в своём домашнем каталоге и хотите перейти в каталог tmp, расположенный также в домашнем каталоге. Для этого достаточно ввести относительный путь: user@dk4n31:$ cd tmp user@dk4n31:/tmp$
Но если вы хотите перейти в каталог tmp, расположенный в корне системы, то нужно ввести абсолютный путь к нему: user@dk4n31:$ cd /tmp user@dk4n31:/tmp$
Ещё один пример использования абсолютного пути для перехода в каталог /usr/bin:
user@dk4n31:$ cd /usr/bin user@dk4n31:/usr/bin$
Запуск команды cd без параметров обеспечивает переход в домашний каталог пользователя: user@dk4n31:/usr/bin$ cd
user@dk4n31:$
Можно использовать комбинацию cd .. для перехода на один каталог выше по иерархии, а сочетание cd - вернёт пользователя в последний посещённый им каталог.
1.2.4.3. Команда ls: вывод списка файлов
Команда ls (LiSt) выдаёт список файлов указанного каталога и имеет следующий синтаксис:
ls [опции] [файл|каталог] [файл|каталог...]
Если в командной строке в качестве параметров не указано имя каталога, то команда ls выведет список файлов текущего каталога. Для данной команды существует довольно много опций, ниже дано описание некоторых из них:
- a: вывод списка всех файлов, включая скрытые файлы (в Linux названия скрытых файлов начинаются с точки);
- R: рекурсивный вывод списка файлов и подкаталогов;
- h: вывод для каждого файла его размера;
- l: вывод дополнительной информации о файлах (права доступа, владельцы и группы, размеры файлов и время последнего доступа);
10
Лабораторная работа № 1. Основы интерфейса командной строки ОС GNU Linux
- i: вывод уникального номера файла (inode) в файловой системе перед каждым файлом;
- d: обработка каталогов, указанных в командной строке, так, как если бы они были обычными файлами, вместо вывода списка их файлов.
Примеры:
- команда ls -R рекурсивно выводит список содержимого текущего каталога;
- команда ls -is images/ .. выводит список файлов каталога images и родительского по отношению к текущему каталога, при этом для каждого файла указан номер inode и его размер в килобайтах;
- команда ls -l images/*.png выводит список всех файлов в каталоге images, чьи имена заканчиваются на .png, включая скрытый файл .png, если таковой существует.
1.2.4.4. Команды mkdir, touch: создание пустых каталогов и файлов
Для создания каталогов используется команда mkdir (MaKe DIRectory — создать каталог). Её синтаксис имеет вид: mkdir [опции] <каталог> [каталог...]
Команда mkdir имеет несколько опций, например, использование опции
-p позволит выполнить два действия:
1) создать родительские каталоги, если они не существуют (без этой опции mkdir выдаст ошибку об отсутствии заявленных каталогов);
2) завершит работу без ошибки, если каталог, который необходимо создать, уже существует (без указания этой опции команда mkdir выдаст сообщение об ошибке, сообщая, что каталог уже существует).
Приведём несколько примеров.
Создать каталог image в текущем каталоге:
mkdir image
Создать каталог misc в каталоге images и каталог docs в текущем каталоге:
mkdir -p images/misc docs
Для создания файлов может быть использована команда touch, которая имеет следующий синтаксис: touch [опции] файл [файл...]
Например, для создания в текущем каталоге файла с именем file1 и в существующем подкаталоге images текущего каталога файла с именем file2 следует ввести команду: touch file1 images/file2
1.2.4.5. Команда rm: удаление файлов или каталогов
Команда rm (ReMove — удалить) удаляет файлы и (или) каталоги и имеет следующий синтаксис: rm [опции] <файл|каталог> [файл|каталог...]
Опции команды rm:
- r или -R: рекурсивное удаление (это обязательная опция для удаления любого каталога, пустого или содержащего файлы и (или) подкаталоги);
- i: запрос подтверждения перед удалением;
- v: вывод подробной информации при выполнении команды.
Для удаления пустых каталогов можно воспользоваться командой rmdir.
Приведём несколько примеров.
Запросив подтверждение на удаление каждого файла в текущем каталоге, удалить в подкаталоге images все файлы с именами, заканчивающимися на .jpg, а также file1: rm -i images/*.jpg file1
Рекурсивно удалить из текущего каталога без запроса подтверждения на удаление каталог misc в подкаталоге images, а также файлы, чьи имена начинаются с file:
rm -R images/misc/ file*
Команда rm удаляет файлы безвозвратно, и не существует способа для их восстановления.
1.2.4.6. Команда mv: перемещение или удаление файлов
Команда mv (MoVe — переместить) служит для перемещения файлов и каталогов и имеет следующий синтаксис: mv [опции] <файл|каталог> [файл|каталог...] <назначение>
При перемещении нескольких файлов местом назначения должен быть каталог.
Некоторые опции:
- f: принудительное выполнение операции (предупреждение не будет выводиться даже при перезаписи существующего файла);
- i: запрашивается подтверждение перед перезаписью существующего файла;
- v: подробный режим, который сообщает обо всех изменениях и действиях при выполнении команды.
Приведём несколько примеров.
Переместить все файлы, чьи имена заканчиваются на .png, из каталога /tmp/pics/ в текущий каталог (.), запрашивая подтверждение перед перезаписью: mv -i /tmp/pics/*.png .
Переименовать файл или каталог foo в bar; если существует каталог bar, то произойдёт перемещение файла foo или всего каталога (с файлами и подкаталогами, содержащимися в нём) в каталог bar: mv foo bar
Переместить без запроса подтверждения все файлы из текущего каталога с именами, начинающимися с file, и весь каталог images в каталог trash, показывая порядок выполнения всех операций: mv -vf file* images/ trash/
1.2.4.7. Команда cp: копирование файлов и каталогов
Команда cp (CoPy — копировать) копирует файлы и каталоги и имеет следующий синтаксис:
cp [опции] <файл|каталог> [файл|каталог ...] <назначение>
Некоторые опции команды cp:
- R: рекурсивное копирование; является обязательной опцией для копирования каталогов;
- i: запрос подтверждения перед перезаписью любых файлов;
- f: заменяет любые существующие файлы без запроса подтверждения;
- v: подробный режим, сообщает обо всех изменениях и действиях.
Приведём несколько примеров.
Запросить подтверждение и скопировать все файлы из каталога /image в каталог images в текущем каталоге: cp -i /image/* images/
Скопировать весь каталог images и все файлы из каталога /docs/text/ в каталог mytext:
cp -vR images/ /docs/text/* mytext/
Сделать копию файла addition в файл с именем subtraction в текущем каталоге:
cp addition subtraction
1.2.4.8. Команда cat: вывод содержимого файлов
Команда cp объединяет файлы и выводит их на стандартный вывод (обычно это экран):
$ cat /etc/hosts
#
# /etc/hosts: static lookup table for host names #
#