Next Previous Contents

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

5.1 Файлы: Предварительные замечания

Структура каталогов и файлов в Linux очень сходна с той, которая используется в DOSWin. Фалы имеют имена, которые подчиняются специальным правилам и хранятся в каталогах, некоторые из файлов являются исполнимыми и у некоторых из них существуют ключи командной строки. Более того, вы можете использовать символы шаблонов, перенаправление и конвейеризацию. Есть только несколько небольших отличий:

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

5.2 Символьные ссылки

В UNIX имеется тип файлов, которых нет в DOS: символьные ссылки. Он может быть описан как ссылка на файл или каталог и может быть использован вместо файла или каталога, на который она указывает; они сходны с ярлыками в Windows. Примером символьный ссылки может быть /usr/X11, которая указывает на каталог /usr/X11R6, или /dev/modem, который указывает либо на /dev/ttyS0 либо на /dev/ttyS1.

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

$ ln -s <file_or_dir> <linkname>

Пример:

$ 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

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

Файлы и каталоги DOS имеют следующие атрибуты: A (архивный), H (скрытый), R (только чтение) и S (системный). В Linux только H и R имеют значение: скрытые файлы начинаются с точки, а для того чтобы задать атрибут 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 тоже имеет права доступа: смотрите раздел <@@ref>Права доступа к каталогамDirectories Permissions для дополнительной информации. Вот поэтому вы не можете удалить файл /bin/ls до тех пор, пока не станете пользователемroot: вы просто не имеете прав сделать это. Для изменения прав доступа к файлу используется команда:

$ chmod <whoXperm> <file>

где 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; часто это важные системный файлы, такие как X-сервер.

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

5.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

Примечания:

5.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 позволяет вам иметь несколько сеансов работы: Это подобно наличию множества компьютеров на одном!

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

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

Для запуска программы на удаленной машине, чьим именем является remote.machine.edu:

$ telnet remote.machine.edu

После входа в систему , запустите вашу любимую программу. Излишне говорить, что вам необходимо быть зарегистрированным на удаленной машине и иметь доступ к командному процессору.

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

И все! Теперь progname будет запущена на remote.machine.edu и будет отображаться на вашей машине. Не пытайтесь делать это через модем, это слишком медленно, чтобы можно было пользоваться. Более того, это грубый и небезопасный метод: пожалуйста прочитайте ``Remote X Apps mini-HOWTO'' по адресу http://sunsite.unc.edu/LDP/HOWTO/mini/Remote-X-Apps.


Next Previous Contents