Методы / Куликова Н.В., Петровская Е.Н. (ч.1,2)
.pdfФайл в Dos |
Устройство в Unix |
Назначение |
con |
/dev/tty |
Консоль |
nul |
/dev/null |
Пустота |
com1 |
/dev/ttyS0 |
Первый последовательный порт |
lpt1 |
/dev/lp0 |
Первый параллельный порт |
•У программ не требуется какое-либо специальное расширение, типа .exe – достаточно установить атрибут «x».
•Длина имени может быть до 255 символов; полный путь (включая директории) – 1024 символа.
Хотя единственный символ, которого не может быть в имени, это «/» (поскольку это разделитель директорий), лучше не слишком увлекаться, стараться не делать имен с пробелами и не злоупотреблять различием в регистре букв – это только внесет лишнюю путаницу. Такжелучшененазыватьфайлырусскимиименами.
Файлы, имена которых начинаются c точки (включая . и ..), считаются «неинтересными» и в листинге директории обычно не показываются.
Атрибуты файла
Для просмотра листинга директории используется команда ls, и с ключем «-l» она выдает «детальный» листинг, со всеми
атрибутами файла: |
|
bobby:~% ls -l netscape.ps |
380609 Jan 15 |
-rwxr-xr-x 1 ivanov lab5 |
|
15:29 netscape.ps |
|
Поля в строке имеют следующий смысл:
•тип файла («-» – обычный файл, «d» – директория, «l» – символьный линк) и права доступа, по три символа (r (Read), w (Write) и x (eXecute)) для пользователя, группы и всех остальных;
•число hard-линков к файлу;
•владелец файла (в данном случае – ivanov) и группа – владелец (lab5); группа – это «дополнительный» владелец, которому устанавливаются отдельные права доступа;
•размер в байтах;
•дата и время модификации;
•имя файла – оно располагается в конце для того, чтобы листинг нескольких файлов выглядел как таблица (ведь имена могут иметь разную длину).
111
Права доступа
Для файлов:
r – право читать файл;
w – право модифицировать файл (писать в него);
x – право исполнять файл – устанавливается у программ;
Для директорий:
r – право читать список файлов в директории;
w – право модифицировать директорию (создавать и удалять из нее файлы); требует также наличия X;
x – право использовать файлы из директории; если у директории установлен только атрибут «x», то воспользоваться файлом можно, лишь зная заранее его имя, т.к. листинг директории посмотреть невозможно – это полезно, например, чтобы homeдиректория была недоступна для чтения, а вот к поддиректории public_html мог бы обратиться любой.
Естественно, наличие атрибута «x» не дает права, к примеру, читать файл из такой директории, если у него нет атрибута «r».
Что любопытно, возможен режим доступа «rwx---rwx», когда «все остальные» могут делать с файлом что угодно, а члены группы – нет (хотя, казалось бы, они тоже «остальные»), и даже «---rwxrwx», когда с файлом может что угодно делать любой, кроме владельца. Это происходит потому, что Unix сначала проверяет, к какой категории относится персона, запрашивающая доступ к файлу, а потом смотрит соответствующие права, не обращая внимания на остальные.
Вызов команд
Для вызова команды достаточно просто набрать ее имя и на-
жать <Enter>.
Большинство команд «понимает» несколько (а некоторые – и несколько десятков) ключей (или опций), модифицирующих их поведение. Опции предваряются символом «-». Например, команда ls выдает листинг текущей директории, а ls -l – детальный листинг. Обычно символ ключа осмыслен – это первая буква слова, обозначающего действие ключа; так «l» – сокращение от «long».
Если надо указать несколько ключей, то их можно писать как по отдельности, так и слитно: так, команды «ls -l -a» и «ls -la» эквивалентны.
112
Многие команды в Linux понимают так называемые длинные ключи (long options). Длинный ключ – это не одна буква, а слово, предваряемое двойным дефисом. Например, «ls --all» – то же самое, что и «ls -a». Длинные ключи можно указывать только раздельно.
Где взять описание команд?
Чтобы узнать, какие ключи понимает та или иная команда, необходимо посмотреть страницу руководства по ней (manстраницу, man-page). Это делается при помощи команды man. Например, «man ls» покажет страницу про команду ls. Большинство man-страниц состоят из следующих частей:
NAME – имя команды
SYNOPSIS – краткое описание – как выглядит вызов команды. DESCRIPTION – описание – зачем команда нужна и что она
делает.
OPTIONS – какие ключи можно указывать и их описание. SEE ALSO – «смотри также» – ссылки на другие man-страницы. Ссылка вида «ln(1)» означает «страница про ln из раздела 1». Посмотреть страницу из указанного раздела (если в разных разде-
лах есть страницы содинаковыми именами) можно командой man раздел страница
Например, «man 1 ln». Выход из man – ключ «q».
Многие команды понимают также специальные ключи -h и -help ивыдаюткраткуюсправкупосвоемуиспользованию. Пример:
bobby:~% du --help
Usage: du [OPTION]... [FILE]...
Summarize disk usage of each FILE, recur-
sively for directories. |
|
|
-a, --all |
write counts for all |
|
files, not just directories |
|
|
-b, --bytes |
print size in bytes |
|
-c, --total |
produce a grand total |
|
-D, --dereference-args |
dereference PATHs |
|
when symbolic link |
|
|
113
-h, --human-readable |
print sizes in human |
|||||
readable format (e.g., 1K 234M 2G) |
1024-byte |
|||||
-k, |
--kilobytes |
|
use |
|||
blocks, not 512 despite POSIXLY_CORRECT |
many |
|||||
-l, --count-links |
|
count |
sizes |
|||
times if hard linked |
|
dereference all sym- |
||||
-L, --dereference |
|
|||||
bolic links |
|
use |
1024K-byte |
|||
-m, |
--megabytes |
|
||||
blocks, not 512 despite POSIXLY_CORRECT |
size |
|||||
-S, --separate-dirs |
do not include |
|||||
of subdirectories |
|
display only a total |
||||
-s, --summarize |
|
|||||
for each argument |
|
skip directories on |
||||
-x, --one-file-system |
||||||
different filesystems |
|
display this help and |
||||
exit |
--help |
|
||||
--version |
output version informa- |
|||||
|
tion and exit
Report bugs to fileutils-bugs@gnu.ai.mit.edu bobby:~% _
В очень редких случаях у команды отсутствует manстраница:
bobby:~% man diff
No manual entry for diff bobby:~% _
В таком случае имеет смысл попробовать альтернативную систему документации – info, просто набрав, к примеру, «info diff». Info – это гипертекстовая система, похожая на helpсистему в Windows или Borland C. Даже если info-документации нет, а есть только man-страница, info покажет ее. Документацию по самой info можно посмотреть, набрав «info info».
2. Операции с файлами и каталогами
В SLACKWARE LINUX команды могут запускаться в консольном режиме или в окне xterm X WINDOW SYSTEM.
114
Команда Unix |
Команда Dos |
Назначение |
|
|
Самые |
необходимые |
|
ls |
dir |
Просмотр листинга директории, показ |
|
атрибутов файла(ов) |
|||
|
|
||
cd |
cd |
Переход в другую директорию |
|
pwd |
cd |
Показать, какая директория сейчас |
|
текущая |
|||
|
|
||
cp |
copy |
Копирование файлов |
|
mv |
ren |
Переименование/перемещение файлов |
|
rm |
del |
Удаление файлов |
|
|
|
Иные |
|
mkdir |
md |
Создание директории |
|
rmdir |
rd |
Удаление директории |
|
chmod |
|
Изменение прав доступа файла |
|
ln -s |
|
Создание символьного линка |
|
cat |
type |
Выдача файла на экран |
|
more |
more |
Постраничный просмотр содержимо- |
|
го файла |
|||
|
|
||
less |
|
Более удобный просмотр файла |
|
df |
|
Показ свободного места на диске |
|
du |
|
Показ объема, занимаемого директо- |
|
|
рией или файлом |
||
|
|
Оболочки и команды LINUX
Большая часть общения с системой LINUX происходит посредством командных оболочек (например, SHELL). Командная оболочка – это программа, которая воспринимает команды, вводимые с клавиатуры, и преобразует их в инструкции операционной системе. Аналогичные функции исполняет программа COMMAND.COM в системе MS-DOS. Командная оболочка является одним из интерфейсов системы LINUX. Существует еще много различных интерфейсов, например, X Window System, в которых команды могут исполняться путем действий с клавиатурой и мышью.
После того, как выполнен вход в операционную систему, запускается командная оболочка, в которой можно вводить команды.
Вход в систему и ожидание приглашения (prompt) системы:
115
mousehouse login: larry
Password: пароль пользователя larry
Welcome to Mousehouse!
/home/larry\# – приглашение командной оболочки, т.е. оболочка готова воспринимать команды.
Командой является первое слово в командной строке, называемое именем команды. Все остальное в командной строке воспринимается в качестве аргументов этой команды.
/home/larry\# cp foo bar
cp – имя команды; foo, bar – аргументы.
Когда введена команда, оболочка, в первую очередь, проверяет, является ли команда внутренней для оболочки. Внутренней командой называется команда, про которую оболочка сама по себе знает, как ее исполнять. Имеется несколько внутренних команд оболочек. Также оболочка проверяет, не является ли команда псевдонимом (alias) другой команды. Если результат всех проверок отрицательный, то оболочка ищет программу с этим именем на диске. Если программа находится, оболочка ее исполняет, передавая ей аргументы, введенные вкомандной строке.
/home/larry\# eat dirt eat: command not found /home/larry\#
Оболочка не смогла найти программу с данным ей именем (eat) и выдала сообщение об ошибке.
Движение по дереву каталогов
Команда, которая используется для движения по дереву каталогов, называется cd (change directory – изменить каталог).
cd directory ,
где directory – имя каталога, который должен стать текущим. При входе в систему текущим каталогом назначается домаш-
ний каталог пользователя.
/home/larry# cd papers /home/larry/papers#
Теперь текущим каталогом является каталог papers, далее можно обратиться к файлу
/home/larry/papers# more history-final
116
Чтобы вернуться в родительский каталог, следует дать команду
/home/larry/papers# cd \ .. /home/larry#
В каждом каталоге имеется элемент «..» – обращение к родительскому каталогу (ближайшему каталогу более высокого уровня). Аналогично, ссылка на тот же самый каталог называется «.» и также имеется в каждом каталоге. Следовательно, команда
/home/larry/papers# cd \ .
текущего каталога не изменит.
С командой cd можно также использовать абсолютный путь:
/home/larry/papers# cd /home/karl /home/karl#
Команда cd, отданная без аргументов, назначает текущим собственный каталог пользователя.
/home/karl# cd /home/larry#
Просмотр содержимого каталогов
Команда ls (list) выводит на экран список файлов и каталогов, по умолчанию (если не указаны параметры) – список, относящийся к домашнему каталогу.
/home/larry# ls Mail
letters papers /home/larry#
Чтобы получить более полную информацию от команды ls, можно использовать опцию – F:
/home/larry# ls -F Mail/
letters/
papers/
/home/larry#
К концу каждого имени приписан символ /, значит, все три элемента в этом списке – подкаталоги.
Если в списке, выданном командой ls -F, к имени файла приписан символ *, то данный файл является исполняемым (executable).
117
Почти каждой команде в системе UNIX можно указывать несколько опций в дополнение к ее обязательным аргументам. Как правило, эти опции начинаются с символа «-».
Если команде ls сообщается имя каталога, то на экран будет выдано содержимое этого каталога:
/home/larry# ls -F papers english-lit
history-final masters-thesis notes/ /home/larry\#
Создание новых каталогов производится командой mkdir
(make directory). /home/larry# mkdir foo /home/larry# ls -F Mail/
foo/
letters/
papers/ /home/larry# cd foo /home/larry/foo# ls /home/larry/foo#
Новый каталог пустой, т. к. в нем нет файлов.
Для копирования файлов используется команда cp (copy).
/home/larry/foo# cp /etc/termcap . /home/larry/foo# cp /etc/shells . /home/larry/foo# ls -F
shells termcap /home/larry/foo# cp shells bells /home/larry/foo# ls -F
bells shells termcap /home/larry/foo#
Команда cp копирует файлы, перечисленные в командной строке, в файл или каталог, который указан последним аргументом. Для указания текущего каталога используется символ «.».
118
Перенос файлов
Команда mv (move) переносит файлы (в отличие от копирования).
/home/larry/foo# mv termcap sells /home/larry/foo# ls -F
bells sells shells /home/larry/foo\#
Файлу termcap было дано новое имя sells.
Команда mv может быть использована также для переноса файлов в совершенно другой каталог.
Команды mv и cp создают файл с новым именем (либо путем копирования, либо переноса). Однако, если файл с этим именем уже существует, то старый файл будет уничтожен, а на его месте появится новый, при этом система не спросит разрешения это сделать и не выдаст никакого предупреждения; при переносе файлов в другой каталог следует соблюдать осторожность. В этом каталоге уже может находиться файл с таким именем, и он будет уничтожен, а вместо него появится новый файл.
Уничтожение файлов и каталогов
Для уничтожения файлов используется команда rm (remove).
/home/larry/foo# rm bells shells /home/larry/foo# ls -F
shells /home/larry/foo\#
По умолчанию команда rm не выдает предупреждения перед уничтожением файла!
Для уничтожения каталогов используется команда rmdir (remove directory). Эта команда уничтожает каталог только в том случае, если каталог пуст.
Просмотр содержимого файлов
Для просмотра содержимого файлов используются команды more и cat. Команда more выводит содержимое файла на экран по одному экрану за один раз, в то время как команда cat выводит весь файл сразу.
119
Для того, чтобы увидеть содержание файла shells, введем команду
/home/larry/foo# more
В файле shells содержится список командных оболочек, доступных пользователю в данной системе. В большинстве систем в этот список входят /bin/sh, /bin/bash, /bin/csh.
При использовании программы more для вывода на экран следующей порции текста надо нажимать клавишу Space, а для того, чтобы вывести предыдущую порцию – клавишу b. Чтобы закончить работу команды more, нужно нажать клавишу q.
Команда cat (concatenate) используется для того, чтобы приписывать содержимое одного файла к окончанию другого файла и помещать результат в третий файл.
Экранная документация
Почти все системы семейства UNIX, включая систему
LINUX, имеют экранную документацию (man pages). Ее тексты содержат документацию по системным командам, ресурсам, конфигурационным файлам и т.д. и могут быть выведены на экран в процессе работы.
Для доступа к экранной документации используется команда man (manual). Если необходимо узнать, какие есть опции у команды ls, можно ввести команду
/home/larry# man ls
и на экран будет выведена экранная документация для команды ls. Большинство текстов экранной документации содержит исключительно технические детали команды без особых пояснений. cd, pwd, cp, mv, rm, mkdir, rmdir
С данной группой команд все очевидно. Следует лишь заметить, что mv может переименовывать не только файлы, но и директории, а cp и rm также прекрасно справляются с директориями, если им указать ключ «-r» (Recursive).
Замечание 1: «cd» без параметров переходит в homeдиректорию.
Замечание 2: для копирования файла с сохранением пометки о времени следует указывать команде «cp» ключ «-p».
120