Из DOS/Windows в Linux HOWTO

Guido Gonzato, ggonza at tin.it, перевод Alex Ott, [email protected]

v1.3.5, 31 Августа 2000


Этот HOWTO предназначен для всех пользователей (которые скоро станут бывшими?) DOS и Windows, которые решили перейти к использованию Linux---свободной версии UNIX. Целью этого документа является помощь в переносе знаний пользователя о DOS и Windows в среду Linux, а также предоставление советов об обмене файлами и ресурсами между этими двумя операционными системами.

1. Введение

2. Благодарности

Переводчик благодарит Лену Савельеву, вычитавшую этот документ и внесшую исправления, чтобы его могли читать русские люди :))

Особая благодарность автору этого документа, за такое превосходное введение в Линукс.

2.1 Нужен ли Вам Linux?

Давайте будем политически корректными. В этом документе я говорю ``Linux'', но я подразумеваю ``GNU/Linux''. Пожалуйста прочитайте об этом информацию на http://www.gnu.org/gnu/linux-and-gnu.html.

Вы хотите перейти из мира DOS/Windows в мир Linux? Это хорошая идея: Linux в техническом отношении превосходит DOS, Windows 9x и даже Windows NT. Но будьте осторожны: это может быть не совсем полезным для вас. Вот основные отличия между DOS/Windows и Linux:

Вы должны решить, что вам необходимо. Более того, Linux дает вам мощь, но он требует некоторого времени для того, чтобы научиться, как обуздывать его. Таким образом, если вам в основном нужно коммерческое программное обеспечение, или вы не чувствуете в себе силы для обучения новым командам и концепциям, то вам лучше поискать что-нибудь другое. Сознавайте, что много новичков сдались под действием начальных трудностей.

Ведется работа для того, чтобы сделать Linux более простым для использования, но не ожидайте, что вы станете умелым пользователем до тех пор, пока не прочитаете достаточное количество документации и не будете использовать его по крайней мере несколько месяцев. Linux не даст вам мгновенных результатов, Я на 100% уверен, что если вы являетесь нормальным пользователем,то Linux станет вашей компьютерной нирваной. Между прочим, Linux + DOS/Win могут счастливо сосуществовать на одной и той же машине.

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

До тех пор, пока явно не будет указано, вся информация в этом документе относится к старому, плохому DOS. И там и здесь существует информация о Windows, но помните, что Windows и Linux полностью отличны друг от друга, в отличии от DOS, который является чем-то вроде бедного родственника UNIX.

Также пожалуйста отметьте, что эта работа не является ни полным учебником, ни руководством по настройке!

Последние версии этого документа доступны в различных форматах по адресу http://www.linuxdoc.org.

2.2 Расскажите мне больше

Вы установили Linux и необходимые вам программы на ваш персональный компьютер. Вы создали себе учетную запись (если вы это не сделали, наберите сейчас adduser ваше_имя) и Linux запущен. Вы просто ввели ваше имя и пароль и теперь вы смотрите в экран и думаете: ``Хорошо, но что теперь?''

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

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

Предварительные концепции

Лучший способ научиться чему-либо---это окунуться в это. Эксперименты и игры с Linux поощряются: до тех пор, пока вы не войдете в систему как ``root'' (администратор), вы не сможете причинить большого вреда системе. Несколько моментов:

Получение помощи

Существует много способов получить помощь о Linux. Вот наиболее важные:

2.3 Соглашения

В течении этого документа примеры часто будут приводится в следующем формате: <...> является требуемым аргументом, тогда как [...] является необязательным аргументом. Пример:

$ tar -tf <file.tar> [> redir_file]

file.tar должен быть указан , а перенаправление в redir_file является необязательным.

``RMP'' означает ``пожалуйста Прочитайте Справочные страницы (Man Pages) для более детальной информации''. Я не знаю, как подчеркнуть как важно чтение документации. ``DOSWin'' означает ``DOS/Windows''.

Когда в приглашении командной строки примера имеется знак #, то эта команда может быть выполнена только администратором (root).

3. Для нетерпеливых

Хотите добиться успеха? Посмотрите в эту таблицу:

DOS                     Linux                   Примечание
------------------------------------------------------------------------------

ATTRIB (+-)attr file    chmod <mode> file       полностью отличаются
BACKUP                  tar -Mcvf device dir/   то же самое
CD dirname\\             cd dirname/            почти тот же самый синтаксис
COPY file1 file2        cp file1 file2          то же самое
DEL file                rm file                 будьте осторожны, нет восстановления файлов
DELTREE dirname         rm -R dirname/          то же самое
DIR                     ls                      не полностью похожий синтаксис
DIR file /S             find . -name file       полностью отличаются
EDIT file               vi file                 я думаю, вы не полюбите его (а зря!)
                        jstar file              выглядит как редактор в dos
EDLIN file              ed file                 забудьте его
FORMAT                  fdformat,
                        mount, umount           достаточно отличный синтаксис
HELP command            man command,            та же философия
                        info command
MD dirname              mkdir dirname/          почти тот же самый синтаксис
MORE file               less file               намного лучше
MOVE file1 file2        mv file1 file2          то же самое
NUL                     /dev/null               то же самое
PRINT file              lpr file                то же самое
PRN                     /dev/lp0,
                        /dev/lp1                то же самое
RD dirname              rmdir dirname/          почти тот же самый синтаксис
REN file1 file2         mv file1 file2          не для множества файлов
RESTORE                 tar -Mxpvf device       другой синтаксис
TYPE file               less file               намного лучше
WIN                     startx                  на разных полюсах!

Если вам нужно больше, чем таблица команд, то пожалуйста, посмотрите следующие разделы.

4. Встреча с bash

Хорошая новость: используя Linux, вы набираете немного меньше в командной строке, потому-что bash набирает за вас, где это возможно, имеет великолепные средства редактирования командной строки. Для начала, клавиша 'стрелка вверх ' вызывает предыдущую командную строку ; но это не все. Нажатие на клавишу <TAB> дополняет имена файлов и каталогов, так что набор строки

$ ls /uTABloTABbTAB

подобен набору

$ ls /usr/local/bin

Если существует двусмысленность, такая как при наборе

$ ls /uTABloTABiTAB

bash остановится, потому-что он не знает, что вы имеете ввиду: /usr/local/info или /usr/local/include. Задайте больше символов, а затем снова нажмите на <TAB>.

Другие полезные комбинации клавиш: <ESC-BACKSPACE> удаляет слово влево, тогда как <ESC-D> удаляет слово вправо; <ESC-F> перемещает курсор на одно слово вправо, а <ESC-B> на слово влево; <CTRL-A> перемещает курсор в начало строки, <CTRL-E> в конец строки. Клавиша <ALT> эквивалентна клавише <ESC>.

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

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://www.linuxdoc.org/HOWTO/mini/Remote-X-Apps.html.

6. Использование каталогов

6.1 Каталоги: Предварительные замечания

Мы рассмотрели различия между файлами в DOSWin и в Linux. То же самое и для каталогов, в DOSWin корневой каталог обозначается \, в Linux он обозначается как /. Сходным образом, вложенные каталоги разделяются символом \ в DOSWin, и / в Linux. Примеры путевых имен файлов:

DOS:    C:\\PAPERS\\GEOLOGY\\MID_EOC.TEX
Linux:  /home/guido/papers/geology/middle_eocene.tex

Как обычно, .. является родительским каталогом, а . текущим. Помните, что система может не позволить выполнять команды работы с каталогами везде, где вы захотите. Каждый пользователь имеет для работы каталог, называемый `домашним', который дан системным администратором; например, на моем компьютере моим домашним каталогом является /home/guido.

6.2 Права доступа к каталогам

Каталоги также имеют права доступа. Все что мы видели в разделе Права доступа и владение, также применяется и к каталогам (пользователь, группа, и другие). Для каталога rx означает, что вы можете перейти в этот каталог, а w означает, что вы можете удалить файл в этом каталоге (конечно, соответствуя правам доступа к файлу), или сам каталог.

Например, для того, чтобы запретить другим пользователям рыться в каталоге /home/guido/text, используйте команду:

$ chmod o-rwx /home/guido/text

6.3 Каталоги: Перевод команд

DIR:            ls, find, du
CD:             cd, pwd
MD:             mkdir
RD:             rmdir
DELTREE:        rm -rf
MOVE:           mv

Примеры

DOS                                     Linux
---------------------------------------------------------------------

C:\\GUIDO>DIR                            $ ls
C:\\GUIDO>DIR FILE.TXT                   $ ls file.txt
C:\\GUIDO>DIR *.H *.C                    $ ls *.h *.c
C:\\GUIDO>DIR/P                          $ ls | more
C:\\GUIDO>DIR/A                          $ ls -l
C:\\GUIDO>DIR *.TMP /S                   $ find / -name "*.tmp"
C:\\GUIDO>CD                             $ pwd
        n/a - see note                   $ cd
        ditto                            $ cd ~
        ditto                            $ cd ~/temp
C:\\GUIDO>CD \\OTHER                     $ cd /other
C:\\GUIDO>CD ..\\TEMP\\TRASH             $ cd ../temp/trash
C:\\GUIDO>MD NEWPROGS                    $ mkdir newprogs
C:\\GUIDO>MOVE PROG ..                   $ mv prog ..
C:\\GUIDO>MD \\PROGS\\TURBO              $ mkdir /progs/turbo
C:\\GUIDO>DELTREE TEMP\\TRASH            $ rm -rf temp/trash
C:\\GUIDO>RD NEWPROGS                    $ rmdir newprogs
C:\\GUIDO>RD \\PROGS\\TURBO              $ rmdir /progs/turbo

Замечания:

7. Гибкие и жесткие диски и тому подобное

Существует два способа обслуживания устройств в Linux: DOS-способ и UNIX-способ. Сделайте ваш выбор.

7.1 Обслуживание устройств DOS-способом

Большинство дистрибутивов Linux включают в себя пакет Mtools---набор команд, которые эквивалентны своим копиям в DOS, но начинаются с буквы `m': т.е., mformat, mdir, mdel, mmd, и так далее. Они могут даже сохранять длинные имена, но не права доступа к файлам. Если вы настроите Mtools, редактируя файл /etc/mtools.conf (пример поставляется вместе с дистрибутивом пакета), то вы также сможете иметь доступ к разделам DOS/Win, к устройствам CD-ROM и Zip. Однако для форматирования нового диска команда mformat не будет работать. Как root, вам заранее необходимо выполнить команду: fdformat /dev/fd0H1440.

Вы не можете иметь доступ в файлам на гибком диске для команд, таких как, например, less a:file.txt! Это недостаток DOS-способа для доступа к дискам.

7.2 Обслуживание устройств UNIX-способом

В UNIX имеется другой подход к обслуживанию устройств. Не существует отдельных томов, таких как A: или C:; диск, будь он гибким или любым другим, становится частью локальной файловой системы через операцию, называемую ``монтирование''. Когда вы заканчиваете работать с диском, до его извлечения вы должны ``отмонтировать'' его.

Физически форматирование диска> -- это одно действие, а создание файловой системы на нем> -- это другое. Команда DOS FORMAT A: выполняет оба действия, но в Linux существуют разные команды. Для форматирования гибкого диска> -- смотрите выше; для создания файловой системы используется команда:

# mkfs -t ext2 -c /dev/fd0H1440

Вы можете использовать dos, vfat (рекомендуется) или другие форматы вместо ext2. Приготовив диск, примонтируйте его с помощью команды

# mount -t ext2 /dev/fd0 /mnt

указывая правильную файловую систему, если вы не используете ext2. Теперь вы можете обращаться к файлам, используя /mnt вместо A: или B:. Примеры:

DOS                                     Linux
---------------------------------------------------------------------

C:\\GUIDO>DIR A:                         $ ls /mnt
C:\\GUIDO>COPY A:*.*                     $ cp /mnt/* .
C:\\GUIDO>COPY *.ZIP A:                  $ cp *.zip /mnt
C:\\GUIDO>EDIT A:FILE.TXT                $ jstar /mnt/file.txt
C:\\GUIDO>A:                             $ cd /mnt
A:> _                                    /mnt/$ _

После того как вы закончите, до извлечения диска вы должны отмонтировать его, используя команду

# umount /mnt

Очевидно, что вы должны применять fdformat и mkfs только для неформатированных дисков, никогда до этого не применявшихся. Если вы хотите использовать диск B:, то ссылайтесь на fd1H1440 и fd1 вместо fd0H1440 и fd0 в вышеприведенном примере.

Излишне говорить, что то, что применяется для гибких дисков, также применяется для других устройств; например вы захотите примонтировать другой жесткий диск или устройство CD-ROM. Вот как примонтировать CD-ROM:

# mount -t iso9660 /dev/cdrom /mnt

Это был ``официальный'' способ монтирования ваших дисков, но существует один прием. Поскольку немного досадно, что необходимо быть root для монтирования гибкого диска или CD-ROM, то каждому пользователю разрешается монтировать их вот таким способом:

Теперь для монтирования гибкого диска в формате DOS и CD--ROM используются команды:

$ mount /mnt/floppy
$ mount /mnt/cdrom

/mnt/floppy и /mnt/cdrom могут сейчас быть доступны любому пользователю. Помните, что разрешение всем монтировать диски таким способом -- это зияющая дыра в безопасности, если вас это беспокоит.

Двумя полезными командами являются df, которая дает информацию о примонтированых файловых системах, и du dirname, которая сообщает размер дискового пространства, занимаемого каталогом.

7.3 Резервирование данных

Существуют разные пакеты, которые помогут вам в этом занятии, но по крайней мере вы должны знать, как делается многотомное резервирование данных (как пользователь root):

# tar -M -cvf /dev/fd0H1440 dir_to_backup/

Убедитесь, что имеется форматированный гибкий диск в устройстве и несколько дополнительных. Для восстановления ваших данных вставьте первый гибкий диск в устройство и выполните:

# tar -M -xpvf /dev/fd0H1440

8. Что насчет Оконной системы?

`Эквивалентом'' Windows является графическая система X Window System. В отличии от Windows или Mac, X11 не был спроектирован для удобства использования, или для хорошего вида, а для обеспечения графических возможностей для рабочих станций с UNIX. Вот главные отличия:

Для сохранения памяти вы должны использовать приложения, которые используют одни и те же библиотеки, но это тяжело осуществить на практике.

Существуют проекты, целью которых является придание X11 вида и поведения, похожего на Windows. Gnome, http://www.gnome.org и KDE, http://www.kde.org, внушают благоговение. Дайте им шанс: в лбом случае вы не будете сожалеть о вашем десктопе под Windows.

9. Настройка системы

9.1 Файлы инициализации системы

В DOS двумя важными файлами являютсяe AUTOEXEC.BAT и CONFIG.SYS, которые используются во время загрузки для инициализации системы, установки некоторых переменных среды, таких как PATH и FILES, и, возможно, запуска программ или пакетных файлов. В Linux существует большее количество инициализационных файлов, некоторые из которых лучше не трогать до тех пор, пока вы не будете знать, что вы делаете. Я скажу, что самыми важными являются:

ФАЙЛЫ                                  ПРИМЕЧАНИЯ

/etc/inittab                           не трогайте его сейчас!
/etc/rc.d/*                            так же

Если вы хотите установить переменные среды PATH или другие, или вы хотите изменить сообщение при входе в систему или автоматически запустить программу после входа в систему, посмотрите следующие файлы:

ФАЙЛЫ                             ПРИМЕЧАНИЯ

/etc/issue                  устанавливает сообщение перед входом
/etc/motd                   устанавливает сообщение после входа
/etc/profile                устанавливает переменную $PATH и другие, и т.п.
/etc/bashrc                 устанавливает алиасы и функции, и т.п.
/home/your_home/.bashrc     устанавливает ваши алиасы и функции
/home/your_home/.bash_profile или
/home/your_home/.profile    устанавливает переменные среды и запускает ваши программы

Если последние файлы существуют (заметим, что это скрытые файлы), они будут считаны после входа в систему и команды, записанные в них, будут выполнены.

Пример---посмотрите на этот .bash_profile:


# Это комментарий
echo Environment:
printenv | less   # эквивалент команде SET в DOS
alias d='ls -l'   # легко понять, что это алиас
alias up='cd ..'
echo "I remind you that the path is "$PATH
echo "Today is `date`"  # использовать вывод команды
echo "Have a good day, "$LOGNAME
# следующая часть является функцией командного процессора
ctgz() # вывести содержимое архива .tar.gz
\{
  for file in $*
  do
    gzip -dc $\{file\} | tar tf -
  done
\}
# конец .profile

Вы правильно угадали, что $PATH и $LOGNAME являются переменными среды,. Существует много других переменных; например, прочитайте справочные страницы для таких приложений, как less или bash.

Поместив эту строку в ваш файл /etc/profile вы получите грубый эквивалент PROMPT $P$G:

export PS1="\\w\\\\$ "

9.2 Инициализационные файлы программ

В Linux практически все может быть настроено для ваших требований. Большинство программ имеют один или несколько файлов инициализации, которые вы можете править, часто это файлы .prognamerc в вашем домашнем каталоге. Первыми файлами, которые вы захотите исправить:

Со всеми этими и другими файлами вы встретитесь раньше или позже, RMP. Возможно я должен заинтересовать вас документом "Configuration HOWTO", http://www.linuxdoc.org/HOWTO/Config-HOWTO.html?

10. Сети: Основы

В Linux доступен не только ``Dialup Networking'', который более стабилен и быстр. Другая игра называется ``PPP'' -- это протокол, разработанный для подключения к Internet с помощью модемов. Вам необходимо ядро с поддержкой PPP и утилиты для подключения и создания соединения.

Для получения почты с сервера вашего ISP вам необходима утилита, называемая ``вытягиватель почты (email fetcher)'', которая использует протокол POP; когда почта будет получена, она будет выглядеть, как будто она отправлена прямо на ваше машину с Linux. Затем вы можете использовать MUA (Почтовый агент пользователя), такой как pine, mutt, elm или один из многих других для работы с почтой.

В то время как в Windows программа соединения запускается автоматически, когда вы запускаете приложение для Internet, в Linux это делается наоборот: вы сначала производите подключения, а затем запускаете приложение. Программа, называемая diald обеспечивает обычное поведение. Установка и настройка dialup networking считается одной из самых трудных вещей в Linux, но не больше: пожалуйста посмотрите в Configuration HOWTO.

В заключение несколько слов о ``Сетевом Окружении'': вы можете заставить свою рабочую станцию с Linux появиться как Windows NT/9x в локальной сети машин с Windows! Магическим словом является Samba: это не Бразильский танец, а реализация протокола SMB для Linux. Смотрите на http://www.samba.org и в SMB-HOWTO.

11. Немного программирования

11.1 Скрипты командного процессора: Файлы .BAT на стероидах

Если вы использовали .BAT-файлы для создания сокращений для длинных командных строк (я сам так делал), то это может быть достигнуто вставкой соответствующих алиасов (смотрите вышеприведенный пример) в файлы profile или .bash_profile. Но если ваши .BAT-файлы были более сложными, то вы полюбите язык, предоставляемый командным процессором: он мощен, как старый QBasic, если не больше. Он имеет переменные, управляющие структуры, подобные while, for, case, if... then... else, и много других возможностей: он может быть хорошей альтернативой ``настоящим'' языкам программирования.

Для написания скрипта---эквивалента .BAT-файла в DOS все, что надо сделать---написать стандартный ASCII-файл, содержащий инструкции, сохранить его и затем сделать его исполнимым с помощью команды chmod +x <scriptfile>. Для выполнения скрипта наберите его имя.

Предупреждение. Системный редактор называется vi, и по моему мнению большинство новых пользователей найдет его трудным в использовании. Я не буду объяснять, как его использовать; пожалуйста посмотрите эту информацию в книге Matt Welsh или найдите учебное руководство в сети. Здесь достаточно сказать, что:

Примечание переводчика: На самом деле vi -- мощный редактор. Для получения встроенного учебника наберите <ESC>, а затем :help tutor, для получения справки по какому либо разделу наберите <ESC>, а затем :help имя_раздела или команды. Этот перевод был сделан используя вариант этого редактора под названием Vim, дополнительную информацию смотрите на http://www.vim.org.

Хорошим редактором для начинающих является joe: запустив его с помощью команды jstar, вы получите те же самые сочетания клавиш, как и в редакторе, используемом в DOSWin. jed в режиме WordStar или IDE, даже еще лучше. Пожалуйста посмотрите раздел Где найти приложения для того чтобы узнать, где можно найти данные редактора.

Написание скриптов для bash -- это такой необъятный предмет, что сам по себе заслуживает книги и я не буду углубляться в этот предмет. Я просто дам вам пример скрипта командного процессора, из которого вы можете вычленить некоторые базовые правила. Прочитайте справочную страницу bash.


#!/bin/sh
# sample.sh
# это комментарий
# не изменяйте первую строку, она должна быть такой
echo "Система называется: `uname -a`" # использовать вывод команды
echo "Мое имя $0" # Встроенные переменные
echo "Вы передали мне следующие $# параметров: "$*
echo "Первым параметром является: "$1
echo -n "Введите ваше имя? " ; read your_name
echo заметьте разницу: "hi $your_name" # использование кавычек вида "
echo заметьте разницу: 'hi $your_name' # использование кавычек вида '
DIRS=0 ; FILES=0
for file in `ls .` ; do
  if [ -d $\{file\} ] ; then # если файл является каталогом
    DIRS=`expr $DIRS + 1`  # DIRS = DIRS + 1
  elif [ -f $\{file\} ] ; then
    FILES=`expr $FILES + 1`
  fi
  case $\{file\} in
    *.gif|*jpg) echo "$\{file\}: графический файл" ;;
    *.txt|*.tex) echo "$\{file\}:  текстовый файл" ;;
    *.c|*.f|*.for) echo "$\{file\}: файл исходных текстов" ;;
    *) echo "$\{file\}: обычный файл" ;;
  esac
done
echo "обнаружено $\{DIRS\} каталогов и $\{FILES\} файлов"
ls | grep "ZxY--!!!WKW"
if [ $? != 0 ] ; then # код завершения последней команды
  echo "ZxY--!!!WKW не найден"
fi
echo "достаточно... наберите 'man bash' если вам нужна дополнительная информация."

11.2 C для вас

В UNIX системным языком является C, любите его или ненавидьте. Также доступны другие языки программирования (Java, FORTRAN, Pascal, Lisp, Basic, Perl, awk...).

Считая, что вы знаете C, существует некоторое количество руководств для тех, кто испорчен использованием Turbo C++ или его собратьев по DOS. Компилятор С в Linux называется gcc и не содержит моргалки и дуделки, которые обычно сопутствуют его аналогам в DOS: нет IDE (Интегрированная среда разработки), оперативной подсказки, встроенного отладчика и т.п. Это просто командно-строковый компилятор, очень мощный и эффективный. Для компиляции стандартного hello.c вам необходимо выполнить команду:

$ gcc hello.c

которая создаст исполнимый файл, названный a.out. Для того, чтобы дать исполнимому файлу другое название, выполните команду:

$ gcc -o hola hello.c

Для подключения к программе библиотеки функций добавьте к командной строке ключ -l<libname>. Например, для подключения библиотеки математических функций:

$ gcc -o mathprog mathprog.c -lm

(Ключ -l<libname> заставляет gcc подключить библиотеку /usr/lib/lib<libname>.so; так что -lm подключает библиотеку /usr/lib/libm.so).

Чем дальше, тем лучше, но когда ваша программа состоит из нескольких файлов исходных текстов, то вам понадобиться пользоваться утилитой make. Предположим, что вы написали разбор выражений: его файл исходных текстов называется: parser.c и подключает два заголовочных файла, parser.h и xy.h. Затем вы хотите использовать подпрограммы из parser.c в программе, допустим calc.c, которая подключает файл parser.h. Что за неразбериха! Что вам надо сделать для компиляции calc.c?

Вам необходимо написать так называемый Makefile, который сообщает компилятору зависимости между файлами исходных текстов и объектными файлами. В нашем примере:


# Это Makefile, используемый для компиляции calc.c
# Нажмите клавишу <TAB> где показано!

calc: calc.o parser.o
<TAB>gcc -o calc calc.o parser.o -lm
# calc зависит от 2-х объектных файлов: calc.o и parser.o

calc.o: calc.c parser.h
<TAB>gcc -c calc.c
# calc.o зависит от двух файлов исходных текстов

parser.o:  parser.c parser.h xy.h
<TAB>gcc -c parser.c
# parser.o зависит от трех файлов исходных текстов

# конец Makefile.

Сохраните этот файл как Makefile и наберите make для компиляции вашей программы; вы также можете сохранить его как calc.mak и набрать make -f calc.mak, и конечно RMP. Вы также можете получить некоторую помощь о функциях C, которые описаны в справочных страницах, раздел 3; например,

$ man 3 printf

Для отладки ваших программ используйте программу gdb. Наберите info gdb для того, чтобы узнать, как использовать отладчик.

Существует большое количество библиотек; среди них первыми вы скорее всего захотите использовать следующие: ncurses (для работы в текстовом режиме), и svgalib (для графики в консоли). Много редакторов могут работать как IDE; например emacs и jed, также они производят подсветку синтаксиса, автоматические отступы, и так далее. Также вы можете взять пакет rhide с ftp://metalab.unc.edu:/pub/Linux/devel/debuggers/. Это клон Borland IDE и есть шанс, что он вам понравится.

11.3 Программирование для X11

Если вы чувствуете себя достаточно образованным для программирования для X11 (это не так трудно), то существует несколько библиотек, которые сделают написание программ для X11 более легким. Основными серверами, которые вам необходимо посетить, являются сервера GTK+, http://www.gtk.org и Qt, http://www.troll.no. Gtk+ является набором элементов, написанных на языке С, в начале созданном для графического пакета The GIMP ( http://www.gimp.org), и используется средой Gnome. Kdeveloper основан на Qt, написанном на С++ и используемом средой KDE. Вероятнее всего, вы будете использовать один из этих пакетов.

Наилучшими пакетами для визуального программирования являются Kdevelop для Qt, http://www.kdevelop.org, и Glade для GTK+, http://glade.pn.org. Эта страница имеет большее количество информации: http://www.free-soft.org/guitool/.

Многоплатформенной программирование

Было бы хорошо, если бы вы могли писать код, который одинаково компилируется и под и под Windows с помощью gcc? Во время написания данного документа, существовало несколько наборов элементов, которые позволяли (более или менее) программирование под разные платформы. Из соображений достаточности и стабильности, может использоваться только один: FLTK, Fast Light Tool Kit http://www.fltk.org. Он достаточно небольшой, быстрый и стабильный. В его составе также имеется полу-визуальный построитель интерфейса под названием Fluid.

12. Оставшийся 1% дел

В самом деле больше чем 1%...

12.1 Использование tar и gzip

В UNIX существуют некоторые широко используемые приложения для архивации и сжатия файлов. tar используется для создания архивов---он похож на PKZIP или Winzip, но не производит сжатие, он только архивирует. Для создания нового архива используется команда:

$ tar -cvf <archive_name.tar> <file> [file...]

Для извлечения файлов из архива:

$ tar -xpvf <archive_name.tar> [file...]

Для перечисления содержимого архива:

$ tar -tf <archive_name.tar> | less

Вы можете сжать данные, используя программу compress, которая устарела и не должна больше использоваться, или с помощью gzip:

$ compress <file>
$ gzip <file>

что создает сжатые файлы с расширением .Z (compress) или .gz (gzip). Эти программы могут сжимать только один файл за раз. Для расжатия используются команды:

$ compress -d <file.Z>
$ gzip -d <file.gz>

RMP.

Также существуют утилиты unarj, zip и unzip (совместимые с PK??ZIP). Файлы с расширениями .tar.gz или .tgz (архивированные с помощью tar, а затем сжатые gzip) являются такой же вещью в UNIX как файлы .ZIP в DOS. Вот как выдать список файлов в архиве .tar.gz:

$ tar -ztf <file.tar.gz> | less

12.2 Установка приложений

Во первых: установка приложений -- это работа администратора. Большинство приложений для Linux распространяются в виде архивов .tar.gz, которые обычно содержат каталог, названный как и архив, который содержит файлы и/или подкаталоги.Хорошим правилом является установка этих программ из каталога /usr/local с помощью команды

# tar -zxf <archive.tar.gz>

прочитайте файл README или INSTALL. В большинстве случаев приложение распространяется в виде исходных текстов, которые вам надо скомпилировать; часто достаточно набрать команду make, а затем make install. Если в архиве есть файл configure, то сначала запустите его. Вам также необходимо иметь компилятор gcc или g++.

Другие архивы должны быть распакованы, находясь в каталоге /; это в случае с архивами, используемыми в Slackware. Другие архивы содержат только файлы, без подкаталогов---будьте осторожны, не запутайтесь! Всегда просмотрите список файлов в архиве до его установки.

Debian и Red Hat имеют свой собственный формат архивов -- соответственно .deb и .rpm. Последний приобретает широкое распространение; для установки пакета rpm наберите

# rpm -i package.rpm

12.3 Советы, без которых вы не сможете жить

Прокрутка назад: нажимая <SHIFT + PAG UP> (серая клавиша) вы можете прокрутить назад несколько последних страниц экрана, в зависимости от того, сколько у вас видеопамяти.

Сброс экрана: если вы выполнили команду more или cat для двоичного файла, то ваш экран может быть заполнен мусором. Для того, чтобы исправить это вслепую, наберите reset или такую последовательность символов: echo CTRL-V ESC c RETURN.

Вставка текста: Как сделать это в консоли, описано ниже; в X нажмите левую кнопку мыши и держа ее выделите необходимый текст, затем щелкните средней кнопкой мыши (или обоими кнопками, если у вас 2-х кнопочная мышь) для вставки текста в позиции курсора. Также есть приложение xclipboard (только для текста); не пугайтесь ее медленной работы.

Используя мышь: если у вас установлена программа gpm---драйвер мыши для консоли, то вы можете нажать на левую кнопку мыши и выделить текст, а затем нажать на правую кнопку мыши для вставки выделенного текста. Программа может работать между разными виртуальными консолями.

Сообщения от ядра: войдя под правами администратора посмотрите файл /var/adm/messages или /var/log/messages для того чтобы увидеть, что ядро сообщает вам, включая сообщения на этапе загрузки. Также удобна команда dmesg.

12.4 Где найти приложения

Если вы удивляетесь, должны ли вы заменить ваши старые и привычные приложения под DOS/Win приложениями под Linux, я предполагаю, что вы просмотрели основные архивы программного обеспечения для Linux: ftp://metalab.unc.edu/pub/Linux, ftp://tsx-11.mit.edu/pub/linux, и ftp://ftp.funet.fi/pub/Linux. Другим хорошим местом для поиска является ``Linux Applications and Utilities Page (Страница приложений и утилит для Linux)'' http://www.xnet.com/~blatura/linapps.shtml, и ``официальную'' страницу Linux http://www.linux.org.

12.5 Некоторые вещи, которые вы не могли делать

Linux может выполнять ужасно много вещей, которые были громоздкими, трудными или невозможными в DOS/Windows. Вот короткий список вещей, которые могут возбудит ваш аппетит:

12.6 Использование утилит для UNIX в DOS/Windows

Верьте этому или нет, но существуют утилиты, которые обеспечивают UNIX-подобную среду в DOS/Windows! Одной из них является набор Djgpp ( http://www.delorie.com/djgpp) для DOS, в то время как Cygnus ( http://www.cygnus.com) является более сложным портом для Win32. Они оба включают в себя те же средства разработки GNU и утилиты, как и Linux; хотя вы не получите той же стабильности и производительности.

Если вы хотите почувствовать вкус Linux, попробуйте пакет Djgpp. Скачайте и установите следующий файлы (во время написания последней версией была версия 2.02): djdev202.zip, bnu281b.zip, bsh1147b.zip, fil316b.zip, find41b.zip, grep22b.zip, gwk303b.zip, lss332b.zip, shl112b.zip.. Инструкции по установке включены в дистрибутив и вы можете получить помощь в news:comp.os.msdos.djgpp.

В частности, использование bash в DOSWin является глотком свежего воздуха. Для его правильной настройки отредактируйте поставляемый файл BOOT.BAT для того, чтобы он соответствовал вашим настройкам, а затем поместите эти файлы в ваш домашний каталог (на разделе Windows) вместо тех, которые поставляются в дистрибутиве:

# это _bashrc

LS_OPTIONS="-F -s --color=yes"
alias cp='cp -i'
alias d='ls -l'
alias l=less
alias ls="ls $LS_OPTIONS"
alias mv='mv -i'
alias rm='rm -i'
alias u='cd ..'

# это _bprof
if [ -f ~/_bashrc ]; then
  . ~/_bashrc
fi
PS1='\\w\\$ '
PS2='> '
CDPATH="$CDPATH:~"
# stuff for less(1)
LESS="-M-Q"                     # long prompt, silent
LESSEDIT="%E ?lt+%lt. %f"       # edit top line
VISUAL="jed"                    # editor
LESSCHARSET=latin1              # visualise accented letters
export PS1 PS2 CDPATH LS_OPTIONS LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET

12.7 Общие расширения файлов и соответствующие программы

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

12.8 Преобразование файлов

Если вам необходимо обмениваться текстовыми файлами между DOS/Win и Linux, то будьте осторожны с проблемой ``конца строки''. В DOS каждая строка оканчивается символами CR/LF (ASCII 13 + ASCII 10), а в Linux -- символом LF. Если вы редактируете текстовый файл из DOS в Linux, то каждая строка будет оканчиваться странно-выглядящим символом `M'; а текстовый файл из Linux в DOS появится как огромная одиночная строка без разбиения на параграфы. Существуют утилиты dos2unix и unix2dos для преобразования файлов.

Если ваш текстовый файл содержит символы с диактрическими знаками, то убедитесь, что они набраны в Windows (в Notepad), а не в чистом DOS; в ином случае символы будут потеряны.

Преобразование файлов Word или WordPerfect в текстовые файлы сложнее, но возможно. Вам необходима одна из утилит, которую можно найти на серверах CTAN; один из них ftp://ftp.tex.ac.uk. Возьмите программу word2x из каталога /pub/tex/tools/, или попробуйте программы, находящиеся в каталоге /pub/tex/support/. В частности word2x преобразует файлы Word 6, тогда как для файлов Word 97 вам необходима программа mswordview ( http://www.csn.ul.ie/~caolan/docs/MSWordView.html), которая преобразует эти файлы в HTML.

12.9 Свободные офисные пакеты

Если преобразования файлов вам недостаточно, то вы можете вцепиться зубами в (свободный!) Microsoft Office--подобный пакет.

В настоящее время StarOffice ( http://www.sun.com/staroffice) является единственным выбором, хотя Koffice развивается ( http://www.koffice.org). Он большой, иногда медленен, но в любом случае хорош: Он предоставляет функциональные возможности, которых нет в Microsoft Office. Он также может читать и записывать файлы Word и Excel, хотя преобразования не всегда нормальны.

Другим хорошим пакетом является Corel WordPerfect, свободная версия которой доступна для загрузки. Должен я еще что-нибудь сказать? Скачать его можно с http://www.corel.com.

13. Конец, пока что

Поздравляю! Вы теперь охватили небольшой кусочек UNIX и готовы начать работать. Помните, что ваше знание системы все еще ограничено, и что вы будете больше практиковаться в работе с Linux для того, чтобы работа с ним стала комфортабельной. Но если все, что вам нужно было---это получить набор приложений и начать работать с ними, то той информации, которую я включил в этот документ, будет достаточно.

Я уверен, что вы насладитесь работой с Linux и будете продолжать изучать его. Я бьюсь об заклад, что вы никогда не вернетесь к DOSWin! Я надеюсь, что я был понятен и дал хорошую информацию для моих 3-х или 4-х читателей.

13.1 Авторские права

Пока не будет указано что-то другое, документы серии Linux HOWTO принадлежат соответствующим авторам. Документы Linux HOWTO могут воспроизводиться и распространяться все вместе или частями, на любом носителе физическом или электронном, с сохранением этого замечания об авторских правах на всех копиях. Коммерческое распространение разрешено; однако авторы хотят быть предупреждены о любых таких распространениях.

Все переводы, производные работы или работы, включающие любой документ серии Linux HOWTO, должны находится под действием этого замечания об авторских правах. Таким образом, вы не можете создать производную работу из HOWTO и наложить на нее дополнительные ограничения на ее распространение. Исключения из этих правил могут быть достигнуты при определенных условиях; пожалуйста, свяжитесь с координатором проекта Linux HOWTO по адресу, данному ниже.

Вкратце, мы хотим способствовать распространению этой информации через максимально возможное количество каналов. Однако мы хотим оставить авторские права на документы HOWTO, и хотим быть уведомлены о любых планах распространения документов серии HOWTO.

Если вы имеете вопросы, пожалуйста, свяжитесь с Tim Bynum, координатором Linux HOWTO, используя электронную почту [email protected].

13.2 Отказ от ответственности

``From DOS to Linux HOWTO (Из DOS в Linux HOWTO)'' был написан Guido Gonzato, [email protected]. (удалите слово ``REMOVE_ME''). Большое спасибо Matt Welsh, автору ``Linux Installation and Getting Started (Установка Linux и начало работы)'', Ian Jackson, автору ``Linux frequently asked questions with answers (Часто задаваемые вопросы о Linux с ответами)'', Giuseppe Zanetti, автору ``Linux'', всем людям, которые прислали мне предложения, и особенно Linus Torvalds и проекту GNU, которые подарили нам Linux.

Этот документ распространяется ``as is (как есть)''. Я приложил огромные усилия, чтобы написать его настолько аккуратно, насколько это возможно, но вы должны использовать информацию содержащуюся в нем, на свой собственный риск. Я не несу никакой ответственности за любой урон, нанесенный в результате использования этой работы.

Обратная связь приветствуется. Чувствуйте себя свободно при контакте со мной для любых запросов, предложений, флейма и т.п.

Наслаждайтесь Linux и жизнью,

Guido =8-)