Midnight Commander является представителем самого популярного семейства визуальных оболочек/менеджеров файлов "a la Norton Commander" (в мире Dos/Windows это Norton Commander, Volkov Commander, Dos Navigator, Far, Windows Commander; под Unix до MC существовал Demos Commander (deco)).
Это семейство характерно тем, что экран разбивается на три части -- две панели с файлами (левая и правая) и командная строка, позволяющая вводить команды операционной системы.
У MC есть следующие возможности:
Для запуска Midnight Commander надо набрать "mc". По умолчанию он запускается "в цвете" на консоли, и в черно-белом варианте в окне xterm. Чтобы получить цвет в окне, надо воспользоваться ключом "-c" (color).
Первое отличие от семейства Norton Commander'а обусловлено тем, что в Unix нет букв дисков -- поэтому нет команды "сменить диск" (Alt+F1/Alt+F2).
Второе -- для многих действий (кроме F1-F10) используются другие сочетания клавиш -- это обусловлено тем, что, к примеру, у telnet нет возможности передавать сочетания типа Shift+Ctrl+PageUp. В основном используются сочетания "a la Emacs". В меню и справочной системе приведены сочетания клавиш для большинства операций. Там используются следующие обозначения:
Пример | Что означает |
---|---|
C-r | Нажать Ctrl+R |
M-? | Нажать Esc, затем ? |
C-x s | Нажать Ctrl+X, затем s |
C-x C-s | Нажать Ctrl+X, затем Ctrl+S |
В отличие от NC, для копирования в командную строку имени файла, на котором стоит курсор, используется не Ctrl+Enter, а "Esc Enter".
Поскольку в MC мышь используется "обычным" образом, то исчезает возможность отметки/вставки текста при помощи мыши. Чтобы выделять и вставлять текст мышью, надо при нажатии кнопок держать нажатой клавишу Shift.
Поскольку MC очень похож на NC&Co., и все команды можно найти в меню, обратим внимание лишь на несколько особенностей MC.
Быстрый переход по директориям
В любой момент можно перейти в другую директорию, даже если в командной строке что-то набрано -- для этого служит комбинация "Esc c" (change dir) -- отдаленный аналог Alt+F1/F2.
Кроме того, по комбинации "Ctrl+\" можно вызвать список "самых частоиспользуемых" директорий, куда можно занести такие директории как /tmp, /etc и т.д. -- по своему вкусу.
Встроенный ftp-клиент
В MC встроена поддержка FTP. Если выбрать в меню Left/Right пункт "FTP link...", и затем набрать имя компьютера, то MC покажет в панели список файлов с него. Другой способ -- перейти командой cd (или при помощи "Esc c" или Ctrl+\) в директорию со специальным именем вида "ftp://имя-компьютера".
По умолчанию MC входит на ftp-сервер под именем anonymous, но можно указывать имя пользователя (и, кстати, директорию) точно так же, как в обычных URL, используемых в Internet. К примеру,
ftp://ivanov@host.inp.nsk.su/tmp/означает "зайти на машину host.inp.nsk.su как пользователь ivanov и перейти в директорию /tmp/".
Закрыть ftp-соединение можно, перейдя в любую локальную директорию, к примеру, в свою домашнюю.
Замечание. В меню Left/Right рядом с "FTP link..." есть пункт "Network link...". Он дает доступ к "самодельной" сетевой файловой системе MC, и практически никогда не используется (поскольку для него требуется на другом компьютере запустить сервер mcserv, чего никто никогда не делает -- просто незачем).
Переименование групп файлов
MC позволяет единообразно переименовывать группу файлов с похожими именами (которые подходят под некий шаблон) одной операцией.
К примеру, при отметке нескольких файлов и нажатии F6 (Move) появляется окно следующего вида:
Если мы отметили файлы с именами file01.tar.gz, file02.tar.gz и т.д. до file07.tar.gz, и хотим их переименовать в f1.tgz и т.д., то надо сделать следующее:
При переименовании каждого файла MC подставит в новое имя (f*.tgz) вместо "*" то, что соответствовало "*" в исходном шаблоне (file0*.tar.gz).
Замечание. Вообще-то можно указывать в имени и шаблоне несколько "*" -- MC подставит вместо кажой "*" в новое имя то, что соответствовало "*" в шаблоне (так можно переименовать fileAdata01.tar.gz...fileZdata05.tar.gz в fA1.tgz... -- исходный шаблон file*data0*.tar.gz). Допускаются и более хитрые переименования -- например, abc01.txt->01abc.txt -- подробности можно узнать, нажав F1 в окне копирования/переименования.
MC и русский язык
Если попробовать нажать F3 на файле с русским текстом, то вместо русских букв на экране будут точки. Аналогично, русские буквы вводиться не будут. Дело в том, что по умолчанию MC настроен на работу с файлами, содержащими только ASCII-символы (т.е. с кодами до 127), а русские буквы лежат выше.
Чтобы включить поддержку русского, надо выбрать в меню Options пункт "Display bits...", после этого появится окно следующего вида:
Надо включить "Full 8 bits output" и "Full 8 bits input".
Просмотр экрана "под панелями" по Ctrl+O
При работе на консоли и в окне xterm MC позволяет посмотреть то, что "скрыто" под панелями, при помощи Ctrl+O -- так же, как и в NC. Но то, как MC выполняет команды, вводимые в его командной строке с клавиатуры, сильно отличается, и поэтому иногда он начинает "глючить" -- вводятся лишние символы ^H, а иногда MC заявляет, что "Shell is already running a command".
Чтобы избежать этих проблем, лучше Ctrl+O не пользоваться вовсе, а для того, чтобы видеть вывод команд, запускаемых из-под MC, можно в окне Options|Configuration... переключатель "Pause after run..." поставить в положение "alwaYs" -- после завершения каждой команды MC будет просить нажать любую клавишу.
Если клавиши не работают...
При использовании программы Telnet из Windows95/NT клавиши F5-F10 "не работают". Это происходит из-за того, что Telnet просто не передает их (другие подвиды telnet также иногда страдают подобным).
Выход очень простой -- вместо Fn всегда можно нажать Esc, а затем соответствующую цифру: F1 -- Esc,1, F10 -- Esc,0.
Кроме Fn бывают проблемы и с клавишами Ins, Home, End, PgUp, PgDn (с Del все еще хитрее). Хотя в MC и предусмотрено частичное решение проблемы -- Options|Learn Keys, реально проблема заключается в отсутствии в Unix четкого стандарта на эти клавиши и должна решаться по-другому. А практически во всех программах предусмотрены другие эквиваленты -- так, вместо Home во многих программах можно нажимать Ctrl+A, вместо End -- Ctrl+E.
Иногда при запуске MC (и не только) в окне xterm вместо рамок вокруг панелей и окошек ничего не рисуется, или изображаются какие-то странные символы. Это происходит из-за того, что в шрифте, используемом xterm, могут отсутствовать псевдографические символы (то же самое бывает и в Windows Telnet).
В этой ситуации можно запустить MC с ключом "-a", чтобы он
для рисования рамок использовал символы +, -, |.
В этом разделе рассматриваются только текстовые редакторы для
ASCII-файлов (таких, как исходные тексты программ, .txt-файлы и
т.д.). В обзор попали только текстовые редакторы, работающие в
текстовом режиме (пардон за тавтологию), т.е. в консоли или в окне
xterm, а не в графике.
Все рассматриваемые редакторы поддерживают основные операции
редактирования: набор и правка текста, поиск и замена, работа с блоками
(отметка, копирование, перемещение, удаление), загрузка/сохранение
файлов.
Vi был первым "настоящим" текстовым редактором под Unix. Его
реализации есть во всех подвидах Unix. Сделан он был программистами
исключительно для собственного использования, и для обычного
пользователя весьма неудобен. Практически единственное, что надо о нем
знать -- это как отличить его и как из него выходить, случайно
оказавшись в нем (хотя для системных администраторов его знать все же
желательно -- иногда, например, при "починке" системы, ничего кроме vi
нет в принципе).
При загрузке vi (в Linux используется его "улучшенная" версия vim --
Vi IMproved) экран выглядит приблизительно так, как на иллюстрации
(символами "~" обозначаются строки за концом файла):
Не вдаваясь в подробности работы vi (режим просмотра, режим
редактирования и т.д.): обычно для выхода из него достаточно набрать
":q" и нажать Enter. В том случае, если "с перепугу" или по
неопытности загруженный файл был изменен, то выйти без сохранения
всегда можно, набрав ":qa!" (":" -- вызов командного режима,
"q" -- выход, "a" -- из всех окон сразу, "!" -- выход несмотря на
наличие изменений). Если при нажатии ":" в нижней строке не появляется
приглашение (тоже ":"), то надо сначала нажать три раза Esc.
Joe очень похож по набору команд на редактор WordStar и среды фирмы
Borland (Borland Pascal, Borland C++ и т.д.). Он активно использует
комбинации клавиш Ctrl+K буква. Однако, в отличие от
WordStar комбинации Ctrl+Q буква не применяются.
Основные комбинации клавиш приведены в таблице, но нажав
Ctrl-K H можно вызвать справку по клавишам (убирается она
той же комбинацией Ctrl-K H).
Любую операцию можно прервать, нажав Ctrl+C.
Joe поддерживает редактирование нескольких файлов одновременно --
каждый в своем "окне". Подробности можно узнать в справке.
У joe есть одна "неприятная" особенность: символ "`"
(обратный апостроф) используется как префикс для ввода специальных
символов. Поэтому бывают проблемы при вставке текста из другого окна
при помощи мыши -- к примеру, строка, содержащая "`b" приведет
к вставке в текст символа с ASCII-кодом 2 (Ctrl+B). Чтобы вставить в
текст сам "`", надо нажать его дважды.
Emacs -- это даже не столько редактор, сколько среда. Некоторые (в
основном, программисты) используют его практически для всего -- включая
чтение почты. Перечень всего, что умеет Emacs, мало кому известен.
Практически все функции Emacs'а написаны на интерпретируемом языке
Lisp, поэтому редактор работает сравнительно медленно.
Хотя Emacs -- довольно неподходящий выбор для начинающих, у него
есть одно несомненное достоинство -- как и vi, он есть практически в
любом Unix.
По умолчанию в графической среде X-Window Emacs запускается в
графическом режиме в собственном окне, при этом многие действия можно
выполнять мышью. Из консоли, а также если указать ключ "-nw",
он запустится в текстовом режиме.
По клавише F10 вызывается меню -- но не обычное, а "клавишное" --
для выбора пункта надо нажать какую-либо клавишу (все они отображаются
на экране).
У Emacs есть несколько особенностей, обычно ставящих в тупик
непривычных к нему людей. Во-первых, в текстовом режиме клавиша
Backspace -- это не удаление предыдущего символа, а синоним Ctrl+H --
префикс "команд помощи". Во-вторых, по умолчанию русские буквы не
вводятся как буквы, а вызывают некие команды Emacs'а. В-третьих, если
жать стрелку вниз за концом файла, то Emacs будет сам добавлять
дополнительные строки.
Многие команды состоят не из одной клавиши, а из нескольких --
первой обычно является Ctrl+X, Ctrl+C или Ctrl+H.
Получить список клавиш (весьма немаленький) можно, нажав
"Ctrl+H b". Прервать практически любую команду можно, нажав
Ctrl+G.
Mcedit -- это редактор, который используется в MC. Соответственно,
он похож на привычный всем редактор из Norton Commander'а.
Mcedit понимает те же ключи "-c" и "-a", что и MC.
Кроме того, поскольку это, собственно, и есть MC, он использует
настройки MC, к примеру, "Display bits". Будучи запущен в цвете,
mcedit умеет "расцвечивать" файлы .tex и .c (впрочем, по умолчанию
цвета не самые приятные).
Основные клавиши редактирования приведены в таблице, но можно также
посмотреть подсказку, нажав F1. Кроме того, F9 вызывает меню, в
котором есть еще множество команд. Mcedit можно переключить в режим
"эмуляции" Emacs, переключив в окне F9->Options->General
пункт "Key emulation" в "Emacs".
Кроме всего прочего, есть множество текстовых редакторов, работающих
в графической оболочке X-Window -- обязательно есть
xedit, а одним из самых удобных считается
nedit. Их мы будем рассматривать позже, вместе с
X-Window.
Такие программы, как pkzip/pkunzip и arj, совмещают две разных
функции: архивирование, т.е. помещение содержимого нескольких
файлов в один (с сохранением информации о каждом файле), и
упаковку, т.е. сжатие файла.
В Unix эти функции по историческим причинам реализуются отдельными
программами: для упаковки используются compress, gzip, bzip2,
а для архивации -- tar.
Кроме того, в любом Unix есть программа ar, которая хоть и
умеет делать архивы из произвольных файлов, в первую очередь
предназначена для создания библиотек объектных файлов, и будет
рассматриваться в разделе "Компиляция и сборка программ".
У каждого архиватора и упаковщика есть свое стандартное расширение
для имени файла, в таблице приведены большинство из них.
compress упаковывает указанный ему файл и добавляет к имени
расширение .Z.
Пример (файл-пример termcap взят из директории /etc):
Для распаковки используется программа uncompress:
Gzip был создан как более мощная замена для compress. Используется
он точно так же:
Gzip позволяет достигать больших степеней сжатия, чем compress, и
поэтому почти вытеснил его. Поскольку большее сжатие занимает больше
времени, есть возможность указать gzip'у, как паковать -- быстрее (и
слабее) или лучше (и медленнее). Для этого служат ключи от
"-1" (самое быстрое сжатие) до "-9" (наибольшее
сжатие).
По умолчанию используется "-6".
Для распаковки применяется программа gunzip.
Gunzip умеет также распаковывать файлы .Z и .z.
Bzip2 был создан сравнительно недавно -- в 1996 году. Он использует
при паковке алгоритм Burrows-Wheeler (вместо Lempel-Ziv, применяемого в
compress/gzip/zip), что позволяет достигать еще больших степеней
сжатия. Платой за это является несколько большее время упаковки.
Используемые bzip2 ключи почти идентичны gzip'овым. Но bzip2 по
умолчанию использует наилучшее сжатие ("-9").
Кроме того, по файлам .Z и .gz можно вести поиск
"a-la grep" -- для этого служит программа zgrep.
Первоначально tar был разработан для резервного копирования
на ленту, отсюда и его название -- Tape ARchiver. Но, поскольку
возможность помещать большое количество файлов внутрь одного
чрезвычайно удобно (к примеру, для хранения и передачи групп файлов,
например, дистрибутивов), то он получил более широкое распространение.
Вообще-то в каждом Unix есть свой подвид tar, со слегка
отличающимися опциями. Но основные опции (создать, развернуть,
проверить архив) одинаковы во всех версиях. В Linux используется
GNU-версия tar, которая доступна в большинстве других Unix (иногда под
именем "gtar").
Если tar используется для работы с файлами-архивами (а не с лентой),
то его вызов обычно выглядит так:
В качестве команды обычно используется одна из следующих букв:
Например, чтобы создать архив /tmp/someconfs.tar содержащий файлы
/etc/fstab и /etc/passwd:
Здесь сразу надо заметить две особенности:
Если указать "vv", то кроме имен будут показываться те же атрибуты,
что и при "ls -l".
Вообще у tar довольно нестандартный синтаксис команд: хотя все ключи
и можно указывать обычным способом (т.е. через "-"), и даже длинные
ключи (с "--"), но обычно первым параметром ему указывается сочетание
из нескольких букв, первая из которых является командой, а остальные --
ключами. Так, "f" -- это тоже ключ, который говорит, что
далее указано имя файла-архива (поэтому "f" надо указывать в конце
списка).
Для просмотра архива используется команда "t" (ключ "v" указывает,
что надо выдавать более полную информацию):
Для распаковки применяется команда "x":
Tar разворачивает дерево-содержимое архива в текущей директории.
Чтобы распаковать архив в другую директорию, надо или перейти в нее
(командой cd) или указать ключ "-C" (распаковываем в
директорию /tmp):
Обычно .tar-файлы держат упакованными (чаще всего gzip'ом).
Самое простое -- создать архив и затем упаковать его. Но можно указать
в качестве имени архива "-" -- тогда результат будет отправлен на
стандартный вывод, и затем передать его gzip'у, стандартный вывод
которого перенаправить в файл:
При использовании GNU tar (например, в Linux) есть еще более простой
способ: можно указать ключ "z", который означает "пропустить
файл через gzip":
Этот же ключ можно указывать при распаковке и просмотре архива.
Дело в том, что tar (в отличие от Dos'овских pkzip и arj) не
проверяет, что файл, который он собирается поместить в архив -- это сам
архив. Поэтому лучше сами файлы-архивы создавать вне того дерева, из
которого берутся файлы, или прямо указывать список всех файлов,
которые надо положить в архив.
zip/unzip Для манипуляций с .zip файлами практически в любом Unix
есть программы zip и unzip, совместимые с
pkzip/pkunzip версии 2.04.
Поскольку ключи zip и unzip почти идентичны оным у
pkzip/pkunzip, ма не будем здесь их подробно рассматривать. Получить
краткую справку можно, запустив любую из этих программ без параметров.
unarj Для распаковки .arj-файлов есть программа unarj,
совместимая с версией 2.41. В отличие от "настоящего" arj, она не умеет
создавать .arj-архивы, не оптимизирована по скорости и
поддерживает лишь небольшое количество опций.
Поддерживаются самые часто используемые опции arj -- просмотр и
распаковка, но при распаковке нет возможности указать, какие файлы надо
извлекать -- можно распаковать только весь архив.
Краткую справку можно получить, набрав просто "unarj" без
параметров:
Поскольку unarj -- просто демо, то к нему отсутствует man-страница.
Единственная имеющаяся документация -- файл
/usr/doc/unarj-2.41a/unarj.doc (это обычный текстовый файл).
Замечание: директории "192.168.1.1" в
/net/ не видно -- в нее надо явно зайти командой
cd.
Текстовые редакторы
Текстовые редакторы
Замечание.
Большинство редакторов при сохранении файла создают резервную (backup)
копию, но в отличие от Dos, где она имеет то же имя, что и файл и
расширение .bak, в Unix принято давать резервным копиям то же имя что и
у файла, но с тильдой "~" на конце (файл "compress.c"
-- резервная копия "compress.c~").
Самый древний: vi
/dev/hda4 / ext2 defaults 1 1
/dev/hda1 /c vfat defaults 0 0
/dev/hda2 /d ext2 defaults,ro 0 2
/dev/hda3 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
/dev/cdhdd /mnt/hdd iso9660 noauto,ro 0 0
none /proc proc defaults 0 0
/dev/hdb4 /mnt/hdb4 ext2 noauto,ro 0 0
/dev/hdb2 /mnt/hdb2 ext2 noauto,ro 0 0
~
~
~
~
~
~
"/etc/fstab" [readonly] 10 lines, 756 characters
Замечание.
Хотя достоинством vi является то, что он есть в любом Unix, его
неудобство столь велико, что лучше потратить в каждой новой для себя
системе несколько лишних минут и найти что-нибудь более приличное.
Отсутствие же других текстовых редакторов является лишь показателем
халтурной работы администратора системы, но никак не оправдывается
наличием vi.
Замечание.
У vi есть любопытная особенность: если его "убить" (kill) во время
редактирования файла, то он посылает письмо владельцу, уведомляя о том,
что редактировался такой-то файл и его, возможно, удастся восстановить
такой-то командой.
Совет.
Существует множество "клонов" vi -- elvis, vile и т.д. (в имени каждого
из них присутствует буквосочетание "vi"). Есть даже версии vi для
X-Window (в том числе написанные с использованием Motif). Приверженцы
vi создали к нему множество расширений, включая многоуровневое "undo" и
цветовое выделение синтаксиса. Но тем не менее это все тот же самый
vi, и обычному пользователю связываться с ним просто не имеет смысла.
Простой и быстрый: joe
Клавиши Действие Редактирование Backspace Удалить символ перед курсором Ctrl+D Удалить символ под курсором (аналог Del) Ctrl+J Удалить до конца строки Ctrl+Y Удалить строку Ctrl+_ Отмена последней операции редактирования Ctrl+T T Переключение вставка/замена (insert/overtype) Поиск и замена Ctrl+K F Поиск/замена; для замены надо в опциях (запрашиваются после ввода образца) указать R.
Поиск/замена понимает регулярные выражения (несколько специального вида), нажав Ctrl-K H можно получить подсказку.Ctrl+L Повтор последней операции поиска/замены Работа с блоком Ctrl+K B Отметить начало Ctrl+K K Отметить конец Ctrl+K C Копировать Ctrl+K M Переместить (не Ctrl-K V, как в WordStar/Borland!) Ctrl+K Y Удалить Ctrl+K W Записать в файл Ctrl+K R Прочитать из файла Работа с файлами Ctrl+K D Сохранить Ctrl+K X Сохранить и выйти Ctrl+C Выйти без сохранения Ctrl+K E Открыть файл (в новом окне) Замечание.
Если вместо "joe" набрать "jstar", то joe запустится
в режиме полной эмуляции клавиатуры WordStar, если "jmacs" --
то в режиме эмуляции Emacs, "jpico" -- будет эмулировать Pico.
Самый навороченный: emacs
Предупреждение.
Сочетания вида "Ctrl+X Ctrl+C" -- это далеко не то же самое, что
"Ctrl+X C"!
Клавиши Действие Редактирование Del Удалить символ перед курсором Ctrl+D Удалить символ под курсором (аналог Del) Ctrl+K Внутри строки -- далить до конца строки,
в конце строки -- удалить конец строки ("подклеить" следующую строку)Ctrl+_ Отмена последней операции редактирования Ins Переключение вставка/замена (insert/overtype) Поиск F10 s s Поиск Ctrl+L Повтор последней операции поиска Работа с файлами Ctrl+X s Сохранить Ctrl+X Ctrl+C Выйти (если файл изменен, то спросит, сохранять или нет) Как в MC: mcedit
Клавиши Действие Редактирование Backspace Удалить символ перед курсором Ctrl+D Удалить символ под курсором (аналог Del) Ctrl+Y Удалить строку Ctrl+U Отмена последней операции редактирования Ins Переключение вставка/замена (insert/overtype) Поиск и замена F7 Поиск (можно использовать регулярные выражения) Shift+F7 Повтор последней операции поиска F4 Замена Работа с блоком F3 Первое нажатие -- начало отметки блока, второе -- конец
(в консоли для отметки можно пользоваться Shift+стрелками, как в Word и Borland)F5 Копировать F6 Переместить F8 Удалить Ctrl+F Записать в файл Shift+F5 Прочитать из файла Работа с файлами F2 Сохранить F10 Выйти (если файл изменен, то спросит, сохранять или нет) Ctrl+O Открыть файл Какие еще бывают текстовые редакторы в Unix
Упаковщики и архиваторы
Упаковщики и архиваторы: в чем отличие?
Замечание.
Программы-архиваторы разрабатывались в первую очередь для резервного
копирования (обычно на ленту). Кроме tar есть еще программы
cpio и dump/restore, но их мы рассматривать не будем.
Расширение Тип файла .gz Файл, упакованный gzip .Z Файл, упакованный compress .z Файл, упакованный pack .bz2 Файл, упакованный bzip2 .tar Архив tar .tar.gz Архив tar, упакованный gzip .tgz То же, что .tar.gz .taz То же, что .tar.Z .zip Упакованный архив zip/pkzip .arj Упакованный архив arj .a Библиотека ar "Классический" упаковщик compress
bobby:~% ls -l
total 428
-rw-r--r-- 1 ivanov lab5 434898 Sep 10 12:21 termcap
bobby:~% compress termcap
bobby:~% ls -l
total 200
-rw-r--r-- 1 ivanov lab5 203137 Sep 10 12:21 termcap.Z
bobby:~% _
bobby:~% uncompress termcap.Z
bobby:~% ls -l
total 428
-rw-r--r-- 1 ivanov lab5 434898 Sep 10 12:21 termcap
bobby:~% _
Предупреждение.
Если указать ключ "-r" и имя директории, то будут
упакованы/распакованы все файлы в этой директории. Этот ключ не
означает "упаковать всю директорию в один файл"!
Более новый упаковщик: gzip
bobby:~% ls -l
total 428
-rw-r--r-- 1 ivanov lab5 434898 Sep 10 12:21 termcap
bobby:~% gzip termcap
bobby:~% ls -l
total 143
-rw-r--r-- 1 ivanov lab5 144719 Sep 10 12:21 termcap.gz
bobby:~% _
bobby:~% ls -l
total 428
-rw-r--r-- 1 ivanov lab5 434898 Sep 10 12:21 termcap
bobby:~% gzip -9 termcap
bobby:~% ls -l
total 142
-rw-r--r-- 1 ivanov lab5 143832 Sep 10 12:21 termcap.gz
bobby:~% _
Самый современный упаковщик: bzip2
bobby:~% ls -l
total 428
-rw-r--r-- 1 ivanov lab5 434898 Sep 10 12:21 termcap
bobby:~% bzip2 termcap
bobby:~% ls -l
total 115
-rw-r--r-- 1 ivanov lab5 116736 Sep 10 12:21 termcap.bz2
bobby:~% _
Общие свойства compress, gzip и bzip2
Замечание.
Вообще-то zcat -- это синоним "gunzip -c", а
zless и bzless -- очень простые скрипты. Поскольку
zgrep также является скриптом, то несложно написать его аналог
для bzip2.
Архиватор tar
tar <буква-команды>f <имя-архива.tar> [файлы...]
bobby:~% tar cf /tmp/someconfs.tar /etc/fstab /etc/passwd
tar: Removing leading `/' from absolute path names in the archive
bobby:~% _
bobby:~% tar cvf /tmp/someconfs.tar /etc/fstab /etc/passwd
tar: Removing leading `/' from absolute path names in the archive
etc/fstab
etc/passwd
bobby:~% _
Замечание.
Хотя в большинстве систем tar прекрасно понимает именно такой
синтаксис, в некоторых старых Unix'ах перед "сочетанием букв"
обязательно надо указывать "-".
bobby:~% tar tvf /tmp/someconfs.tar
-rw-r--r-- root/root 756 1998-12-21 16:40 etc/fstab
-rw-r--r-- root/root 1309 1999-02-22 10:35 etc/passwd
bobby:~% _
bobby:~% mkdir /tmp/test
bobby:~% cd /tmp/test
bobby:/tmp/test% ls -l
total 0
bobby:/tmp/test% tar xf /tmp/someconfs.tar
bobby:/tmp/test% ls -l
total 1
drwxr-xr-x 2 ivanov lab5 1024 Mar 4 16:03 etc/
bobby:/tmp/test% ls -l etc/
total 3
-rw-r--r-- 1 ivanov lab5 756 Dec 21 16:40 fstab
-rw-r--r-- 1 ivanov lab5 1309 Feb 22 10:35 passwd
bobby:/tmp/test% _
bobby:~% ls -l etc
/bin/ls: etc: No such file or directory
bobby:~% ls -l /tmp/etc
/bin/ls: /tmp/etc: No such file or directory
bobby:~% tar xf /tmp/someconfs.tar -C /tmp
bobby:~% ls -l /tmp/etc
total 3
-rw-r--r-- 1 ivanov lab5 756 Dec 21 16:40 fstab
-rw-r--r-- 1 ivanov lab5 1309 Feb 22 10:35 passwd
bobby:~% _
Замечание.
Вообще-то назначение ключа "-C" более общее, и надо хорошо
себе представлять, что он будет делать в каждом конкретном случае. Но
при распаковке всего архива такое использование достигает цели.
bobby:~% tar cf - /etc/fstab /etc/passwd | gzip >someconfs.tgz
tar: Removing leading `/' from absolute path names in the archive
bobby:~% ls -l
total 1
-rw-r--r-- 1 ivanov lab5 990 Mar 4 16:28 someconfs.tgz
bobby:~% _
bobby:~% tar czf someconfs.tgz /etc/fstab /etc/passwd
tar: Removing leading `/' from absolute path names in the archive
bobby:~% ls -l
total 1
-rw-r--r-- 1 ivanov lab5 990 Mar 4 16:31 someconfs.tgz
bobby:~% _
Предупреждение.
Если сказать tar'у создать архив в той же директории, откуда берутся
исходные файлы (к примеру, в текущей:
"tar cf archive.tar ."), то сам
.tar-файл тоже попадет в архив -- точнее, та его часть, что
была создана на момент начала добавления его самого.
Совет.
Man-страница по tar довольно запутанна, поэтому лучше воспользоваться
info-документацией ("info tar"), которая содержит разделы
специально для начинающих (включая tutorial'ы).
Совместимость с Dos: zip/unzip, unarj
bobby:~% unarj
UNARJ (Demo version) 2.41a Copyright (c) 1991-93 Robert K Jung
Usage: UNARJ archive[.arj] (list archive)
UNARJ e archive (extract archive)
UNARJ l archive (list archive)
UNARJ t archive (test archive)
UNARJ x archive (extract with pathnames)
This is an ARJ demonstration program and ** IS NOT OPTIMIZED ** for speed.
You may freely use, copy and distribute this program, provided that no fee
is charged for such use, copying or distribution, and it is distributed
ONLY in its original unmodified state. UNARJ is provided as is without
warranty of any kind, express or implied, including but not limited to
the implied warranties of merchantability and fitness for a particular
purpose. Refer to UNARJ.DOC for more warranty information.
ARJ Software Internet address : robjung@world.std.com
Robert and Susan Jung CompuServe userid: 72077,445
2606 Village Road West
Norwood, Massachusetts 02062
USA
bobby:~% _
Практические задания
к
себе в home-директорию.
в директорию /tmp/.
поменять
его так, чтобы поговорки шли в таком порядке: про про гусей, про попа,
про Карла; сделать это сначала в joe, затем в
mcedit (подсказка: это задание на блоки текста).
при помощи
команды замены привести пословицу в нормальный вид; сделать это сначала
в joe, затем в mcedit.
набран
латинскими буквами фрагмент известного стихотворения. Привести его в
Emacs в должный вид.