Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также любые проблемы программирования на различных макроязыках и в скриптовых средах)

Дзен консоли v 1.7

Петр "Roxton" Семилетов, tea@list.ru.

Книга для ежедневного чтения, писанная в годы 2005-2007.

Содержание

1. Необходимое предисловие
    1.1. На пару слов...
    1.2. Благодарности
2. Фильмы
    2.1. Конвертируем VideoCD в MPEG4
    2.2. Как перегнать фильм DVD в формат MPEG4 (DivX)?
    2.3. Кодирование фильмов в три прохода
    2.4. Как втолковать файлу, что он - DivX
    2.5. Кодирование скинутого на винт DVD в MPEG4
    2.6. Как разбить фильм на два файла
    2.7. Русские субтитры в Mplayer
    2.8. Просмотр фильма с несколькими звуковыми потоками
    2.9. Заменить в фильме звуковую дорожку
    2.10. Запись видео с аналоговой камеры
    2.11. Как вытащить звук из фильма в WAV
3. Как конвертировать Audio CD в WAV, MP3 и OggVorbis
    3.1. Из Audio CD в WAV
    3.2. Из WAV в MP3 и наоборот
    3.3. Из WAV в OggVorbis
    3.4. Из MP3 в WAV'ы
4. Запись на CD/DVD-болванки
    4.1. Wodim и запись на болванку
    4.2. Запись Audio CD
    4.3. Создаем образ диска
    4.4. Запись DVD
5. Поиск файлов и в файлах
    5.1. Поиск файлов
6. Работа с архивами
    6.1. Упаковка/распаковка каталогов и файлов
    6.2. Быстрая пересылка каталога по SSH
    6.3. Разбивка большого файла на части
7. Винты и CD-ROM'ы
    7.1. Проверка читабельности CD/DVD
    7.2. Управление скоростью CD-ROM'а
    7.3. Скорость CD-ROM, более простой метод
    7.4. Выявление сбойных секторов штатными средствами
8. Обработка текста
    8.1. Форматирование текста по ширине
    8.2. Синтез речи
9. Если случилась беда
A. Об авторе

Глава 1. Необходимое предисловие

Tibi et igni

1.1. На пару слов...

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

Примеры в книге отмечаются вот таким шрифтом. При этом важны кавычки и знаки препинания. Копируйте примеры к консоль и изменяйте сообразно своим нуждам.

Материал написан в редакторе TEA в формате Docbook и автоматически переводится в HTML для распространения книги. Книга отдана миру как общественное достояние, то бишь public domain. Ее можно копировать, перепечатывать, словом - делайте с ней что хотите.

Книга время от времени обновляется и дополняется. Можете свободно слать мне комментарии, на адрес - tea@list.ru. Свежую версию книги вы всегда можете найти на моем сайте, в разделе Другое.

1.2. Благодарности

Эта книга развивается также благодаря вкладу в нее других людей, поэтому выражаю признательность им:

Глава 2. Фильмы

2.1. Конвертируем VideoCD в MPEG4

Командная строка будет выглядеть так:

mencoder vcd:// -ffourcc DIVX -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -o out.avi

Несколько комментариев. Результат будет записан в файл out.avi. Параметр -oac copy указывает на то, что мы копируем звуковой поток без изменений. В качестве выходного кодека (-ovc) у нас идет lavc, а поскольку он поддерживает несколько форматов, то мы уточняем, какой именно нам нужен - mpeg4.

2.2. Как перегнать фильм DVD в формат MPEG4 (DivX)?

Задача. Перегнать фильм с DVD в DivX/MPEG4, чтобы получить файл такого размера, каков поместится на обычной CD-болванке. Как это сделать?

Нам потребуется утилита mencoder, входящая в состав плейера Mplayer. Перейдите в каталог, куда ходите записать фильм. Вставьте DVD в дисковод, однако не монтируйте его. Есть два метода рипания, вернее, двумя кодеками - FFMPEG и XVid. Первый и конвертирует быстрее, и дает больше возможностей. Здесь изложу способы работы с обоими кодеками. Обратите внимание на ключ -ffourcc DIVX - если его не указать, то другие плейеры/кодеки могут не понять, что видео кодировано в DivX-совместимом формате. То есть, например, вы кодировали фильм в XVid без ключа -ffourcc DIVX. Предположим, у конечного пользователя (который будет смотреть фильм) под Windows нет кодека XVid, а есть только DivX. И вот если вы конвертировали фильм без ключа -ffourcc DIVX, то наш предполагаемый "конечный пользователь" фильм этот посмотреть не сможет - его софт не определит нужный формат.

Вначале - о кодировании XVid'ом. Даем команду, которая рипает фильм с битрейром видео 900, звука 128, и выводит это в файл out.avi:

mencoder dvd:// -ffourcc DIVX -vf scale=512:384 -ovc xvid -xvidencopts bitrate=900 -oac mp3lame -lameopts cbr:br=128 -o out.avi

Если на DVD несколько звуковых дорожек, и вы хотите выбрать русскую, то это делается параметром -alang ru. Вот так:

mencoder dvd:// -ffourcc DIVX -alang ru -vf scale=512:384 -ovc xvid -xvidencopts bitrate=900 -oac mp3lame -lameopts cbr:br=128 -o out.avi

А теперь FFMPEG. Может быть у вас все будет нормально, и вы сможете воспроизвести полученные таким образом файлы и в других плейерах, с помощью других декодеров. У меня раньше так и было. Буду рад письмам об этом - сообщайте, какая у вас система, версия Mplayer, и в каком плейере/какими кодеками вы воспроизводили эти файлы.

mencoder dvd://номер -ffourcc DIVX -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vqmin=2:vqmax=25:vhq:v4mv:trell:autoaspect -vf scale=512:384 -lameopts cbr:br=128:aq=0 -o имя_файла.avi

Параметры таковы:

номер - это номер фрагмента (title), который будет читаться с DVD. Записи на DVD нумеруются. Если на диск записано больше одного фильма, то один может быть доступен под номером 1, второй 2 и т.д. Но часто бывает, что за этими номерами скрываются разные заставки. Поэтому прежде чем перегонять видео с DVD, посмотрите, что за фильм под таким-то номером, командой mplayer dvd://такой-то номер, например: mplayer dvd://1

Другой параметр для mencoder - имя_файла.avi. Это будет имя, под которым сохранится конвертированный файл. В параметре oac мы задаем звуковой кодек, в нашем примере это mp3lame. Для тех, кто не знает - в MPEG4/DivX звук хранится в формате MP3. А Lame - это кодек. Он может быть установлен у вас в системе, а может и не быть. Вот вам ссылка, где взять этот кодек. Чуть дальше мы задем настройки LAME: -lameopts cbr:br=128:aq=0. Это значит, что сжимаем звук с постоянным битрейтом 128 и хорошим качеством. Никогда не записывайте в фильме MP3 с переменным битрейром.

Далее, параметр -ovc lavc задает кодек для видео. В нашем случае этот кодек - lavc. Его качать не надо, он входит в состав Mplayer'а. Передаем в lavc параметры: vcodec=mpeg4:vbitrate=1000:vqmin=2:vqmax=25:vhq:v4mv:trell:autoaspect -vf scale=512:384.

Объяснение. Поскольку lavc поддерживает много алгоритмов сжатия, мы выбираем mpeg4. Значение vbitrate - это какой у видео будет битрейт. Для полуторачасового фильма, чтобы он потом влез на болванку, подходит обычно битрейт от 800 до 1000. Чем больше число, тем больше файл. И наоборот.

Параметр vhq включает режим качественного сжатия, НЕ в реальном времени. Когда фильм сжимается в DivX в реальном времени, то вычислительной мощности вашего компьютера может не хватить, чтобы с должной скоростью обрабатывать видео. В итоге видео получается с рывками, прочими прелестями. Что до режима vhq, то в нем утилита не спешит, прыгая через пень-колоду лишь бы поспеть, а сжимает видео как надо, медленнее, зато ничего не пропуская.

Наконец, еще один параметр - vf scale=512:384. Задаем масштаб картинки. 512:384, по моим наблюдениям, наилучший.

Теперь полный пример:

mencoder dvd://3 -ffourcc DIVX -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vqmin=2:vqmax=25:vhq:v4mv:trell:autoaspect -vf scale=512:384 -lameopts cbr:br=128:aq=0 -o my_movie.avi

2.3. Кодирование фильмов в три прохода

Zero Z. Zeibov пишет:

И еще я бы добавил в главу по перекодированию файлов метод кодирования в три прохода. Он дает возможность более точного выбора размера получаемого фильма (650,700,750 или двухкомпактные фильмы).

mencoder dvd://1 -ovc frameno -oac mp3lame -lameopts vbr=3 -o frameno.avi

после отработки создается файл frameno.avi с одной только звуковой дорожкой, и выдается информация о возможных битрейтах и получаемом размере при его использовании. Дальше первый проход кодирования видео:

mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=битрейт -o movie.avi -vop scale=512:384

и второй:

mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=битрейт -o movie.avi -vop scale=512:384

2.4. Как втолковать файлу, что он - DivX

Допустим, вы конвертировали файл Mencoder'ом с MPEG4/DivX совместимый форматом сжатия, но другой плейер/кодек не хочет понимать, что ваш файл вполне MPEG4. В таком случае можно напрямую "вшить" в файл название совместимого кодека:

mencoder исходный файл.avi -ovc copy -oac copy -ffourcc DIVX -o файл результата.avi

Работает для FFMPEG, XVid - проверено.

2.5. Кодирование скинутого на винт DVD в MPEG4

Допустим, вы скопировали DVD целиком в каталог /mnt/films/movie. Теперь вы хотите конвертировать этот фильм в MPEG4 прямо с винта. Mplayer позволяет играть содержимое DVD из указанного каталога, например:

mplayer dvd://1 -dvd-device /mnt/films/movie

То есть в параметре -dvd-device мы указываем путь к каталогу, куда вы сбросили DVD (а копировать надо, начиная из корневого каталога, то есть вместе с каталогами AUDIO_TS и VIDEO_TS). Подобно Mplayer'у, из каталога может читать DVD-формат и Mencoder. Кодируем в MPEG4 фильм, скопированный с DVD в /mnt/films/movie:

mencoder dvd://1 -dvd-device /mnt/films/movie -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900:vqmin=2:vqmax=25:vhq:v4mv:trell:autoaspect -vf scale=512:384 -lameopts cbr:br=128:aq=0 -ffourcc DIVX -o movie.avi

2.6. Как разбить фильм на два файла

Нам снова поможет mencoder. Допустим, у нас есть здоровенный файл movie.avi. Мы хотим разбить его на две части, файлы part1.avi и part2.avi. Время, на котором фильм разбиваем, пусть будет 1 час 13 минут 16 секунд. Получаем файл part2.avi:

mencoder -ovc copy -oac copy -ss 1:13:16 -o part2.avi movie.avi

Получаем файл part1.avi:

mencoder -ovc copy -oac copy -endpos 1:13:16 -o part1.avi movie.avi

2.7. Русские субтитры в Mplayer

Хотя Mplayer оснащен графической оболочкой, многие пользователи предпочитают вариант плейера без нее. А в этом случае использование субтитров не столь очевидно. Вот что нужно сделать, дабы "консольный" Mplayer показывал субтитры на русском языке:

1. В каталоге .mplayer (точка в начале означает, что каталог - скрытый) создайте символическую ссылку на какой-нибудь TTF-шрифт, например на Arial из Windows. Ссылка должна называться subfont.ttf.

2. В файле /.mplayer/config прописываем кодировку субтитров:

subcp=cp1251

cp1251 - поскольку именно в этой кодировке чаще всего встречаются субтитры на просторах России.

3. Хорошо, если в директории с фильмом лежит только один файл с субтитрами - тогда Mplayer загрузит его автоматически. А если файлов несколько, то нужно указать в командной строке, какой именно надо использовать. Для этой цели служит параметр -sub имя_файла. Например:

mplayer -sub Monty_Python.RU.srt Monty_Python.avi

2.8. Просмотр фильма с несколькими звуковыми потоками

Иногда попадаются диски, на которых MPEG4-фильм записан таким образом, что перевод идёт дополнительным аудиопотоком, и по умолчанию плейер его не видит. С помощью mplayer'а этот второй звуковой поток становится доступным, если запустить фильм командой:

mplayer -aid 2 имя_файла.avi

Здесь 2 - номер потока, обычно перевод идет как второй.

2.9. Заменить в фильме звуковую дорожку

Чтобы заменить в фильме звуковую дорожку и вывести результат в файл out.avi, делаем так:

mencoder исходный_файл.avi -ovc copy -oac copy -audiofile файл_со_звуком.mp3 -o out.avi

2.10. Запись видео с аналоговой камеры

Для черновой оцифровки в MPEG4 подойдет следующая команда:

mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1200:trell:v4mv -oac mp3lame -lameopts cbr:br=128 -tv driver=v4l:input=1:width=320:height=240:amode=1 -ffourcc DIVX -o out.avi tv://

Здесь не самые лучшие параметры сжатия. Обратите внимание на раздел параметров -tv. Тут настраивается оцифровка видео и звука с карты ТВ-тюнера. amode=1 - это запись звука в стерео. input=1 - запись видео со входа Composite 1. Кстати, чтобы оцифровать без сжатия, надо в кодеках выбрать copy, то есть -oac copy -ovc copy. Вместо драйвера v4l можете попробовать выбрать v4l2.

Вот еще хороший пример - если приведенный выше глючит, попробуйте этот: mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:trell -oac mp3lame -lameopts cbr:br=128 -vf pp=lb -tv driver=v4l:input=1:width=512:height=384:amode=1 -ffourcc DIVX -o out.avi tv://

Перед записью на забудьте включить в микшере звуковой карты порт Capture! При записи видео в разрешении, больше оригинального (например, для старых камер VHS-С, как у меня, разрешение по стандарту равно 320x240) надо включить деинтерлейсинг, иначе изображение будет разбито на полосы. Включается деинтерлейсинг ключом: -vf pp=lb.

2.11. Как вытащить звук из фильма в WAV

Да примерно вот так: mplayer -ao pcm -aofile звуковой_файл.wav фильм.avi

Глава 3. Как конвертировать Audio CD в WAV, MP3 и OggVorbis

3.1. Из Audio CD в WAV

Будем использовать утилиту cdparanoia. Чтобы сбросить целый Audio CD на винт, в консоли даем команду:

cdparanoia -BZ

Если вы хотите сбросить конкретные дорожки, например от второй по восьмую, делаем так:

cdparanoia 2-8 -B -Z

Ежели диск очень запиленный и с царапинами, убираем из командной строки параметр -Z (который отключает функции чтения поврежденных CD).

3.2. Из WAV в MP3 и наоборот

Для примера нам понадобится MP3-кодировщик lame. В каталоге с вавками даем команду:

find . -iname "*.wav" -exec lame '{}' ';'

Тем самым вы кодируете в Mp3 все wav-файлы в этом каталоге. Битрейт по умолчанию = 128. А вот так кодируем с битрейтом 320 и наилучшим качеством: find . -iname "*.wav" -exec lame '-b 320 -q 0' '{}' ';'

Сжать один wav-файл в MP3: lame myfile.wav

Декодировать все MP3 в текущем каталоге в WAV: find . -iname "*.mp3" -exec lame '--decode' '{}' ';'

3.3. Из WAV в OggVorbis

Перегнать из WAV в OggVorbis еще проще, нежели в MP3. Даем команду: oggenc *.wav, или просто oggenc *, если в каталоге только один wav'ы.

Сжать wav'ы в Ogg при наивысшем битрейте: oggenc -q 10 *.wav

Сжать один wav в Ogg: oggenc myfile.wav

3.4. Из MP3 в WAV'ы

В каталоге с эмпешками, которые хотите конвертировать, дайте команду:

find . -iname "*.mp3" -exec lame '--decode' '{}' ';'

Глава 4. Запись на CD/DVD-болванки

4.1. Wodim и запись на болванку

Ранее, для записи на CD/DVD, был популярен пакет cdrtools, однако после смены его автором лицензии, на основе cdrtools был создан GPL-проект cdrkit, в состав которого вошли утилиты wodim (аналог cdrecord), icedax (аналог cdda2wav) и cdda2wav (аналог cdda2wav).

wodim - эта утилита входит в любой современный полновесный дистрибутив Linux и считается стандартом де-факто среди программ записи на CD. Она умеет записывать образ диск на носитель.

Допустим, у нас уже есть образ диска (о том, как это сделать, читайте в разделе Создаем образ диска). Файл с ним для примера называется my_cd_or_dvd.iso. Хотим записать его на носитель. В простейшем случае даем примерно такую команду:

wodim dev=/dev/hdd -fs=16M -speed=4 -eject -v my_cd_or_dvd.iso

Здесь параметры таковы:

4.2. Запись Audio CD

Писать аудио можно в двух режимах - TAO (track at once) и DAO (disk at once). DAO более нов, TAO добавляет между дорожками паузы длиной в 2 секунды, а DAO - не добавляет. Однако, диски, записанные в режиме DAO, не читаются некоторыми старыми музыкальными центрами, плейерами и т.п. Поэтому имеет смысл записывать аудио CD в режиме TAO, который читается лучше. Режим этот включается параметром -tao (а DAO, соответственно, -dao). Пример:

wodim dev=/dev/hdc -tao -eject speed=4 -pad -audio *.wav

Тонкость - использование ключика -pad. Размер аудиофайла, дорожки, должен быть кратен числу 2352 (байтов). Иначе cdrecord откажется его записывать. Параметр -pad позволяет обойти это ограничение, заставляя cdrecord автоматически дополнять нулями размер/длину дорожки до кратности 2352. Короче говоря, используйте -pad.

4.3. Создаем образ диска

Способ первый, или как создать точную копию CD(не аудио). Даем в консоли команду:

dd if=/dev/cdrom of=mycd.iso

Ждем. Создается ISO-образ диска, вставленного в /dev/cdrom. Образ записывается в файл mycd.iso.

Еще метод: readcd dev=/dev/hdc f=mydvd.iso

И способ другой, полезный, ежели вам необходимо сделать образ какой-нибудь директории, например /mnt/music/nirvana. В консоли даем команду:

genisoimage -f -v -J -o mycd.iso /mnt/music/nirvana

Обратите внимание на ключик -f в строке параметров. Он говорит genisoimage, чтобы она считывала символические ссылки из указанного каталога и помещала в образ реальные файлы вместо симлинков.

Проверим, насколько правильно создался образ. Мы можем подмонтировать его к некой директории и войти в образ диска, как в обычную директорию. Создаем директорию test и даем команду:

mount -t iso9660 -o loop mycd.iso test

Заходим в test. Видим содержимое ISO-образа? Вот и ладушки.

4.4. Запись DVD

Если у вас есть заранее подготовленный образ DVD, пишем его как на обычную болванку, с помощью wodim. Если же вы хотите записать на DVD содержимое некоего каталога (например, /mnt/image), то используейте команду:

growisofs -Z /dev/hdd -f -R -J /mnt/image

Параметр -Z применяется, если мы начинаем новую сессию. А чтобы добавить другую сессию, вместо -Z пишем параметр -M: growisofs -M /dev/hdd -R -J /mnt/image2

Глава 5. Поиск файлов и в файлах

5.1. Поиск файлов

Для поиска файлов можно использовать консольные утилиты locate и find.

Найти в текущем каталоге и вложенных в него каталогах все файлы, изменившиеся за последние два дня: find . -ctime -3

Найти в текущем каталоге все файлы, изменившиеся за последние 13 минут: find . -amin -13

Найти в текущем каталоге все файлы c расширениями .с и .h: find . -name '*.[ch]'

Найти в текущем каталоге все файлы c расширением txt: find . -iname '*.txt'

Найти в текущем каталоге все файлы c расширением txt и содержимым, в котором есть слово linux: find . -name '*.txt' | xargs grep "linux"

Утилита locate служит для мгновенного поиска файла или директории. Скорость обеспечивается тем, что locate обращается к базе данных, в которой хранится информация о расположении файлов на разделах дисков. Если таковой базы не существует либо она устарела, обновить и создать ее можно данной под root'ом командой:

locate -u

Для поиска же, например, всех файлов, которые начинаются с doom, можно дать команду: locate doom

Искать doom вне зависимости от регистра: locate -i doom

Глава 6. Работа с архивами

6.1. Упаковка/распаковка каталогов и файлов

Упаковать каталог mydirectory в архив mydirectory.tar.gz: tar --gzip -c -f mydirectory.tar.gz mydirectory

Распаковать mydirectory.tar.gz в текущий каталог: tar --gzip -xf mydirectory.tar.gz

Создать архив mybook.tar из содержимого директории mybook: tar -cf mybook.tar mybook

Упаковать файл mybook.tar архиватором bzip2, получая на выходе архив с именем mybook.tar.bz2: bzip2 -zfkv9 mybook.tar

6.2. Быстрая пересылка каталога по SSH

Zero Z. Zeibov прислал пример способа, которым можно на лету сжать и потом распаковать каталог, пересылаемый на удаленную машину по shh. Выглядит это так:

tar -cjf - /dir/to/copy | ssh user@remote 'cd /where/to/ && tar -xjf -

6.3. Разбивка большого файла на части

Допустим, у нас есть большой файл myfile.wav и мы хотим разбить его на куски по 1200 килобайт, чтобы записать на трехдюймовые дискеты. В помещенном ниже примере имена файлов-кусочков будут начинаться с префикса myfile.wav.part.. Итак:

split -b1200k myfile.wav myfile.wav.part.

А чтобы собрать эти файлы воедино, восстановив первоначальный большой файл, дадим такую команду:

cat myfile.wav.part.* > myfile.wav

Глава 7. Винты и CD-ROM'ы

7.1. Проверка читабельности CD/DVD

Даем команду: dd if=/dev/cdrom of=/dev/null и ждем, прочитается ли все содержимое вставленного в привод диска или нет.

7.2. Управление скоростью CD-ROM'а

В дистрибутив любого Linux'а входит утилита hdparm, которая, кроме всего прочего, может управлять скоростью CD-ROM'а. Достаточно лишь дать примерно такую команду:

hdparm -E 20 /dev/hdc

Здесь 20 - устанавливаемая скорость, а /dev/hdc - ваш CD-ROM. Для тех, кто не знает, приведу полезную табличку соответствий:

IDE-устройство Устройство в Linux
IDE 1 (master) /dev/hda
IDE 1 (slave) /dev/hdb
IDE 2 (master) /dev/hdc
IDE 2 (slave) /dev/hdd

Итак, если ваш CD-ROM подключен как master на канале IDE2, то в Linux его устройство будет называться hdc, а полный путь к нему - /dev/hdc.

Чтобы установить скорость CD-ROM при запуске Linux, просто допишите в конец файла etc/rc.d/rc.local примерно такую команду: /sbin/hdparm -E 20 /dev/hdc

Полный путь к hdparm тут необходим. И еще - добавьте пустую строку в конец файла.

7.3. Скорость CD-ROM, более простой метод

Один из методов управления скорость CD-ROM'а основан на использовании команды eject и, что важно, не требует привилегий root. Для установки новой скорости запускайте eject в следующем формате: eject -x скорость директория_к_которой_подмонтирован_CD

Например, установить скорость 20:

eject -x 20 /mnt/cdrom

7.4. Выявление сбойных секторов штатными средствами

Чтобы найти на диске сбойные секторы, можно использовать две стандартные команды. Для файловой системы ext3 это: fsck.ext3 -v -n -c -c устройство

А для ext2: fsck.ext2 -v -n -c -c устройство

Пример:

fsck.ext3 -v -n -c -c /dev/hdb11

Команду надо запускать при отмонтированном разделе диска. Двойной параметр -c нужен для включения безопасной проверки на чтение/запись.

Глава 8. Обработка текста

8.1. Форматирование текста по ширине

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

fold --width=ширина_строки -s исходный_файл > файл_вывода

Например:

fold --width=72 -s my.txt > my_formatted_text.txt

Здесь мы задали ширину строки в 72 символа. Обрабатывается файл my.txt. Результат записывается в файл my_formatted_text.txt. Параметр -s нужен для того, чтобы перенос строки осуществлялся по словам, а не по символам.

8.2. Синтез речи

Прочитать текст вслух можно с помощью речевого синтезатора Festival, который выходит во многие дистрибутивы Linux. Например, мы хотим услышать слово "hello". Даем такую команду:

echo "Hello"| festival --tts

Глава 9. Если случилась беда

Linux очень трудно привести в нестабильное состояние. Но даже если это произошло, и вам кажется, что система зависла, не спешите жать на Reset (кстати, в Linux это вообще не рекомендуется).

Во-первых, если вы работали в графической оболочке, попробуйте убить X-сервер. Делается это одновременным нажатием Ctrl-Alt-Backspace. После чего вас выкинет в консоль. Перезапустить графическую оболочку вы сможете командой startx.

Если же ничего уже не помогает, по-прежнему работают SysReq-клавиши. Даже когда вам кажется, что система висит намертво. Ниже привожу небольшой список этих клавиш. Везде, где написано SysReq, следует нажимать PrintScreen/SysRq. Итак:

Alt-SysRq-S - сбросить дисковые буферы на винчестер, то есть синхронизировать кэш с реальными записями на диске.

Alt-SysRq-U - отмонтировать (unmount) разделы дисков. Всегда делайте это ПОСЛЕ синхронизации.

Alt-SysRq-O - останов системы, аналог нажатия на Power. Перед этим надо синхронизировать кэш и отмонтировать разделы (именно в такой последовательности).

Alt-SysRq-E - убить текущий процесс, в котором вы работаете. Эффект - вас выкидывает в консольный логин, откуда, снова войдя в систему, лучше всего перезагрузиться командой reboot.

Приложение A. Об авторе

Петр Владимирович Семилетов, род. 1977 в Киеве, которого уже почти не осталось. ИТ-журналист, писатель, композитор, звукорежиссер, музыкант, режиссер любительских фильмов и мультиков. Разработчик текстового редактора TEA. Домашняя страница автора здесь - http://www.roxton.kiev.ua.

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.