Знакомство с 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 выполняет эту команду, но она не имеет своей отдельной программы.


<<< Оглавление Страницы: 3  4 >>>