Разделы
Социальные сети
|
5. Файлы и программы
Структура каталогов и файлов в Linux очень сходна с той, которая
используется в DOSWin. Файлы имеют имена, которые подчиняются специальным
правилам и хранятся в каталогах, некоторые из файлов являются исполнимыми и
у некоторых из них существуют ключи командной строки. Более того, вы можете
использовать символы шаблонов, перенаправление и конвейеризацию. Есть
только несколько небольших отличий:
- в DOS, имена файлов хранятся в так называемом формате 8.3; например
NOTENOUG.TXT . В Linux мы можем делать лучше. Если вы установили
Linux, используя файловую систему, подобную ext2 или umsdos, то вы можете
использовать более длинные имена файлов (до 255 символов), и с более чем
одной точкой в имени: например, This_is.a.VERY_long.filename .
Пожалуйста заметьте, что я использовал символы и верхнего и нижнего
регистра: в действительности...
- символы верхнего и нижнего регистра в именах файлов отличаются друг
от друга. Поэтому
FILEname.tar.gz и filename.tar.gz
являются разными файлами. ls является командой, а LS
является ошибкой;
- пользователи Windows, будьте осторожны при использовании длинных имен в
Linux. Если имя файла содержит пробелы (не рекомендуется, но возможно), то
вы должны заключить имя файла в двойные кавычки при обращении к нему.
Например:
$ # следующая команда создает каталог, названный "My old files"
$ mkdir "My old files"
$ ls
My old files bin tmp
А Также некоторые символы не должны использоваться: это
!*$&# .
- не существует обязательных расширений типа
.COM и
.EXE для программ или .BAT для командных файлов.
Исполнимые файлы отмечаются символом звездочка `* ' в конце их
имен, при использовании команды ls -F . Например:
$ ls -F
I_am_a_dir/ cindy.jpg cjpg* letter_to_Joe my_1st_script* old~
Файлы cjpg* и my_1st_script* являются исполнимыми, то
есть "программами". В DOS, файлы резервных копий заканчиваются на
.BAK , тогда как под Linux они заканчиваются на знак тильды
`~ '. Также файл, чье имя начинается со знака точки,
считается скрытым. Например: файл .I.am.a.hidden.file не будет
показан при выполнении команды ls ;
- Ключи командной строки (switches) программ DOS задаются в виде
/switch , Linux использует ключи в виде -switch или
--switch . Пример: dir /s становится ls -R .
Заметим, что много программ DOS, такие как PKZIP или ARJ ,
используют ключи в стиле UNIX.
Вы можете теперь перепрыгнуть к разделу
Перевод команд из DOS в Linux, но я надеюсь, что вы будете читать дальше.
В 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
Файлы и каталоги 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 тоже имеет права доступа: смотрите раздел
Права доступа к каталогам для
дополнительной информации. Вот поэтому вы не можете удалить файл
/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.
На левой стороне находятся команды 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
Примечания:
* намного "умнее " в Linux: * соответствует
всем файлам, за исключением скрытых; .* соответствует всем скрытым
файлам (но также текущему каталогу `. ' и каталогу уровнем выше
`.. ': beware!); *.* соответствует только тем, которые
имеют `. ' в середине имени, или оканчиваются на точку;
p*r соответствует и `peter' и `piper'; *c* соответствует
и `picked' и `peck';
- при использовании
more , необходимо нажимать на клавишу
<SPACE> для того, чтобы продвигаться по файлу, и `q' для выхода.
less является более интуитивно понятной командой и позволяет вам
использовать клавиши управления курсором;
- нет команды
UNDELETE (восстановления после удаления), так
что дважды подумайте до удаления чего-либо;
- в добавлении к используемым в DOS'
< > >> , в
Linux имеется 2> для перенаправления сообщений об ошибках
(stderr); более того, 2>&1 перенаправляет stderr в stdout,
в то время как 1>&2 перенаправляет stdout в stderr;
- Linux имеет дополнительный шаблон (wildcard):
[] .
Использование: [abc]* соответствует файлам, начинающимся с a, b,
c; *[I-N1-3] соответствует файлам, оканчивающимся на I, J, K, L,
M, N, 1, 2, 3;
- команда
lpr <file> печатает файл в фоновом режиме. Для
проверки состояния очереди печати используйте команду lpq ; для
удаления файла из очереди печати используйте lprm ;
- нет команды, похожей на команду
REname в DOS; так что
команда mv *.xxx *.yyy не будет работать. команда, похожая на REN,
доступна с
ftp://metalab.unc.edu/pub/Linux/utils/file;
- используйте команды
cp -i и mv -i для того, чтобы
вас предупредили, когда файл будет перезаписываться.
Для запуска программы просто наберите ее имя, так как вы делали это в
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,
просто чтобы посмотреть разницу в производительности (конечно, если он не
рухнет).
Для запуска программы на удалённой машине, чьим именем является
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://www.linuxdoc.org/HOWTO/mini/Remote-X-Apps.html.
Предыдущая
Следующая Оглавление
|
|
Социальные сети