[Перейти к основному содержимому]

Ссылки

file: определите тип неизвестных файлов

Автор: Каспар Клеменс Мирау.

Оригинал: «file: classify unknown files on the console», 29 июня 2008 г.

Вам только что прислали письмо с вложениями без пригодных расширений, поэтому вы не знаете, что с ними делать. Это аудио-файлы? PDF? Что же это?.. Похожая проблема возникает после восстановления файлов, с веб-страницами с возможностью загрузки на сервер, и т. д.

Можете, конечно, присвоить файлу расширение и открыть в подходящем, на ваш взгляд, приложении, но лучше, если с этим разберется компьютер. Как пользователь GNU/Linux, вы, должно быть, уже подумали: «Наверняка для этого есть утилита командной строки». Конечно есть: file Яна Дарвина.

Часто эта утилита устанавливается автоматически, исходя из зависимостей. В любом случае, поможет aptitude install file. file зависит от libmagic — пакета с шаблонами для распознания, так называемыми «волшебными числами».

Пусть есть такая директория с неизвестными файлами:

$ ls -l
total 2152
-rw-r--r-- 1 ccm ccm 4118 2008-03-30 06:32 unknown.0
-rw-r--r-- 1 ccm ccm 10220 2008-05-06 02:23 unknown.1
-rw-r--r-- 1 ccm ccm 12693 2008-05-06 02:23 unknown.2
-rw-r--r-- 1 ccm ccm 25933 2007-10-26 07:41 unknown.3
-rw-r--r-- 1 ccm ccm 2121 2007-10-26 07:41 unknown.4
-rw-r--r-- 1 ccm ccm 185 2007-10-14 20:14 unknown.5
-rw-r--r-- 1 ccm ccm 1189011 2008-05-17 22:37 unknown.6
-rw-r--r-- 1 ccm ccm 824163 2008-02-02 05:02 unknown.7
-rw-r--r-- 1 ccm ccm 82367 2007-09-20 06:18 unknown.8
-rw-r--r-- 1 ccm ccm 8872 2006-04-24 12:43 unknown.9

Теперь мы хотим узнать, что внутри этих черных ящиков. Поэтому просто выполняем «file *»:

$ file *
unknown.0: XML
unknown.1: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
unknown.2: ASCII C program text
unknown.3: PDF document, version 1.4
unknown.4: LaTeX 2e document text
unknown.5: perl script text executable
unknown.6: gzip compressed data, from Unix, last modified: Wed Oct 8 16:27:09 2003
unknown.7: Ogg data, Vorbis audio, stereo, 44100 Hz, ~192003 bps, created by: Xiph.Org
libVorbis I (1.0)
unknown.8: PNG image data, 492 x 417, 8-bit/color RGBA, non-interlaced
unknown.9: HTML document text

Вот и всё! Впечатляет, да? file не только различает бинарные и текстовые файлы, но даже пытается определить, какой язык программирования использовался. Это не такое уж волшебство: например, в скрипте ZSH первая строчка — «#!/bin/zsh», PDF-файлы обычно начинаются с «%PDF», и так далее. Это всё шаблоны для распознания.

У file есть опции командной строки, которые делают утилиту еще более полезной. Одна из самых любопытных — -i — печатает вместо описаний MIME-типы. Если вы веб-разработчик и хотите узнать точный тип загруженного файла, то file здорово сбережет время:

$ file -i *
unknown.0: text/xml
unknown.1: application/x-object, not stripped
unknown.2: text/x-c; charset=us-ascii
unknown.3: application/pdf
unknown.4: text/x-tex
unknown.5: application/x-perl
unknown.6: application/x-gzip
unknown.7: application/ogg
unknown.8: image/png
unknown.9: text/html

Чудесно, не так ли? Веб-сервер Apache тоже использует в подобных целях libmagic. Собственно, file — это обертка к libmagic.

file давно есть в Debian и Ubuntu.

ZSH: действительно хорошая замена BASH

Автор: Данило Мартинс.

Оригинал: «zsh: a REALLY nice alternative for bash», 18 июня 2008 г.

После многих лет работы с ZSH вместо BASH, я никак не могу понять, почему еще не все перешли на ZSH. Это полноценная оболочка, которая обязательно облегчит вашу жизнь — только попробуйте.

Для начала ее нужно установить (а то!). В APT просто сделайте

$ sudo apt-get install zsh

и все должно настроиться. Можно использовать пакет zsh-beta, но он периодически падает. ZSH есть во всех репозитариях Debian и Ubuntu.

Для начала можно просто напечатать zsh, но вы не особо порадуетесь результату. Давайте сначала настроим оболочку под себя. Создадим в домашней директории файл .zshrc с примерно таким содержанием (обратите внимание на закоментированные строки и попробуйте их): zshrc.txt.

(В тестовой или нестабильной ветке Debian, если вы запустите ZSH без .zshrc, то будет предложен диалог настроек.)

Теперь запустим zsh. Если видите другое приглашение (особенно если не закоментировали соответствующие строки в примере .zshrc), то программа работает. Посмотрим, что можно с ней делать.

Первый пример. Пусть вы исполняете длинную команду (cat /etc/mailcap | grep "^audio" | sed s/mplayer/gmplayer) и забыли синтаксис sed. Просто переместите курсор к «sed» и нажмите Alt-H — вы получите страницу руководства sed, по закрытию которой можно продолжить набирать команду.

Второй пример. Вы соединились с удаленной системой через SSH. Вы хотите использовать опцию «X11 forwarding», но не помните, как. Напечатайте «ssh -» и нажмите Tab — в ZSH работает не только дополнение файлов, но и параметров. Проверьте с какой-нибудь командой, какую хотите использовать.

Третий пример. У вас есть ключ SSH для удаленной системы, и вы хотите копировать оттуда файл, используя SCP. Однако вы забыли, где именно этот файл находится. Напечатайте «scp user@remotehost:/home/myuser/myf» и нажмите Tab — ZSH дополнит имя удленного файла! (Для этого нужно иметь ключ RSA/DSA в удаленной системе.)

Четвертый пример. Вы хотите установить пакет Debian, но не помните его имя полностью (или лень печатать). Просто напишите «apt-get install mysql-client» и нажмите Tab — ZSH дополнит имя пакета. Если вариантов несколько, то они будут перечислены. Ну, достаточно примеров с автодополнением.

Пятый пример. Вы использовали вчера дли-и-и-и-инную команду, и снова ее печатать вам лень. И вы не хотите пролистывать стрелками журнал до появления команды. Вместо этого просто напечатайте начало команды и нажмите Alt-P. ZSH дополнит строчку до команды из журнала. Можете продолжить нажимать Alt-P и переходить к предыдущим записям (если упустили нужную, то Alt-N переходит к следующей).

Последний пример. Вы написали apt-gey install foo bar foo2 bar2 foo3 bar3 foo4 bar4 … foo239 bar239 и нажали Enter... #$@! Команды apt-gey не существует! Вместо того, чтобы нажимать и Home, а потом исправлять «gey» на «get», можно просто использовать ^gey^get — это комбинация для повторения прошлой команды с заменой «gey» на «get».

Если вам понравилась ZSH, и вы хотите использовать ее как оболочку по умолчанию — запустите команду chsh и укажите /usr/bin/zsh.

Пользуйтесь!

Примечание переводчика: практически все описанные возможности есть в BASH.

Ghextris: аналог Тетриса с шестиугольными элементами

Автор: Алекс Драхманн.

Оригинал: «Ghextris: tetris clone with a hexagonal makeover», 8 июня 2008 г.

Эта игра сходна с Тетрисом, только граница и падающие блоки состоят из шестиугольников. Нужно компоновать цветные элементы, чтобы они составляли строки. Законченные строки пропадают; игра завершается, как только стопка элементов достигнет верха.

Ghextris

Шестиугольники сложно компоновать, поэтому Ghextris сложнее, нежели другие подобные игры, но после тренировки все становится проще. Процесс усложняется, если вы допускаете ошибки, либо переполняете пространство; часто выпадают неподходящие блоки; кажется, со временем они еще и падают быстрее. Начисляемые очки зависят от количества заполненных строк. Текущий и наибольший счет показываются внизу окна.

Интерфейс и графика просты и хорошо вписываются в среду GNOME. Заливка элементов простая, без текстур и теней, поэтому не отвлекает от процесса.

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

Я играл в версию 0.9.0, которая сейчас содержится в репозитариях Ubuntu Hardy Heron и Debian. Ghextris есть во всех текущих версиях Debian и Ubuntu.

Официальный сайт проекта: http://mjr.iki.fi/software/ghextris.

Ghextris написал Микко Раухала по примеру схожей игры Девида Макли — Xhextris.

JOE: действительно удобный текстовый редактор

Автор: Нейл Стюарт.

Оригинал: «JOE Joe’s own editor: a really usable text editor», 2 июня 2008 г.

В те времена, когда я был новичком в Linux, JOE оказался первым текстовым редактором, который я смог закрывать, не перезагружая компьютера. То, что я его использую до сих пор, много лет спустя — свидетельство простоты и мощи JOE. Если не хотите использовать EMACS (зачем запускать сразу две операционные системы?) и все еще не можете разобраться, как работать в VI, то JOE — для вас.

JOE запускается из командной строки как joe, либо joe файл — для редактирования файла. Когда JOE запустится, вы увидите одну панель с заголовком, отображающую информацию о положении курсора, текущем времени и сообщение «Crtl-K H for help» (^KH в обозначениях JOE). Так что если одновременно нажать Ctrl и K, отпустить, после чего нажать H, то в верхней части экрана появится краткий список команд. Там я и узнал, как выйти из программы (без перезагрузки), открыть новый файл и сохранить его; как переместить курсор, осуществить поиск и замену, переходить по словам и строкам, помечать участки текста и перемещать их. Можно продолжать редактировать файл с окном помощи наверху — так вы быстро научитесь работать в JOE.

JOE

JOE — еще и мощный редактор. Например, можно пропустить любую часть текста через команду интерпретатора. Хороший пример приводится в файле помощи JOE. Если отметить кусок текста, нажав ^KB в начале и ^KK в конце, а потом пропустить его через ^K/ sort, то JOE отсортирует строки. Мощно, особенно вместе со старыми верными командами вроде tr и sed.

Поиск с заменой тоже делаются просто: нажмите ^KF и введите текст для поиска. Здесь тоже есть мощные возможности: стрелками курсора можно пролистать предыдущие запросы (включая те, что делались в других сессиях); по нажатию Tab работает дополнение до слов текста. Далее можно выбрать, что делать с найденным. Для замены нажмите R и введите новый текст. Можно заменить все сразу, а можно и просмотреть все совпадения — ^L переходит к следующему. Еще доступны регулярные выражения — это же все-таки *NIX. Опять же, хороший пример есть в файле помощи. Если заменять \*,\*,\*$ (где \* соответствует нулю и более символов, а $ — концу строки) на \2,\1,\0 (где \n соответствует n-му шаблону), то строка «раз,два,три» превратится в «три,два,один». Откройте справку с ^KH и пролистайте с ^[. пару экранов, чтобы вспомнить о том, как работают регулярные выражения.

С макросами тоже все просто. Запись одного из десяти макросов начинается при помощи ^K[ и добавочной цифры n, а заканчивается при помощи ^K]. Затем для вызова макроса используйте ^Kn.

В JOE много других возможностей. Он запоминает положение в тексте и возвращается к нему при следующем открытии файла. По умолчанию работает подсветка C, Java, LaTeX, HTML и многих других форматов. Есть выравнивание кода, поддержка нескольких окон, закладки. Можно скомпилировать исходный кода из joe (^[C) и пролистать места, где компилятор обнаружил ошибки (^C= — следующая, ^C- — предыдущая).

Наконец, JOE — старая, стабильная и рабочая программа. В Etch и Lenny находится версия 3.5. Я использую JOE для всех нужд, дни напролет, и он никогда не подводил. Подробности смотрите в info joe или на домашней странице проекта.