Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методы / Куликова Н.В., Петровская Е.Н. (ч.1,2)

.pdf
Скачиваний:
52
Добавлен:
11.06.2015
Размер:
2.62 Mб
Скачать

Файл в 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