## 9. Оставшийся 1%

В действительности это больше, чем 1%...

## 9.1. Использование tar & gzip

Под UNIX имеются некоторые широко используемая приложения для архивации и сжатия файлов. `tar` используется, чтобы сделать архив --- он подобен `PKZIP`, но не сжимает. Сделать новый архив:

> `

>            $ 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` (`PKZIP` совместимые). Файлы с расширением `.tar.gz` или `.tgz` (сархивированный `tar`, затем сжатый `gzip`) - наиболее общие в мире UNIX, поскольку .ZIP файлы находятся под DOS. Вот как вывести список содержимого `.tar.gz` архива:

> `

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

> `

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

> `

>            # tar -zxf <archive.tar.gz>

> `

затем читайте `README` или `INSTALL` файлы. Во многих случаях, пакет распространяется в виде исходных текстов, коорые вам надо скомпилировать, чтобы создать бинарные файлы; обычно, надо напечатать `make`, затем `make install` и все. Очевидно, что вам нужен компилятор `gcc` или `g++`. Другие архивы возможно надо распаковать из `/`; это относится к архивам Slackware. Другие архивы содержат файлы без подкаталогов. Всегда просматривайте список содержание архива перед установкой этого. Дистрибутивы Debian и Red Hat имеют собственные форматы архивов; соответственно, `.deb` и `.rpm`. Последний особенно широко распространен; чтобы установить `.rpm` пакет, напечатайте

> `

>            # rpm -i package.rpm

> `

## 9.3. Советы, без которых не обойтись

Дописывание команды: нажатие <TAB> при наборе команды завершит командную строку за Вас. Пример: Вы должны напечатать `gcc this_is_a_long_name.c`; напечатайте `gcc thi<TAB>` . (Если у Вас имеются другие файлы, которые начинаются с тех же самых символов, то следут набирать достаточное количество символов, чтобы решить эту неоднозначность.)

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

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

Вставка текста: в консоли, см. ниже; в X, нажмите, и переместите мышь, чтобы выбрать текст в окне `xterm`, затем нажмите среднюю кнопку (или две кнопки вместе, если у Вас мышь с двумя кнопками), чтобы вставить текст. Имеется также `xclipboard` (только для текста); не пугайтесь очень медленного ответа.

Использование мыши: если Вы установили `gpm`, драйвер мыши для консоли, Вы можете нажимать и перемещаться, чтобы выбрать текст, затем правый щелчок, чтобы вставить выбранный текст. Этот прием работает и для разных VC.

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

## 9.4. Где найти приложения

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

## 9.5. Вещи, которые вы не могли делать раньше

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

- `at` позволяет запускать программы в указанное время;
- `awk` простой, но мощный язык манипулирования файлами данных (и не только). Например, пусть `data.dat` - это ваш файл данных с несколькими полями,

  > `

  >            $ awk '$2 ~ "abc" {print $1, "\t", $4}' data.dat

  > `

  печатает 1 и 4 поля каждой строки в `data.dat`, чье второе поле содержит `"abc"`.

- `cron` полезен для периодического выполнения задач в указанный день и час. Напечатайте `man 5 crontab`.
- `file <filename>` говорит, чем по формату является `filename` (ASCII текст, выполнимый, архиы, итд.);
- `find` (см. также раздел ``Каталоги: трансляция команд'') - одна из наиболее мощных и полезных команд. Она используется для поиска файлов, которые соответствуют нескольким условиям и выполняет над ними какие-либо действия. Обычное использование `find`:

  > `

  >            $ find <directory> <выражение>

  > `

  где <выражение> включает критерии поиска и действия. Примеры:

  > `

  >            $ find . -type l -exec ls -l {} \;

  > `

  Находит все файлы, которые являются символическими связями, и показывает на что они указывают.

  > `

  >            $ find / -name "*.old" -ok rm {} \;

  > `

  Находит все файлы, соответствующие образцу и удаляет их, сначала запрашивая ваше разрешение.

  > `

  >            $ find . -perm +111

  > `

  Находит все файлы, чьи права доступа соответствуют 111 (выполнимой программе).

  > `

  >            $ find . -user root

  > `

  ищет все файлы, которые принадлежат root. Существует большое количество возможностей --- RMP.

- `grep` ищет по текстовым образцам в файлах. Например,

  > `

  >            $ grep -l "геология" *.tex

  > `

  перечисляет файлы `*.tex`, которые содержат слово "геология". Вариант `zgrep` работает на gzipped файлах. RMP;

- регулярные выражения сложны, но это мощный способ выполнения операций поиска в тексте. Например, `^a[^a-m]X{4,}txt$` соответствует строке, которая начинается с "а", далее идет любой символ за исключением тех, что находятся в интервале `a-m`, далее 4 или больше символов "X", и в конце `"txt"`. Вы используете регулярные выражения с мощными редакторами, `less` и многими другими приложениями. Почитайте `man grep` для примера использования регулярных выражений.
- `script <script_file>` отображает на экране содержимое `script_file` до тех пор, пока вы не введете команду `exit`. Полезен для отладки;
- `sudo` позволяет пользователям выполнять некоторые из задач root (например, форматирование и монтирование дисков; RMP);
- `uname -a` выдает имя вашей системы;
- Следующие команды часто запускаются вручную: `bc, cal, chsh, cmp, cut, fmt, head, hexdump, nl, passwd, printf, sort, split, strings, tac, tail, tee, touch, uniq, w, wall, wc, whereis, write, xargs, znew`. RMP.

## 9.6. Общие расширения и связанные с ними программы

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

- `1 ... 8`: man страницы. Маловероятно, что у Вас их нет, нужен `man`.
- `arj`: архив, созданный `arj`.
- `dvi`: результат работы TeX (см. ниже). Эти файлы отображаются `xdvi`; `dvips` преобразует их в формат PostScript - `.ps` файлы.
- `gz`: архив, созданный `gzip`.
- `info`: файл info (альтернатива для man страниц). Нужен `info`.
- `lsm`: файл Linux Software Map. Он содержит описание пакета в формате простого ASCII текста.
- `ps`: файл PostScript. Для отображения или печати нужен `gs` и, возможно, `ghostview` или `gv`.
- `rpm`: пакет Red Hat. вы можете установить его на любой системе, использующей менеджер пакетов `rpm`.
- `taz, tar.Z`: архив, созданный `tar` и сжатый `compress`.
- `tgz, tar.gz`: архив, созданный `tar` и сжатый `gzip`.
- `tex`: текстовый файл, созданный TeX, мощной печатной системой. Нужен пакет `tex`, который доступен во многих дистрибутивах; но остерегайтесь `NTeX`, который разрушает шрифты и включен в некоторые версии Slackware.
- `texi`: `texinfo` файл, может обрабатывать и `TeX`, и `info` файлы (cp. `info`). Нужен `texinfo`.
- `xbm, xpm, xwd`: графический файл. Их можно редактировать с помощью `xpaint`.
- `Z`: архив создан утилитой `compress`.

## 9.7. Преобразование текстовых файлов

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

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

Преобразовать файлы в формате Word или WordPerfect в простой текст немного сложнее, но вполне возможно. Вам понадобится одна из утилит, которые могут быть найдены на сайтах CTAN; например - `ftp://ftp.tex.ac.uk`. Возьмите пакет `word2x` из каталога `/pub/tex/tools/`, или попробуйте пакеты в каталоге `/pub/tex/support/`. Я пробовал только `word2x`, и работает он очень хорошо.