Знакомство с Linux
Александр Соловьев
Оглавление
3.Первые шаги в UNIX
Перед тем, как начать, важно заметить, что все имена файлов
и команд чувствительны к большим и малым буквам (чего нет в
системах типа MS-DOS). Например, команда make очень отличается от
Make или MAKE . То же относится и к именам каталогов.
3.1 Первая прогулка
Теперь мы можем войти в систему и узнать, как обращаться к
файлам и менять местоположение в файловой системе, чтобы упрощать
свою жизнь в ней. Команда для перемещения по дереву каталогов -
cd , (``change directory''). Вы скоро обратите внимание, что
многие часто используемые команды Unix состоят из двух-трех букв.
Формат команды cd :
cd <directory>
где <directory> - имя каталога, в который вы желаете
перейти. Как мы уже говорили, когда вы входите в систему, вы
автоматически оказываетесь в своем домашнем каталоге. Если
Larry желает двинуться ниже по дереву, он должен использовать
команду
/home/larry# cd papers
/home/larry/papers#
Как видите, изменилась подсказка, отразив изменение
местоположения (новый рабочий каталог). Теперь он в каталоге
papers и может посмотреть на свой файл history-final с помощью
команды
/home/larry/papers# more history-final
Чтобы вернуться назад из подкаталога papers , надо
использовать команду
/home/larry/papers# cd ..
/home/larry#
(Обратите внимание на пробел между ``cd '' и ``.. ''). Каждый
каталог содержит имя ``.. '' , которое отсылает к родительскому
(для данного каталога) каталогу. Также каждый каталог
имеет имя ``. '', которое ссылается на него самого. Поэтому
команда
/home/larry/papers# cd .
никуда не переведет.
В команде cd вы можете использовать маршруты. Чтобы перейти в
домашний каталог Карла, вы можете воспользоваться командой
/home/larry/papers# cd /home/karl
/home/karl#
Используя команду cd без аргументов вы из любого места
дерева вернетесь в свой домашний каталог.
/home/karl# cd
/home/larry#
В начало страницы
3.2 Разглядывание содержимого каталогов
Теперь вы знаете, как ходить-бродить по каталогам, но
вероятно возникает вопрос:"Ну и что с того?" Само по себе
хождение по каталогам бесполезно, давайте познакомимся с новой
командой ls . ls (LiSt) выдает на экран перечень файлов и
каталогов (по умолчанию из текущего каталога). Например,
/home/larry# ls
Mail
letters
papers
/home/larry#
Здесь мы видим, что у Larry три "единицы хранения" в его
текущем каталоге: Mail , letters и papers .
Но это мало, что
говорит: каталоги это или файлы? Можно использовать опцию
(прим. переводчика: часто в документации по UNIX используют в
этом контексте слово "флаг")
-F в команде ls , чтобы получить
больше информации.
/home/larry# ls -F
Mail/
letters/
papers/
/home/larry#
Приписанные справа к именам файлов / говорят о том, что это
(под)каталоги.
Использование ls -F (обратите внимание "-F " пишется без
пробела) может дать также ``* '' в конце некоторых имен файлов.
Это будет говорить о том, что это выполняемые файлы или
программы. Если, при вызове ls -F , ничего справа не приписано к
имени, то это "нормальный" файл, т.е. не каталог и не
выполняемый файл.
В общем, каждая команда UNIX может иметь несколько опций в
дополнение к другим аргументам. Эти опции обычно записываются со
знаком ``- '', как это было показано на примере ls -F .
Опция -F
сообщает команде ls , что необходимо выдать дополнительную
информацию о типе файлов.
Если вы напишете в команде ls имя каталога, то она выдаст
содержимое указанного каталога.
/home/larry# ls -F papers
english-lit
history-final
masters-thesis
notes/
/home/larry#
Или, чтобы было интереснее, давайте посмотрим, что имеется в
системном каталоге /etc/ .
/home/larry# ls /etc
Images ftpusers lpc rc.new shells
adm getty magic rc0.d startcons
bcheckrc gettydefs motd rc1.d swapoff
brc group mount rc2.d swapon
brc~ inet mtab rc3.d syslog.conf
csh.cshrc init mtools rc4.d syslog.pid
csh.login init.d pac rc5.d syslogd.reload
default initrunlvl passwd rmt termcap
disktab inittab printcap rpc umount
fdprm inittab.old profile rpcinfo update
fstab issue psdatabase securetty utmp
ftpaccess lilo rc services wtmp
/home/larry#
(Для вышедших из MS-DOS пользователей полезно обратить
внимание, что имена файлов могут быть длиннее 8 символов и
содержать точку на любой позиции. Можно даже использовать
несколько точек в одном имени).
Давайте поднимемся вверх по дереву
(прим. переводчика: так
уж сложилось, что в UNIX начальной вершиной дерева является
"корень (root)")
, используя команду ``cd .. '', а затем спустимся
в другой каталог (/usr/bin ).
/home/larry# cd ..
/home# cd ..
/# cd usr
/usr# cd bin
/usr/bin#
Вы, разумеется, можете передвигаться по каталогам большими
шагами, например, сразу выполнить cd /usr/bin .
Постарайтесь погулять по каталогам, используя команды ls и
cd. В некоторых случаях вы можете напороться на раздражающее
сообщение ``Permission denied ''(обращение запрещено). Это всего
лишь сработала система защиты UNIX, чтобы выполнять команды в тех
или иных каталогах вы должны иметь на это разрешение. Подробнее
об этом поговорим в Разделе 3.9.
В начало страницы
3.3 Создание новых каталогов
Пора познакомиться с тем, как создавать каталоги. Это
связано с использованием команды mkdir . Попробуйте следующее:
/home/larry# mkdir foo
/home/larry# ls -F
Mail/
foo/
letters/
papers/
/home/larry# cd foo
/home/larry/foo# ls
/home/larry/foo#
Наши вам поздравления! Вы только что создали новый
каталог и зашли в него. Поскольку пока нет файлов в этом новом
каталоге, давайте познакомимся с тем, как копировать файлы.
3.4 Копирование файлов
Копирование файлов осуществляется командой 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 копирует файлы, перечисленные в командной строке,
в файл или каталог, указанный последним аргументом.
(прим. переводчика: несколько файлов одной командой cp можно
скопировать только в каталог; в файл можно скопировать только
один файл).
Обратите внимание на то, как мы используем каталог
``. ''для ссылки на текущий каталог.
3.5 Перемещение файлов
Новая команда с именем mv (MoVe) перемещает файлы вместо их
копирования. Синтаксис команды очевиден.
/home/larry/foo# mv termcap sells
/home/larry/foo# ls -F
bells sells shells
/home/larry/foo#
Обратите внимание, что теперь termcap уже не существует, а
на его месте файл sells . Это можно использовать для
переименования файлов, что мы сейчас и сделали. Но можно и
переносить файлы в совсем другие каталоги.
Внимание! Команды mv и cp уничтожат содержимое файла в
который они пишут (если он существовал), не спрашивая вашего
разрешения. Будьте внимательны, когда вы переносите файл в другой
каталог: там уже может существовать файл с таким именем и вы
его затрете.
3.6 Удаление файлов и каталогов
Мы тут с вами "нарифмовали" ненужных файлов, изучая работу
команды ls . Для удаления файлов используется команда rm (ReMove).
/home/larry/foo# rm bells sells
/home/larry/foo# ls -F
shells
/home/larry/foo#
У нас ничего не осталось, кроме shells , но не будем
переживать. Обратите внимание, что команда rm не будет вас
переспрашивать перед удалением, так что будьте осторожны.
Родственная rm команда rmdir . Эта команда удаляет
каталоги, но только пустые каталоги. Если в каталоге есть хоть
какие-нибудь файлы или подкаталоги, она распишется в бессилии.
В начало страницы
3.7 Рассматривание файлов
Команды more и cat используются для просмотра содержимого
файлов. more выдает файл на дисплей "поэкранно", в то время, как
cat выдает весь файл разом.
(прим. переводчика: если файл
многострочный, то, при использовании команды cat файл промелькнет
и на экране останутся последние строки).
Чтобы посмотреть файл shells , используем команду
/home/larry/foo# more shells
При использовании команды more нажимайте клавишу пробел
для перехода к следующей странице и b для возврата к
предыдущей. Нажав q, вы выйдете из more.
А теперь попробуйте команду cat etc/termcap/. Текст
промелькнет слишком быстро, чтобы успеть его прочитать. На самом
деле команда ``cat '' (conCATenate) в основном используется для
других целей, для той же конкатенации нескольких файлов. Это в
дальнейшем будет обсуждаться.
3.8 Получение оперативной помощи
Практически каждый UNIX имеет то, что называется
"Руководство" - man ( ``manual pages''). Эта команда man
содержит документацию на различные команды системы, ресурсы,
конфигурационные файлы. Например, если вы хотите найти информацию
о других опциях команды ls , введите
/home/larry# man ls
и вам на экран будут выведены страницы Руководства.
К сожалению, большинство страниц руководства написаны с
ориентацией на пользователей, имеющих некоторые представления о
работе соответствующих команд. Поэтому страницы
Руководства обычно содержат справочные данные по командам, а не
учебный материал.
Но Руководство неоценимо для освежения памяти, если вы
забыли синтаксис команды. Руководство может также много
рассказать вам о командах, которые мы даже не упомянем в этой
книге.
Я предлагаю вам посмотреть в Руководстве те команды, которые
мы уже обсуждали и все, с которыми мы будем встречаться. Вы
обнаружите, что не на все команды есть Руководство. Тому
несколько причин. Одна - некоторые страницы Руководства еще просто
не написаны (the Linux Documentation Project - программа
подготовки документации для Linux как бы отвечает за решение
этой проблемы. Мы уже собрали большую часть документации).
Во-вторых, команда может быть внутренней командой shell или
синонимом (alias), что обсуждалось в Разделе 3.2.4, в каждом из
этих случаев для них нет собственных страниц. Возьмем для примера
cd , которая является внутренней командой shell. Shell выполняет
эту команду, но она не имеет своей отдельной программы.
|