Next Previous Contents

3. Файлы и программы

3.1. Файлы: предварительные понятия

Linux имеет структуру каталогов и файлов, очень похоже на DOS/Win. Файлы имеют имена, которые подчиняются специальным правилам, хранятся в каталогах, некоторые являются выполнимыми, и большинство из них имеют командные ключи. Кроме того, Вы можете использовать маски имен файлов, перенаправление ввода-вывода и конвейеры. Только имеется несколько маленьких отличий:

Теперь вы можете перейти к разделу "Трансляция команд из DOS в Linux", но на вашем месте я бы прочитал

3.2. Символические связи

UNIX имеет тип файла, который не существует под DOS - это символическая связь. О нем можно думать как о указателе на файл или каталог, и можно использовать вместо файла или каталога, на который он указывает; он напоминает шорткаты Windows 95. Примеры символических связей - /usr/X11, который указывает на /usr/X11R6; /dev/modem, который указывает или на /dev/cua0 или /dev/cua1.

Чтобы создать символическую связь используется команда ln:


       $ ln -s  

Пример:


       $ ln -s /usr/doc/g77/DOC g77manual.txt

Теперь Вы можете обращаться к g77manual.txt вместо /usr/doc/g77/DOC. Связи в распечатках каталога показываются так:


       $ ls -F

       g77manual.txt@

       $ ls -l

       (...)           g77manual.txt -> /usr/doc/g77/DOC

3.3. Права доступа и владение

Файлы DOS и каталоги имеют следующие атрибуты: A(архив), H(скрытый), R(только для чтения), и S(системный). Только H и R имеют смысл в Linux: невидимые файлы начинаются с точки, а R - атрибут чтения.

Под UNIX файл имеет "права доступа" и владельца, который в свою очередь принадлежит "группе". Рассмотрите этот пример:


       $ ls -l /bin/ls

       -rwxr-xr-x  1  root  bin  27281 Aug 15 1995 /bin/ls*

Первое поле содержит права доступа к файлу /bin/ls, который принадлежит root, группы bin. Отставляя пока остальную информацию в сторонку, запомните что означает -rwxr-xr-x, слева направо:

- тип файла (- = обычный файл, d = каталог, l = линк, и т.д); rwx - права доступа для владельца файла (чтение, запись, выполнение); r-x - права доступа для группы владельца файла (чтение, выполнение); (я не буду освещать понятие группы; пока Вы - новичок, Вы можете прожить и без этого ;-) r-x - права доступа для всех других пользователей (чтение, выполнение).

каталог /bin тоже имеет права доступа: см. Раздел "Права доступа каталогов" для дальнейших подробностей. Это - та причина, по которой Вы не можете удалить файл /bin/ls, если Вы не root: Вы не имеете прав на эти действия. Для изменения прав доступа к файлу используется команда:


       $ chmod  

где, who - это u(пользователь-владелец), g(группа), o(другие), x может быть или +, или -, perm - это r(чтение), w(запись) или x(выполнение). Общие примеры использования chmod - следующие:


       $ chmod +x file

Установка для файла прав на выполнение.


       $ chmod go-rw file

Удаление прав на чтение и запись для всех, кроме владельца.


       $ chmod ugo+rwx file

Все могут читать, писать в и выполнять файл.


       # chmod +s file

Это действие создает так называемый ``setuid'' или ``suid'' файл --- файл, который любой пользователь может выполнять с правами владельца этого файла. Обычно, вы встретитесь с root suid файлами; они часто являются важными системными файлами, например, X сервер.

Более короткий способ обращения к правам доступа - цифрами: rwxr-xr-x может быть выражен числом, поскольку 755 (каждый символ соответствует биту: --- - это 0, --x - это 1, -w- - это 2, -wx - это 3 ...). Это выглядит сложновато, но, практикуясь, вы поймете эту концепцию. Root, являясь суперпользователем, может изменять любые права доступа к файлам. RMP.

3.4. Файлы: Трансляция команд

Слева команды DOS; справа их синонимы Linux .


       ATTRIB:         chmod

       COPY:           cp

       DEL:            rm

       MOVE:           mv

       REN:            mv

       TYPE:           more, less, cat

Операторы перенаправления ввода-вывода: < >> > |

Маски имен файлов: * ?

nul: /dev/null

prn, lpt1: /dev/lp0 or /dev/lp1; lpr

Примеры


       DOS                                     Linux

       ---------------------------------------------------------------------



       C:\GUIDO>ATTRIB +R FILE.TXT            $ chmod 400 file.txt

       C:\GUIDO>COPY JOE.TXT JOE.DOC          $ cp joe.txt joe.doc

       C:\GUIDO>COPY *.* TOTAL                $ cat * > total

       C:\GUIDO>COPY FRACTALS.DOC PRN         $ lpr fractals.doc

       C:\GUIDO>DEL TEMP                      $ rm temp

       C:\GUIDO>DEL *.BAK                     $ rm *~

       C:\GUIDO>MOVE PAPER.TXT TMP\           $ mv paper.txt tmp/

       C:\GUIDO>REN PAPER.TXT PAPER.ASC       $ mv paper.txt paper.asc

       C:\GUIDO>PRINT LETTER.TXT              $ lpr letter.txt

       C:\GUIDO>TYPE LETTER.TXT               $ more letter.txt

       C:\GUIDO>TYPE LETTER.TXT               $ less letter.txt

       C:\GUIDO>TYPE LETTER.TXT > NUL         $ cat letter.txt > /dev/null

               n/a                            $ more *.txt *.asc

               n/a                            $ cat section*.txt | less



Примечания:

3.5. Запуск программ: многозадачный режим и сеансы

Чтобы выполнить программу, напечатайте имя, также как это делается под DOS. Если каталог (раздел "Использование Каталогов''), в котором находится программа, включен в PATH (раздел "Файлы инициализации системы''), то программа запустится. Исключение: в отличие от DOS, под Linux программа, расположенная в текущем каталоге не запустится, если этот каталог не включен в PATH. Выход из этой ситуации: если программа называется prog, напечатайте ./prog.

Вот как выглядит типичная командная строка:


  $ command [-s1 [-s2] ... [-sn]] [par1 [par2] ... [parn]] [< input] [> output]

где -s1, ..., -sn - ключи программы, par1, ..., parn - параметры программы. Вы можете поместить несколько команд в одной строке:


       $ command1 ; command2 ; ... ; commandn

Это все о запуске программ, но это просто небольшой шаг в этом вопросе. Одна из основных причин использования Linux - то, что он является многозадачной ОС - может выполнять несколько программ (будем называть их процессами) одновременно. Вы можете запустить процессы в фоновом режиме и продолжить работать дальше. Кроме того, Linux позволяет Вам запускать несколько сеансов: это похоже на одновременную работу на нескольких компьютерах!

Используя эти команды, Вы можете форматировать диск, паковать насколько файлов, компилировать программу и распаковывать архив одновременно и все еще иметь командную строку в вашем распоряжении. Пробуйте это сделать в DOS! И посмотрите как это будет работать в Windows, чтобы увидеть различие в эффективности (если Windows не упадет, конечно).

3.6. Запуск программ на удаленных компьютерах

Чтобы запустить программу на удаленной машине, чей IP адрес - remote.machine.edu, выполните:


       $ telnet remote.machine.edu

После регистрации на удаленной машине, запустите вашу любимую программу. Само собой разумеется, Вы должны иметь доступ к shell на удаленной машине.

Если у Вас установлен X11, то Вы можете даже запустить X приложение на удаленном компьютере, отображаая его на вашем X экране. Допустим, что remote.machine.edu - это удаленный X компьютер, а local.linux.box - это ваша Linux машина. Чтобы запустить с local.linux.box программу X, которая расположена на remote.machine.edu, сделайте следующее:

Вуаля! Теперь progname запустится на remote.machine.edu и будет отображаться на вашей машине. Не пробуйте это на модемных соединениях, такая связь слишком медленна, чтобы быть пригодной для использования.


Next Previous Contents