пятница, мая 19, 2006

From Windows to Linux

Эти записки предназначаются для людей, которые привыкли пользоваться Windows, но хотят перейти на Linux. Это не учебник по Linux, но я постараюсь дать краткое описание основных отличий, без понимания которых практически невозможно работать в Linux.

Первое отличие, которое я хотел бы отметить - документированность. В отличие от Windows, где справка своей краткостью предлагает вам купить толстенную книгу, а книга обилием воды призывает пройти платные курсы, Linux поставляется с полной документацией. К сожалению, большая часть этой документации - на английском языке. Русская документация зачастую входит в Linux, кроме того, ее почти всегда можно найти в Интернете, но, опять же к сожалению, зачастую она устарела по сравнению с англоязычным оригиналом.

Главный источник документации - команда man. Если вы работаете в консоли, достаточно набрать

man имя-топика,

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

Кроме того, по Linux и связанным вопросам существует много бумажных и электронных книг. Например, после прочтения этой заметки я посоветовал бы начинающему пользователю начать читать книгу Алексея Федорчука, доступную на http://linuxcenter.ru под названием "Введение в POSIX ивизм", или ее бумажную версию, вышедшую недавно под названием "Доступный UNIX: Linux, FreeBSD, DragonFlyBSD, NetBSD, OpenBSD".

Далее я постоянно буду ссылаться в скобках на страницы man, например: (man hier).

Следующее отличие - устройство файловой системы. В Windows у вас есть несколько носителей информации, перечисленных в окне "Мой компьютер", и на каждом из них есть своя файловая система - система вложенных папок (директорий) и файлов в них. В Linux существует единая файловая система, здесь нет такого понятия как "Диск C:". Графически файловую систему удобно представлять как дерево. Корень этого дерева - это корневая директория файловой системы, она содержит в себе директории bin, usr, etc и прочие, те, в свою очередь - еще директории и файлы…

Разделителем директорий в пути в Linux служит слэш (/), а не бэкслэш (\), как в Windows. Корень файловой системы сам по себе обозначается как "/". Такким образом, если в Windows типичный путь выглядит как "C:\Windows\System", то в Linux - "/usr/local/bin". Нужно заметить, что файловая система Linux чуствительна к регистру символов, так что "file" и "FiLE" - это имена разных файлов.

Еще одна особенность файловой системы Linux - то, что устройства, подключаемые к компьютеру, предстают файлами, расположенными в директории /dev.

Каждый носитель информации (жесткий диск или usb-флэш) содержит собственную файловую систему (ФС) со своей структурой директорий. Чтобы к этой ФС можно было получить доступ, она должна быть подключена к единой файловой системе Linux, при этом нужно указать, к какой из ветвей дерева нужно осуществлять подсоединение. Например, если на флэшке есть файлы "file1.doc", "file2.doc" и директория "dir" с файлом "indir" внутри, то после подсоединения ФС флэшки к директории /mnt/flash мы будем иметь файлы /mnt/flash/file1.doc, /mnt/flash/file2.doc, /mnt/flash/dir/indir. Операция подсоединения называется монтированием, и выполняется с помощью команды mount (man mount). Перед тем, как физически отсоединить носитель (выдернуть флэшку, например), необходимо произвести действие, обратное монтированию - размонтирование, иначе можно потерять данные на нем. Размонтирование производится с помощью команды umount.

Если у вас есть несколько разделов диска, или несколько дисков, с которыми вам нужно работать постоянно, то, чтобы эти диски монтировались при старте системы автоматически, нужно прописать их в файле /etc/fstab (man fstab).

Следующее отличие касается установки программ. В Windows программа, как правило, при установке кладет все свои файлы в c:\program files\имя-программы, и, возможно, еще в c:\windows или куда-нибудь еще. В Linux файлы программ раскладываются по директориям не по принадлежности программам, а по их предназначению. Так, все исполнимые файлы самых необходимых программ лежат в /bin, все конфигурационные файлы - в /etc, библиотеки - в /lib и т.д. При этом программы, входящие в состав дистрибутива Linux, но не являющиеся необходимыми для запуска системы, кладут свои файлы в иерархию /usr (/usr/bin - исполнимые файлы, /usr/lib - библиотеки, и т.д). Программы, не входящие в состав дистрибутива и установленные пользователем, располагаются в /usr/local (/usr/local/bin и т.д). На расположение и назначение всех этих директорий существует стандарт - Filesystem Hierarchy Standart (FHS). Он описан в man hier.

Четвертое различие относится к системе безопасности. В Windows имеются лишь минимальные средства разграничения прав доступа, и по ряду причин чаще всего они не используются вовсе. В Linux это весьма мощные средства, и используются они постоянно. В системе есть некоторое количество пользователей, различающихся по имени (login) и паролю (password). Каждый пользователь может входить в одну или несколько групп. Обычный пользователь может изменять файлы только в своей домашней директории (home), в частности, он не может устанавливать и удалять программы. Благодаря этому обычный пользователь ни случайно, ни специально не может повредить всю систему в целом или данные других пользователей. Но один из пользователей отличается от остальных. Это root - системный администратор. Ему по определению разрешено все. Именно поэтому категорически не рекомендуется работать в системе под именем root. Представляться системе root-ом нужно только для проведения административных мероприятий: установки и удаления программ, форматирования дисков и тому подобных задач.

Далее, в Linux графический интерфейс не является неотъемлемой частью операционной системы, как в Windows. Графический интерфейс - все эти окна, иконки и курсоры - обеспечивается отдельным приложением, работающим наравне с остальными. Поэтому сбой в работе графической системы не влечет за собой сбой в работе ОС в целом. (за подробностями о работе графики в Linux см. man X, man Xserver).

Исторически в Linux основным режимом работы был режим работы с командной строкой. При этом у вас нету никаких окошек и иконок, а есть приглашение командной оболочки и мигающий курсор. Вы набираете на клавиатуре команды, подтверждая их нажатием Enter, а компьютер выполняет их и вновь выдает приглашение набрать команду. При этом доступны автодоплнение команд и их аргументов, а также полная справка о том, как работает каждая команда - по команде "man <имя-команды>". Программа, которая с вами непосредственно общается, называется командной оболочкой (shell). Командной оболочкой по умолчанию является bash, поэтому за подробностями о работе с командной строкой обращайтесь к man bash.

Каждая команда имеет вид:

$ <имя-команды> <опции> <параметры>.

Здесь "$" - это приглашение командной строки, его печатает оболочка. Имя команды - это одно слово, то есть последовательность английских букв и цифр. Оно указывает, что нужно сделать, то есть это глагол в языке общения с командной оболочкой. Имена команд обычно являются сокращениями от соответствующих английских глаголов, например "cp" - от "copy", копировать.

Опции бывают "короткие" и "длинные". Короткие опции выглядят как одна английская буква (или цифра) с дефисом впереди, например, "-f". Длинные опции выглядят как английское слово, предваренное двумя дефисами, например, "—force". Обычно каждая короткая опция имеет длинный аналог (то есть существует "длинная" опция, делающая то же самое), но не наоборот. Длинные опции проще запоминать, зато короткие опции быстрее набирать. Опции задают режимы работы команды - например, опция "-f" (или "—force", что то же самое) команды cp указывает команде переписывать файлы при совпадении имен. Нектоторые опции имеют аргументы - те пишутся через пробел или через знак равенства от опции, например "—backup=numbered". Таким образом, опции - это дополнения в языке командной строки. Короткие опции можно комбинировать, например, "cp -b -d" можно сократить до "cp -bd".

Параметры задают объекты, с которыми должна работать команда - например, файлы, которые нужно копировать. Таким образом, параметры - это существительные.

Опции и параметры у каждой команды свои, среди них могут быть как обязательные, так и необязательные. Все они описаны в man <имя-команды>.

Если вы работаете в режиме командной строки, то графическую оболочку обычно можно запустить командой startx. Существуют программы графического режима, позволяющие работать с командной строкой в отдельном окне. Такие программы называются эмуляторами терминала. Самой популярной из них является xterm.

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

DOS Linux Примечание
ATTRIB (+-)attr file chmod 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 на разных полюсах!

Last updated 19-May-2006 00:56:04 YEKST

1 комментарий:

  1. Любопытно, будет полезно начинающим. Даже для себя узнал кое-что новое :-)
    Что-то подобное есть тут.

    ОтветитьУдалить