От DOS к Linux

Вы решили перейти к использованию операционной системы Linux? Хорошая идея, но хочу предупредить: она может оказаться бесполезной для Вас. Потому, что не существует "идеального компьютера" или "идеальной операционной системы" — все зависит от того, что Вы собираетесь делать с этим компьютером и этой операционной системой, какие задачи Вы решаете с их помощью. Вот почему я не верю, что Linux является идеальным решением для любого пользователя, даже если у него уже есть богатый опыт работы с другими платформами. Вы сразу оцените достоинства Linux, если Вы нуждаетесь в приложениях для разработки программ, работы в сети Интернет или хорошем редакторе, например, таком, как ТеХ.
Linux пока еще не так прост в использовании и настройке, как Windows или MacOs, так что приготовьтесь к роли хакера. Но не забывайте, что Linux и MS DOS с Windows могут мирно сосуществовать на одном компьютере.

Если навыки работы с графическим оконным интерфейсом, полученные на опыте работы с другими ОС, несомненно, пригодятся в общении с Linux, то режим работы с командной строкой уже значительно отличается от системы MS DOS. В этой статье мы рассмотрим набор основных команд операционной системы Linux на примере их аналогий с ДОС'овскими командами. Поэтому я надеюсь, что:
— Вы знаете основные команды и концепции операционной системы MS DOS;
— ОС Linux уже установлен и правильно сконфигурирован на Вашем компьютере;
— Вашим шеллом (интерпретатором командной строки, эквивалентом COMMAND.COM) является bash;
— Вы понимаете, что эта статья далеко не полное руководство по работе с операционной системой Linux.
Итак, Вы установили Linux и программы, которые Вам нужны, на свой компьютер. Вы создали для себя учетную пользовательскую запись, которая дает Вам возможность входа в систему (если нет, то сделайте это при помощи команд adduser или useradd, в зависимости от выбранного дистрибутива). Добро пожаловать в Linux! Вы только что ввели свое имя и пароль и теперь внимательно рассматриваете экран, размышляя над тем, что же делать дальше.

Не отчаивайтесь. Вы уже почти готовы к тому, чтобы делать все то, что Вы делали с операционной системой MS DOS, плюс много чего еще. Когда Вы работали с DOS, Вы имели возможность выполнять следующие задачи:
— запуск программ, а также создание, копирование, просмотр, удаление, вывод на печать, переименование файлов.
— создание, удаление, просмотр содержимого и переключение между каталогами.
— форматирование дискет и перемещение файлов между носителями.
— редактирование файлов AUTOEXEC.BAT и CONFIG.SYS.
— создание своих.BAT файлов и простейших программ на Бэйсике.
— ...ну и еще 1% всех оставшихся возможностей.

Вы будете рады узнать, что все эти задачи можно выполнять и под ОС Linux. В DOS пользователю доступно порядка сотни команд, у Linux их столько же.
Несколько важных моментов, которые необходимо усвоить перед началом активных действий:
— Первое — как выйти из системы: в текстовом режиме работы с командной строкой просто нажать волшебную комбинацию клавиш CTRL-ALT-DEL, дождаться завершения работы операционной системы и соответствующего сообщения, после чего выключить компьютер. Если Вы работаете с графической оконной системой Х, нажмите CTRL-ALT-BACKSPACE, а затем — CTRL-ALT-DEL. Никогда не выключайте свой компьютер с работающей ОС, это может повредить файловую систему (для ОС Windows эти требования тоже актуальны).
— В отличие от DOS, Linux имеет встроенные механизмы безопасности системы соответственно своей многопользовательской природе. Файлы и каталоги имеют атрибуты доступа, некоторые файлы недоступны обычным пользователям, а только администратору системы — пользователю root. Если Вы установили Linux на свой компьютер, Вы сами являетесь администратором. DOS, наоборот, предоставляет весь жесткий диск со всеми файлами любому пользователю.
— Настоятельно рекомендую побольше экспериментировать, играть командами и пробовать все самостоятельно — Вы не сможете ничего повредить, будьте уверены. Вы можете получить некоторую помощь, напечатав в ответ на приглашение ОС ($ — для всех обычных пользователей, # — для администратора) команду: help.

$ help
(эта команда выводит подсказку по шеллу bash). Или можно получить справочную информацию по конкретной команде:
$ man command
Можно также попробовать:
$ apropos command
$ whatis command
command — имя конкретной команды. Для выхода из справки следует нажать клавишу "q".
— Главная сила и гибкость операционной системы Unix заключается в простой концепции перенаправления результатов выполнения команд и программных каналов. Простые команды могут объединяться вместе в командной строке для выполнения более сложных задач. Используйте эти средства!
— Последовательности <....> означают обязательные элементы и параметры команд, а [.....] — необязательные, которые могут быть пропущены.

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

Хочется поскорее перейти к действиям? Эта табличка может оказаться Вам полезной.
DOS Linux примечания
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 синтаксис не совпадает
EDIT file vi file emacs file jstar file целое семейство текстовых редакторов
FORMAT fdformat,mount,umount разный синтаксис
HELP command man command аналогичная программа
MD dirname mkdir dirname/ синтаксис почти совпадает
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 more file,less file эта команда получше
WIN startx графический интерфейс

Файлы и программы
Операционная система Linux имеет свою файловую систему (структуру хранения файлов и каталогов на диске) — ext2fs. Файлы имеют свои имена, вид которых определяется специальными правилами и хранятся внутри каталогов (или директориев). Некоторые файлы являются выполнимыми или содержат наборы команд операционной системы. Более того, можно использовать маски для групповых файловых операций, перенаправление ввода-вывода и программные каналы (pipes). Вот некоторые различия между файловыми системами DOS и Linux:
— В ДОС'е имена файлов ограничены рамками 8.3 — восемь символов для имени файла и три для расширения, например README.TXT. В Linux можно использовать имена файлов длиной до 255 символов, причем символ "точка" может присутствовать в имени файла несколько раз, например: This_is.a.Very_long.filename.
— Следует добавить, что Linux различает символы различных регистров (большие и маленькие буквы имеют различное значение). В одном каталоге могут мирно сосуществовать файлы, например, с такими именами: FF, Ff, ff и fF! Ни Dos, ни Windows такие возможности и не снились! Но следует внимательно относиться к вводимым командам: ls — это команда, а LS — ошибка.
— Не существует специальных расширений для выполняемых файлов и программ, подобных ДОС'овским.COM,.EXE или.BAT. Эти файлы помечаются символом звездочки — "*" при просмотре содержимого каталога командой ls -F, например:

$ ls -F
letter_to_Joe
cindy.jpg
cjpg*
I_am_a_dir/
my_1st_script*
old~

— Файлы cjpg* my_1st_script* являются выполнимыми — программами. В DOS файлы резервных копий имеют расширение.BAK, в Linux эти файлы заканчиваются символом "тильда" — "~". Файлы, имена которых начинаются с точки, воспринимаются системой как скрытые, они не отображаются в стандартных листингах содержимого каталогов, а только при использовании специального параметра команды "ls".
— В DOS программам могут передаваться параметры, отделяемые символом "слэш" — "/switch", в Linux подобную роль играют другие символы: -switch —switch. Например, команда "DIR /s" превращается в команду "ls -R". Некоторые DOS программы, такие, как PKZIP, ARJ, воспринимают аргументы в стиле UNIX.

Символьные ссылки
В UNIX есть тип файлов, который отсутствует в DOS: символьные ссылки. Они служат указателями на файлы или каталоги и могут использоваться вместо объектов, на которые они указывают. Это аналоги "ярлыков" (или shortcut) Windows95. Примерами таких ссылок служат файлы /usr/X11, указывающий на /usr/X11R6; /dev/modem, который указывает на файл /dev/cua0 или /dev/cua1.

Чтобы создать символьную ссылку, введите команду:
$ ls -s <file_or_dir> <linkname>
Пример:
$ ls -s /usr/doc/g77/DOC g77manual.txt
Теперь Вы можете работать с файлом g77manual.txt вместо файла /usr/doc/g77/DOC.
Атрибуты разрешения доступа и принадлежности владельцу файлов
Файлы и каталоги в MS DOS могут иметь следующие атрибуты: A (архивный), H (скрытый), R (доступ только по чтению) и S (системный). Только атрибуты H и R имеют свои аналоги в Linux: имена скрытых файлов начинаются с точки, а что касается режимов доступа к файлам, хочется рассказать о них подробнее.

В ОС Linux каждый файл имеет атрибуты "разрешения доступа" для владельца этого файла, для пользовательской группы, к которой относится владелец, и для "всех остальных пользователей". Рассмотрим пример:
$ 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" — набор разрешений доступа для всех пользователей (по чтению и выполнению). Я не буду здесь описывать понятие пользовательских групп в UNIX, даже новичок может самостоятельно разобраться с этим, ознакомившись с документацией по системе. Вот почему Вы не сможете удалить файл /bin/ls, если Вы не являетесь пользователем root, у Вас нет разрешения на подобные действия. Для изменения атрибутов разрешений доступа файлов служит команда:
$ chmod <whoXperm> <file>
где who может означать: u (пользователь, являющийся владельцем файла), g (группа), o (остальные пользователи), X — заменяется на "+" или "-" (включить или отключить), а perm — это режим доступа: r (чтение), w (запись), x (выполнение). Например:
$ chmod u+x file
устанавливает разрешение на выполнение файла file для его владельца. Теперь этот файл может выполняться операционной системой.
$ chmod go-wx file
убирает разрешение по записи и выполнению для всех кроме владельца файла.
$ chmod ugo+rwx file
дает разрешение всем-всем-всем на чтение, запись и выполнение указанного файла, "зеленая улица".
$ chmod +s file
а вот это так называемый "setuid" или "suid", после установки этого атрибута каждый пользователь, запустивший на выполнение такую программу, получает все права и привилегии пользователя-владельца этого файла (даже системного администратора root!!!) на время выполнения программы. Разумеется, этот атрибут устанавливается для исполняемых файлов — программ или скриптов. Атрибуты разрешений доступа могут быть представлены и в цифровом, восьмеричном формате, например, -"rwxr-xr-x" будет эквивалентно "755", на первый взгляд непривычно, но зато короче! Каждой букве соответствует определенный бит: "—-" = 0, "—х" = 1, "-w-" = 2, "-wx" = 3... и т.д. Немного практики — и Вы поймете основную концепцию. Не следует забывать, что только супервизор системы, пользователь root может менять атрибуты разрешений доступа у ВСЕХ файлов и каталогов на диске компьютера. Каждый отдельно взятый рядовой пользователь властен только над своими файлами.

Команды в DOS и Linux
В левой колонке — команды DOS, в правой — их аналоги в Linux:
COPY cp
DEL rm
MOVE mv
REN mv
TYPE more, less, cat
Операторы перенаправления и программные каналы: < > >> |
Маски для имен файлов: * ?
nul: /dev/null
prn, lpt1: /dev/lp0 или /dev/lp1; lpr
Примеры:

DOS Linux
C:\DIR> copy joe.txt joe.doc $ cp joe.txt joe.doc
C:\DIR> copy *.* total $ cat * > total
C:\DIR> copy fractals.doc prn $ lpr fractals.doc
C:\DIR> del temp $ rm temp
C:\DIR> del *.bak $ rm *~
C:\DIR> move paper.txt tmp\ $ mv paper.txt tmp/
C:\DIR> ren paper.txt paper.asc $ mv paper.txt paper.asc
C:\DIR> print letter.txt $ lpr letter.txt
C:\DIR> type letter.txt $ more letter.txt
C:\DIR> type letter.txt $ less letter.txt
C:\DIR> type letter.txt > nul $ cat letter.txt > /dev/null
аналогов нет $ more *.txt *.asc
аналогов нет $ cat section*.txt | less

Примечания:
— маска "*" в Linux ведет себя умнее: "*" заменяет все файлы, кроме скытых, ".*" подразумевает все скрытые файлы, "*.*" — замена всех файлов, содержащих в своем названии символ точки, "p*r" совпадает со всеми файлами, имя которых начинается с "p" и заканчивается "r", "*с*" — все файлы, имена которых содержат букву "с".
— при использовании команды more, для перемещения вперед по тексту на следующую страницу нажмите "пробел", для выхода — "q" или CTRL-C. Программа less позволяет перемещаться вниз-вверх по тексту при помощи стрелок.
— восстановление удаленных файлов невозможно, поэтому советую дважды подумать перед тем, как что-либо удалять.
— маски для имен файлов могут задаваться также последовательностями символов в квадратных скобках: [abc]* совпадает со всеми файлами, имена которых начинаются с a,b или c; *[I-N,1,2,3] — совпадает с файлами, имена которых заканчиваются на I,K,L,M,N,1, 2, 3.
— нет полного аналога ДОС'овской команды RENAME, mv *.xxx *.yyy не сработает.
— используйте команды "cp -i" и "mv -i" для запроса подтверждения на перемещение каждого файла.
Игорь Грень


Компьютерная газета. Статья была опубликована в номере 04 за 1999 год в рубрике soft :: unix

©1997-2024 Компьютерная газета