С юниксом я до некоторых пор был в достаточно прохладных отношениях — мы встречались довольно редко, каждый раз у него были новые дистрибутивы и формы. То в университете Солярис удивлял своим UI, то на хостинге каком-то надо покопаться через ssh. В какой-то момент я стал пристальней посматривать за его возможностями, удивляясь популярности. Наконец я поставил все основные дистрибутивы на виртуальные машины. Ленивый Slackware сопротивлялся больше всех. На этом казалось можно было бы и поставить точку в нашем романе. Но теперь я работаю на маке и приходится разбираться основательней. Основное преимущество *никсов это конечно консоль и гибкая обработка файлов и текста из неё.
Итак, есть много основанных на unix систем — Solaris, MacOSX, FreeBSD и в частности Linux, у которого основные дистрибутивы: Debian — Ubuntu, Fedora — Red Hat, Slackware — Suse, Gentoo, Mandriva
Первое с чем столкнётся пользователь терминала это его интерфейс, hotkeys для быстрой работы
| Tab | Автодополнение пути (для папок и файлов) при навигации | 
| ↑ | Предыдущая комманда | 
| CtrlC | Убить исполняемую программу (Cancel) | 
| CtrlZ | Переключить вид из программы. Комманды fg, jobs, bg помогают управлять контекстом | 
| Q | Выход из некоторых программ (как например man — помощи) | 
Навигация
Теперь основная часть — ходить по файловой системе, будь то локальной или удалённой.
| ls | список файлов и папок | 
| cd | перейти в папку | 
| pwd | узнать в какой папке я нахожусь | 
| tail | быстрый просмотр конца файла (полезно для логов) | 
| cat | быстрый просмотр содержимого файла | 
| tree -d -L 2 | двух уровневое дерево папок | 
| find . -name *txt | поиск файла по имени | 
| grep «needle» file.txt | поиск по паттерну | 
| whoami | узнать какой я пользователь | 
| uname -a | узнать что за ядро (и может дистрибутив) | 
Файловая структура
Что-бы ходить по файловой системе, надо понимать по какому принципу дерево построено, и хотя в разных дистрибутивах оно немного отличается, стандарт FSSTND такой..
| FSSTND Стандарт | Suse 11 | Mac OS 10.7 | Описание | 
| boot | mach_kernel | Файлы загрузчика. Lilo и образ ядра | |
| tmp | private/tmp | Временные фейлы для бута. Остальным — в /var/tmp | |
| sbin | Системные комманды нужные при буте | ||
| bin | Пользовательские комманды нужные при буте | ||
| proc | Виртуальная папка настроек и процессов ядра | ||
| dev | Подключённые устройства | ||
| mnt | Volumes | Доступные через файловую систему устройства | |
| lib | Общедоступные библиотеки root-уровня | ||
| etc | private/etc | Конфигурационные файлы, зависящие от машины | |
| root | private/var/root | Домашняя папка главного пользователя | |
| home | Домашние папки остальных пользователей, в том числе ftp, httpd, samba-сервисов | ||
| usr | Cтатичные файлы программ, библиотек, игр, документации, утилит не используемых при загрузке | ||
| var | private/var | Часто меняющиеся файлы — почтовые сообщения, логи, временные файлы | |
| cdrom | |||
| opt | + | ||
| image | |||
| lost+found | |||
| media | |||
| selinux | |||
| srv | Папка для апача, корень документов вместо htdocs | ||
| net | маунт для NFS дисков | ||
| private | сюда сгруппированы разные папки для ограничения доступа | ||
| cores | место для сохранения дампов памяти при падении.. можно почистить при недостатке места | ||
| Applications | Все установленные пользователем приложения | ||
| Developer | |||
| Library | Общедоступные файлы (например шрифты) межпрограммного уровя | ||
| Network | |||
| System | |||
| Users | домашние папки настоящих пользователей, расширение home | ||
Комбинирование
Удобство синтаксиса юникса как я уже сказал в гибкости, а именно в символах управления, которые используются с несколькими коммандами
| | | труба — передача данных от одной комманды в другую, например ls -F | grep / | 
| ; | последовательный запуск комманд, например date;cal | 
| > | перенаправление стандартного вывода в файл с перезаписью, например ls / -F > list.txt | 
| >> | перенаправление вывода в файл с добавлением в конец | 
Обработка файлов
| mv | переименовывание | 
| rm | удаление | 
| rm -rf | рекурсивное удаление | 
| cat | объединить файлы и выдать в поток | 
| paste | объекдинить строки файла(-ов) | 
| ln | ссылка на файл или папку | 
| split | бинарное разделение файла | 
| join | построчно объединяет два файла по общему слову | 
| cut | построчно (и/или) поколоночное вырезание текста из файла как из матрицы символов | 
| cat | последовательное объединение двух файлов и вывод в терминал (или файл) | 
| sort | отсортировать строчки по алфавиту | 
| uniq | оставить уникальные строчки | 
Установка программ
Поскольку *никсы занимаются целым спектром разных задач, следовательно разные дистрибутивы, со своими установщиками.
| Дистрибутив | Установщик пакетов | |
|---|---|---|
| Gentoo | emerge | |
| Debian | apt-get update apt-get install … dpkg —install | |
| Fedora | rpm -ivh … yum -y install … | Гляньте также на возможные репозитории | 
| Mandriva | urpm | |
| Slackware | yast, zypper gzip, lzma | 
Кроме системных общих установщиков, есть и специфичные под конкретные нужды установщики
- port install mongodb — Установщик macports
- pear install phpunit/PHPUnit
- pecl install mongo
- gem
Текстовые редакторы
| Vi | Vim | Nano | Gedit | Mate | Pico | Emacs | |
| Ubuntu | + | + | + | — | |||
| Mac OS Lion | + | + | — | + | + | + | |
| Debian 5 | + | + | + | — | + | — | |
| Suse 11 | + | — | — | — | — | — | 
vi readme.txt
i — режим редактирования
esc — выход в общий режим
ZZ — сохранить и выйти
» — режим консоли
!q — выход без сохранения
wq — выход с записью
Архиваторы
| gunzip | распаковать .gz | 
| bunzip2 | распаковать .bz2 | 
| tar -jxvf | распаковать .tar | 
Процессы и диагностика
| top | запущенные процессы. См. также htop, pstree | 
| netstat | открытые соединения например открытые порты в линуксе: netstat -atp | grep -i «listen» или netstat -tupl на маке: lsof -n -i4TCP | grep LISTEN | 
| lsof | открытые файлы (например открытые порты в маке: sudo lsof -i -P|grep -i «listen») | 
| killall | убить процесс по имени. Иногда приходится убивать точечно (например подвисший mysql) по PID: kill -9 1566 | 
| whereis | подсказка где находятся файлы процесса | 
| df -h | отчёт о свободной HDD-памяти (в читаемой форме). Что-бы найти большие файлы на сервере: find . -type f -size +50000k -exec ls -lh {} ; | awk ‘{ print $9 «: » $5 }’ | 
| w | список пользователей в данный момент | 
| opensnoop | слежка за доступом к файловым указателям | 
Работа с серверами
Практически все постоянно работающие программы — демоны находятся в /etc/init.d/ и имеют комманды start, stop, restart. Необходимы права рута для их управления. В некоторых случаях (Fedora) может прийдётся использовать /sbin/service для доступа к ним
| ssh | Удалённое соединение | 
| scp | Безопасное сетевое копирование через SSH с одного сервера на другой. Флаг -r делает рекурсивное копирование папок. Например: scp -r root@example.com:/srv/htdocs/ /home/html_sources/ | 
| ab | (Apache Bench) — нагрузочное тестирование (например с параметрами -r -c 100 -n 1000) | 
| nc | (netcat) — прямое сокет-соединение | 
| rsync | Синхронизация файлов rsync -av -e ssh --progress /local/source [email protected]:remote/target | 
Apache
На маке апач2 встроен (включается в настройках sharing) и в нём имеет смысл включить .htaccess (см. директиву AllowOverride)
| Linux | Mac OSX | |
| Запуск | /etc/init.d/httpd restart/etc/init.d/apache2 restart | /etc/apache2/ /usr/sbin/apachectl restart /private/etc/apache2/httpd.conf/private/var/log/httpd/access_log | 
| Логи | /private/var/log/apache2/access_log /private/var/log/httpd/access_log | 
PHP
| Suse 11 | Mac OSX | 
| /etc/php5/apache2/php.ini /usr/share/php5/ /usr/lib64/php5/ | /private/etc/php.ini /usr/local/php5/lib/php/extensions/ | 
MySQL
Настройки MySQL по умолчанию используются зашитые (их можно спросить у mysqladmin посмотреть), для перезаписи на свои, надо в /etc положить my.cnf файлик (образец есть в папке support-files). Самые полезные утилиты в bin папке это mysql (прямой консольный доступ к серверу) и mysqldump (для миграции больших баз).
Если вы сидите на маке, но хочется через виртуалку использовать sqlyog, можно расшарить соединение..
CREATE USER 'your_user_id'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL ON your_database_name.* TO your_user_id@'%' IDENTIFIED BY 'your_password';
При быстрой работе с самим сервером наиболее востребованы комманды
SHOW PROCESSLIST;
SHOW DATABASES;
CHECK TABLE;
REPAIR TABLE;
Управление демоном
| Linux | Mac OSX | 
| /etc/init.d/mysql restart | /usr/local/mysql/bin/mysqld_safe /usr/local/mysql/bin/mysqladmin shutdown |