UNIX Way

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

Примечание: дружественный интерфейс - это простой и понятный интерфейс графических сред, при этом он позиционируется как друг, равный пользователю. Однако для тех, кто не считает себя равным какой-то программе (в особенности от Microsoft), существует противоположный ему "рабский интерфейс" - командная строка выглядит менее приветливо, но при некотором навыке из программы можно извлечь всё возможное и заставить её пахать, как раба.

Основные возможнгости командной строки в Unix

Help

Каждая уважающая себя программа должна после следующей команды вывести справку (здесь и далее $ будет означать командную строку):

$ foo --help
$ foo -h


Того же эффекта можно добиться при помощи

$ man foo (от manual)
$ info foo (новый man)

Конвейер

Следующая команда демонстрирует возможности конвейера в Unix:

$ cat mbox | grep "Subject:" | sort | uniq

Команда cat извлекает почту из mbox и с помощью конвейера (значок |) передаёт её grep, работающую с регулярными выражениями, та находит все письма с "Subject:", затем по конвейеру всё это сортируется и фильтруется по уникальным именам.

Перенаправление ввода/вывода

В Unix большое внимание уделено концепции файла. Файлом могут быть и устройства, и каталоги, и т.д. Есть также стандартные устройства: stdin - поток ввода (с номером 0), stdout - поток вывода (с номером 1), stderr - вывод ошибок (имеет номер 2). Есть устройство "мусорная корзина" - dev/null/, dev/zero - устройство, состоящее из одних нулей. С помощью ">" можно перенаправить вывод в любой файл.

(1) $ ls
(2) $ ls > myfile.txt
(3) $ ls >> myfile.txt
(4) $ sort < myfile
(5) $ make > log 2>&1
(6) $ make 2>&1 \tee log


(1) Показывает список файлов.

(2) Перенаправляет вывод в myfile

(3) То же самое, но создаётся две копии.

(4) Перенаправляет myfile в поток вввода.

(5) stdout и stderror будут сцеплены и вывод будет произведён в log.

(6) С помощью разветвителя \tee вывод будет осуществлён из stdout в файл log и на экран.

Shell скрипты.

Пусть у нас есть задача: преобразовать файлы *.eps из папки eps в png/*.png. Для этого можно воспользоваться следующим shell скриптом.

 
#!/bin/sh
  for i in eps/*.eps;
    do convert "$i" png/'basename "$i" .eps'.png; 
  done

Дистрибутивы Linux

  • Debian
  • RedHat/Fedora
  • SuSe
  • Slackware
  • Mandrake

  • Отечественные дистрибутивы
  • ASP Linux
  • ALT Linux

  • Для упрощения установки можно использовать Knoppix или Live CD.
    Полностью от Windows отказаться сложно, поэтому существуют средства для работы с одной ОС из под другой, например VMWARE; cooperative Linux. Работая с cygwin, можно откомпилировать удовлетворяющую POSIX стандарту программу под Windows, однако она будет сопровождена увесистой *.dll; mingw (minimal GNU Win) позволяет сделать то же, но без этой проблемы.