Работа в оболочке. Основные команды unix Shell.
Основные приемы работы с оболочкой Shell.
Внимание! Материал в этой главе и далее относится к командному интерпретатору bash.
Внимание! В описании команд, параметров и т.д. обязательные элементы заключены в угловые скобки < >, а необязательные элементы заключены в квадратные скобки [ ].
Внимание! Проверьте, не закончилась ли у Вас дисковая квота! Это можно сделать с помощью команды quota. При необходимости для освобождения пространства удалите лишние файлы из Вашего каталога.
После регистрации в системе открывается терминальное окно, начинается сеанс и пользователю выводится приглашение. Обычно пользовательское приглашение имеет вид
$ _
или
[<username>@<hostname> <workdir>]$ _
где username – логин пользователя, hostname – имя сервера, workdir – текущая директория, в которой находится пользователь. По умолчанию сразу же после открытия сеанса в качестве текущей директории устанавливается домашний каталог пользователя. Для определения домашнего каталога пользователя, можно воспользоваться командой finger <username>.
Команда finger позволяет также вывести дополнительную информацию о пользователе.
Специальный символ “~” используется как синоним «домашнего каталога пользователя», например:
~ - домашний каталог текущего пользователя (того пользователя, чей сеанс открыт в данный момент)
~username – домашний каталог пользователя username
Пример: Пусть открыт сеанс пользователя user, домашний каталог которого: /home/user. Тогда: ~, ~user и /home/user – одно и то же.
Работая в терминале, пользователь может вводить команды для выполнения каких-либо действий в системе. Для удобства редактирования вводимых команд Shell сохраняет в памяти все вводимые пользователем команды, переключаться между которыми можно с помощью клавиш () – вызов предыдущей (следующей) команды. Все введенные за сеанс команды сохраняются в файле ~/.bash_history по окончании сеанса. Посмотреть список всех введенных ранее команд можно с помощью команды history.
Для очистки экрана можно использовать команду clear или комбинацию клавиш Ctrl+L
При редактировании вводимых и вызванных команд становятся доступными стандартные клавиши перемещения курсора, удаления символов. При редактировании команды для быстрого перехода в конец строки можно использовать комбинацию Ctrl+E, для быстрого перехода в начало строки – комбинацию Ctrl+A. Для отмены и возврата к системному приглашению используется комбинация Ctrl+C. Эта комбинация также часто применяется для прерывания выполнения каких-либо программ.
Комбинации Shift+PgUp и Shift+PgDn используются для прокрутки содержимого окна вверх и вниз. Клавиша Tab используется для дополнения имени вводимой команды из списка расположенных в путях поиска команд.
Файловая система UNIX-подобных ОС
Файловая система (ФС) является прослойкой между оболочкой Shell и физическими устройствами хранения информации, скрывая ненужные детали и позволяя более наглядно представить расположение данных на носителе в виде иерархии файлов и каталогов. Иерархическая структура ФС представляет собой дерево, вершина которого обозначается “/” и называется «корень ФС». Символ “/” также используется в качестве разделителя при обозначении пути на ФС. Если знак “/” является самым первым в пути, то путь называется абсолютным и считается с корня ФС, в противном случае путь называется относительным. Относительный путь считается начиная с текущего каталога.
Пример:
/home/test/file.txt – абсолютный путь, указывающий на файл file.txt
test/file.txt – относительный путь, указывающий на file.txt
~/file.txt – файл file.txt в домашнем каталоге текущего пользователя
~test/zzz/file.txt – файл file.txt, находящийся в домашнем каталоге пользователя test в папке zzz.
Типичная ФС в ОС семейства UNIX содержит каталоги:
/ - корень
/etc – каталог с конфигурационными файлами системы
/dev – каталог с файлами специальных устройств, предоставляющих доступ пользовательских процессов к оборудованию машины.
/lib – каталок с файлами динамически подключаемых библиотек (*.so, *.a)
/bin – каталог с программами для всех пользователей
/sbin – каталог со служебными программами (для администраторов систем)
/usr – каталог, хранящий основную часть файлов системы
/var – каталог с различными журнальными файлами («логами»)
/tmp – каталог, где программы могут создавать временные файлы
/home – каталог, хранящий домашние директории пользователей системы
и т.д.
Внимание! В ФС UNIX-подобных ОС используется прямой слеш “/”. Знак обратного слеша “\” (как в MS-DOS и Windows) имеет другое значение!
ФС UNIX-подобных ОС обычно дают пользователю бОльшую свободу в выборе имен файлов, чем MS-DOS или Windows. Например, в именах можно использовать несколько точек, специальные символы, такие как *, ~, ?, [, ] и т.д.
Специальные символы также служат для задания шаблонов множеств файлов, что часто используется для упрощения основных файловых операций, таких как копирование, перемещение, удаление и т.д. При работе с файловой системой Shell обрабатывает специальные символы и заменяет их соответствующим образом:
Символ * указывает на то, что в этом месте может находиться любое число (включая ноль) любых символов.
Например, *txt – все файлы, заканчивающиеся на txt; a*b все файлы, первая буква имени которых – а, а последняя - b
Символ ? указывает на любой один символ. Например, ?txt – файлы, имя которых состоит из 4-х символов, заканчивающиеся на txt; *a? – все файлы, заканчивающиеся комбинацией из двух символов, первый из которых – буква а.
Выражение [] служит для представления множества или диапазона символов. Знак “-“ может использоваться для указания диапазона. Например: a[abc] – краткая форма представления трех файлов: aa, ab, ac; file[1-3].txt будет преобразовано в file1.txt, file2.txt, file3.txt.
Внимание! Следует быть осторожным при использовании специальных символов в именах файлов. Для предотвращения интерпретации их оболочкой применяется несколько методов:
Заключение имени файла в одинарные или двойные кавычки, например “test*_.txt”, ‘file_??.txt’
«Экранирование», т.е. добавление перед каждым специальным символом знака обратного слеша, например: test\ file\*__.txt; another\?\?\?_test_file.txt. Для представления самого знака обратного слеша его нужно написать 2 раза: \\
Файл, имя которого начинается с точки, считается специальным служебным файлом (некоторые программы считают такие файлы «скрытыми» и не обрабатывают их без специальных опций).
Пример: ~/.bash_history – файл с историей команд пользователя.
Специальные имена . и .. указывают на текущий и родительский каталог, например: ./test.txt – файл в текущем каталоге; ../../file.tmp – файл, находящийся на 2 уровня выше по иерархии ФС.
Внимание! Имена файлов в ФС UNIX-подобных ОС являются регистрозависимыми! Например, файлы Test, test, TeSt, TEST – это РАЗНЫЕ файлы.
Типы файлов: ФС в UNIX-подобных ОС поддерживают несколько типов файлов:
Обычный (регулярный, file) файл
Каталог (папка, директория, directory) – специальный файл, хранящий в себе список других файлов, находящихся «внутри» него.
Сокет (socket), канал (pipe) – специальные типы файлов, используемые для взаимодействия между процессами в системе.
Блоковый (block device) и символьный (character device) файл - специальные типы файлов, служащие для организации доступа к физическим устройствам машины.
Мягкая ссылка (soft link), жесткая ссылка (hard link) – специальные типы файлов, позволяющие создавать указатели (ссылки) на файлы.
Атрибуты файлов. Контроль доступа к файлам.
Файл или каталог помимо имени и содержимого имеет множество атрибутов на ФС. К ним относятся:
Дата и время модификации
Владелец файла
Группа файла
Права доступа к файлу
и т.д.
Контроль доступа к файлам осуществляется путем указания прав:
на чтение
на запись
на исполнение
файла для:
владельца – того пользователя, которому принадлежит файл
пользователей, находящихся в группе владельца – той группе, которой принадлежит файл
всех остальных пользователей – т.е. пользователей, не входящих в группу файла
Право на чтение файла позволяет прочитать его содержимое.
Право на чтение каталога позволяет смотреть список файлов каталога.
Право на запись для файла позволяет изменять содержимое файла.
Право на запись для каталога позволяет создавать файлы в каталоге.
Право на исполнение файла позволяет его выполнять
Право на исполнение каталога позволяет в него заходить (делать его текущим)
Для управления владельцами файлов и каталогов применяется команда chown, для управления правами доступа файлов и каталогов используется команда chmod.
Основные команды UNIX-подобных ОС
Для просмотра более подробной справки по команде можно выполнить:
command -- help
command -h
man command
КОМАНДЫ:
man – получение справки по командам в системе.
Использовать: man command, где command – команда, по которой нужна документация.
Пример: man ls
ls - просмотр информации о файлах и каталогах.
Основные флаги:
-l – отобразить полный список атрибутов, включая права доступа, владельца и т.д.
-a – показать скрытые файлы (начинающиеся с точки)
-1 – вывести информацию в один столбик
-h – вывести информацию о размерах в удобном виде (например: 2K, 12М)
Примеры:
ls –la ~ - отображение всех файлов домашнего каталога
ls -1 *.txt – вывод всех файлов, заканчивающихся на .txt в один столбик
cat – чтение содержимого файла(ов) и вывод на терминал
Пример: cat /etc/passwd – чтение базы данных пользователей системы
cat file1 file2 – последовательное чтение 2х файлов и вывод содержимого в терминал.
Предупреждение!!! Нельзя выводить в терминал содержимое двоичных файлов!!! Терминал воспринимает определенные последовательности символов как управляющие. Такие последовательности могут содержаться в двоичном файле.
touch – создание файла. Если файл уже существует, то время последнего изменения сменится на текущее.
Пример: touch ~/myfile.txt – создать в домашнем каталоге файл или обновить дату последнего изменения, если существует
pwd – вывод текущего каталога
cd – переход в каталог
Пример: cd /etc – переход в /etc
less, more – команды постраничного вывода информации на экран.
Пример:
less /etc/ttys – постраничный вывод на экран системного файла конфигурации терминалов.
more mybigtxtfile.txt
mkdir – создание каталога(ов).
Пример: mkdir dir1 dir1/dir2 ~/dir3 – создание каталога в текущей директории dir1, создание dir2 внутри dir1, создание в домашнем каталоге dir3
rm – удаление файлов или каталогов.
Ключи:
-f – удаление без вывода предупреждающих сообщений
-r – рекурсивное удаление файла/каталога со всем поддеревом. Внимание! Применяйте осторожно!
Пример: rm file.txt – удаление файла file.txt
rm –rf ~/tmpdir file – рекурсивное удаление папки tmpdir в домашнем каталоге и удаление файла file в текущем каталоге
cp – копирование файлов
Опции:
-r – рекурсивное копирование. Внимание! Применяйте осторожно!
-p – копирование с сохранением прав и владельцев файлов (актуально только для пользователя root)
Пример: cp file1 file2 – скопировать файл file1 в file2
cp file1 ~ - копирование файла file1 в домашний каталог
cp file[1-5].dat ~/dir2/ - копирование нескольких файлов по маске в папку dir2, находящуюся в домашнем каталоге
mv – перенос/переименование файлов/каталогов
Примеры: mv file2 file1 – переименование файла file2 в file1
mv file2 /tmp/file1 – переименование файла file2 в file1 и перенос в каталог /tmp
mv file2 /tmp – перенос файла file2 в каталог /tmp
ln – создание ссылок (links) на файлы
Параметры:
-s – создание символической ссылки (soft link). Без этого параметра по-умолчанию создает жесткую ссылку (hard link)
Пример:
ln –s /etc/hosts ~/hosts – создает в домашнем каталоге файл hosts, который является символической ссылкой на /etc/hosts.
chmod – изменение прав доступа к файлам/каталогам.
Параметры:
-R – рекурсивно применять действия к дереву каталогов. Применять очень ОСТОРОЖНО!
Примеры:
chmod 777 file.txt – разрешить ПОЛНЫЙ доступ к файлу file.txt всем (не рекомендуется из соображений безопасности)
chmod 740 file2.txt – разрешить владельцу файла file2.txt любые действия с файлом, группе владельца только чтение, остальным пользователям – ничего не разрешать.
chmod –R 644 ~/mydir/1* - установить права с маской 644 на файлы и каталоги, начинающиеся на 1 (+все подпапки и файлы в них рекурсивно) в папке mydir в домашнем каталоге текущего пользователя.
сhown – изменение владельца/группы файлов/каталогов. Программу может выполнять только пользователь root.
id – узнать, информацию о пользователе: имя, основную группу, в каких группах состоит и т.д.
Пример: id – информация о текущем пользователе
id root – информация о пользователе root
wc – подсчет количества байтов/строк в файле.
Параметры:
-с – подсчет количества байтов
-l – подсчет количества строк
Примеры:
wc –l file*.txt – подсчет количества строк во всех файлах, начинающихся на file и заканчивающихся на .txt
wc –c ~/.bash_history – посчитать размер файла истории команд текущего пользователя
head – вывод заданного числа первых строк или байт файла
Параметры:
-n – выводить заданное количество первых строк
-c – выводить заданное количество первых байт
Примеры:
head –n 3 /etc/passwd – показать информацию о первых трех пользователях системы
head –c 100 file2.txt – вывести на терминал первые 100 байт из файла file2.txt
tail – вывод заданного числа последних строк или байт файла
Параметры:
-n – выводить заданное количество последних строк
-c – выводить заданное количество последних байт
Примеры:
tail –n 3 ~/.bash_history – показать три последние команды, введенные текущим пользователем во время прошлого сеанса
tail –c 100 file2.txt – вывести на терминал последние 100 байт из файла file2.txt
date – показать/изменить текущую дату. (Изменять может только root)
w – показать информацию о пользователях, работающих в системе в данный момент
finger – показать информацию о зарегистрированном пользователе (без параметров – аналогично команде w)
Пример: finger bach – узнать информацию о локальном пользователе bach
last – просмотреть базу данных входивших в систему пользователей
Параметры:
-<число> - посмотреть последнее <число> записей
<user> - показать события, связанные с этим пользователем
Примеры: last -10 root – вывести на консоль информацию о 10-ти последних регистрациях в системе пользователя root.
clear – очистить экран
grep – фильтр. Ищет файлы, в которых встречается заданная строка или шаблон, выводит на консоль имя файла и тот его фрагмент, где встречается заданный шаблон.
Параметры:
-i – не учитывать регистр
-r – искать рекурсивно
-v – искать файлы, не содержащие фаблон
Примеры: grep –r “test” /etc – рекурсивно пройти весь каталог /etc,найти все файлы, содержащие строчку test
grep –i root * - найти строчку root без учета регистра во всех файлах текущего каталога.
ps – вывести дерево процессов, выполняющихся в системе в настоящий момент.
Параметры:
-a – отображать процессы всех пользователей (не только свои)
-x – отображать также процессы, не подключенные к терминалу (т.е. выполняющиеся в фоновом режиме)
-u – показать подробную информацию о процессе (владелец, группа, используемые ресурсы и т.д.)
Внимание! Для всех рассмотренных выше команд приведены только САМЫЕ РАСПРОСТРАНЕННЫЕ параметры и описаны самые базовые возможности, достаточные для выполнения лабораторной работы. Реальное число параметров, режимов работы и возможных способов применения команд во много раз превышает описанное. Для полного ознакомления читайте подробную документацию! (man command)
