Структура каталогов и файлов в Linux очень сходна с той, которая используется в DOSWin. Фалы имеют имена, которые подчиняются специальным правилам и хранятся в каталогах, некоторые из файлов являются исполнимыми и у некоторых из них существуют ключи командной строки. Более того, вы можете использовать символы шаблонов, перенаправление и конвейеризацию. Есть только несколько небольших отличий:
NOTENOUG.TXT
. В Linux мы можем делать лучше. Если вы установили
Linux, используя файловую систему, подобную ext2 или umsdos, то вы можете
использовать более длинные имена файлов (до 255 символов), и с более чем
одной точкой в имени: например, This_is.a.VERY_long.filename
.
Пожалуйста заметьте, что я использовал символы и верхнего и нижнего
регистра: в действительности...
FILENAME.tar.gz
и filename.tar.gz
являются разными файлами. ls
является командой, а LS
является ошибкой;
$ # следующая команда создает каталог, названный "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
;
/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
(восстановления после удаления), так
что дважды подумайте до удаления чего-либо;
< > >>
, в
Linux имеется 2>
для перенаправления сообщений об ошибках
(stderr); более того, 2>&1
перенаправляет stderr в stdout,
в то время как 1>&2
перенаправляет stdout в stderr;
[]
.
Использование: [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 позволяет вам иметь несколько сеансов работы: Это подобно наличию множества компьютеров на одном!
su - <loginname>
. Пример: su -
root
. Это полезно, например, когда вам надо выполнить задачу, которую
может выполнить только root.
exit
. Если у вас есть
приостановленные задания (смотрите дальше), то вас предупредят.
&
' в конец командной строки:
$ progname [-switches] [parameters] [< input] [> output] &
[1] 123
Командный процессор идентифицирует процессы по номеру задания (например
[1]
; смотрите ниже), и по PID (Идентификационный номер процесса;
123 в нашем примере).
ps
ax
. Эта команда выдаст список запущенных в настоящее время процессов.
kill
<PID>
. Вам может понадобиться убить процесс в том случае, если вы
не знаете, как его правильно завершить... До тех пор, пока вы не станете
root, вы не сможете завершать процессы других людей. Иногда процесс может
быть завершен только используя команду kill -SIGKILL <PID>
.
В дополнение командный процессор позволяет вам остановить или временно
приостановить процесс, перевести процесс в фоновый режим, и перевести процесс
из фонового режима в интерактивный режим. В этом контексте процессы
называются ``заданиями''.
jobs
. Здесь задания идентифицируются по номеру задания, а не по их
PID.
bg <%job>
(он станет заданием).
fg
<%job>
. Для перевода в интерактивный режим последнего задания,
запущенного в фоновом режиме, просто наберите fg
.
kill <%job>
, где
<job> может быть 1, 2, 3,...
Используя эти команды вы можете форматировать диск, сжимать кучу файлов, компилировать программу и разжимать архив в одно и тоже время и все равно иметь командную строку для своих нужд. Попробуйте сделать это в 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
, выполните следующее:
xterm
или подобный эмулятор
терминала, затем наберите:
$ xhost +remote.machine.edu
$ telnet remote.machine.edu
remote:$ DISPLAY=local.linux.box:0.0
remote:$ progname &
(вместо DISPLAY...
, вам может понадобиться написать: setenv
DISPLAY local.linux.box:0.0
. Это зависит от командного процессора на
удаленной машине).
И все! Теперь progname
будет запущена на
remote.machine.edu
и будет отображаться на вашей машине. Не
пытайтесь делать это через модем, это слишком медленно, чтобы можно было
пользоваться. Более того, это грубый и небезопасный метод: пожалуйста
прочитайте ``Remote X Apps mini-HOWTO'' по адресу
http://www.linuxdoc.org/HOWTO/mini/Remote-X-Apps.html.