Какие Unix'ы бывают в природе?
Генеалогическое древо
Почти сразу после рождения Unix раскололся на две ветви - ветвь как бы "прародительская", которой владеет "официальный" хозяин торговой марки Unix - Unix System Laboratory - фактически ветвь коммерческая. И проект Исследовательского института Беркли - ветвь в основном свободных - бесплатных Unix'ов.
System III System 6 USL <-- Раскол --> Berkeley System 7 BSD 4.0 Unix V 3.1 Unix V 3.2 <------- BSD 4.2 / BSD 4.3 System V Release 4 / Заимствования / BSD 4.4 Конец проекта Беркли SVR4.0 < < ____________________________________ SVR4.1 SVR4.2
Не так давно USL таки окончательно "засудила" BSD за использование фрагментов кода с копирайтом AT&T, что в немалой степени способствовало закрытию проекта BSD. Предпоследний из крупнейших поставщиков коммерческих BSD-подобных систем - Sun/SunOs перешли на линию SVR4. Торжественно и официально объявлено, что SVR4 является единственным наследником, объединившим лучшие решения, пришедшие из Unix V и BSD. Последним из могикан остается DEC: его OSF/1 для Alpha AXP - немного искалеченный, но все же достаточно близкий к корням BSD 4.3.
Unix'ы для IBM/PC
Некоммерческие или условно бесплатные
BSD/OS 2.0 BSDi/386 Недорогой коммерческий. Хорошо поддерживается. Поддерживает бинарную совместимость с SCO Unix
386bsd BSD 4.3 для "Интеловской" платформы
FreeBSD 4.10 Самая качественная сеть. Дабы не связываться с USL, в нем полностью заново переписаны куски ядра, на которых стоял копирайт AT&T.
Linux 2.6.13 Самый популярный среди бесплатных Unix'ов. Число инсталляций оценочно - десятки миллионов. Непрерывное совершенствование силами сотен добровольцев довело его до уровня довольно надежной, быстрой, качественной и удобной системы, пригодной для работы как в качестве графической рабочей станции, так и интернет-сервера. Поддерживает больше всех приложений и hardware. Поддерживает спецификации iBCS, и потому может выполнять коммерческие приложения для SCO, в частности, Oracle и Informix. В Linux реализованы клиент и сервер Netware и Samba. Эмулятор MS Windows WABI - работоспособен.
Коммерческие Unix'ы
UnixWare 2.1 SVR4.2 от SCO. Совместима с сетями Windows и Netware. До сих пор не доведена до ума сеть. Поддерживает мультипроцессорные PC. После того как ее у Novell перекупило SCO, будущее этой системы туманно.
Solaris 2.10 SVR4.0 от SunSoft. Совсем как на Sun'е. В принципе, это должно говорить само за себя.
SCO Unix 4.0 SVR3.2 когда-то был лидером по количеству установок среди всех Unix'ов для PC. Старая надежная отлаженная система. Поддерживает достаточно много hardware. Поддерживает мультипроцессорные PC. Непомерно дорог. Морально устарел. Имеет проблемы с русификацией. Медленный.
ISC Unix 3.2 Надежен и компактен в работе. Морально устарел.
Unix'ы, поставляемые производителями компьютеров
Выбирая платформу, мы автоматически получаем с ней "ее собственный" Unix.
С точки зрения удобства и цельности администраторского управления самые приятные из них - HP-UX 11.11 и AIX.
А самые распространенные -
Linux 2.6 и FreeBSD 4.10 - среди некоммерческих
Solaris 2.10 и HP-UX/11 - среди коммерческих
Команды поиска GREP и FIND
Команда grep/egrep
"фильтрует" строки - оставляя только "подходящие" под шаблон
egrep шаблон [ file ... ]
В шаблон могут входить обыкновенные символы (представляющие сами себя), а также - спецсимволы, выполняющие служебные функции шаблона: . * ^ $ [ ]
- . - любой произвольный символ
- * - "множитель" (предыдущий символ любое число раз)
- .* - любая последовательность символов
- ^шаблон - привязываем шаблон к началу строки
- шаблон$ - привязываем шаблон к концу строки
- [символы] - любой один символ из тех, что стоят в скобках
Вывести всех привелегированных пользователей:
egrep ':0:0:' /etc/passwd
Вывести всех непривелегированных пользователей:
egrep -v ':0:0:' /etc/passwd
Вывести всех пользователей, имена которых начинаются с букв a,b,e,d
cat /etc/passwd | grep "^[abed].*"
Команда find
find рекурсивно обходит указанные каталоги и файлы, проверяет для них выполнение указанных условий и может вдобавок выполнять с найденными файлами указанные действия. Например, самое простое действие - распечатать имя файла.
find файл [ ... ] ключи/условия/действия
- -name "*.c" - простое имя подходит под шаблон *.c
- -type f - брать только обыкновенные файлы
- -type d - брать только каталоги
- -size +500 - файлы размером БОЛЬШЕ 500*512 байт
- -mtime -3 - дата модификации МЕНЬШЕ 3-х дней
- -newer filename - дата модификации нашего файла МЕНЬШЕ, чем у заданного файла filename
ВНИМАНИЕ: Команда find использует стандартные SHELL'овские шаблоны. Команда grep использует шаблоны другого формата, называемые регулярными выражениями.
Пример.
Напечатать имена всех обыкновенных Си-шных файлов, изменившихся за последние 4 дня в текущем каталоге и его подкаталогах.
find . -type f -mtime -4 -print
Уничтожить все файлы с окончаниями *.bu, *%, которые не менялись больше месяца.
find / \( -name "*.bu" -o -name "*%" \) -type f \ -atime +30 -exec rm {} \;
запись "rm {} \;" - обозначает команду Unix, которая будет выполняться для всех таких найденных файлов. Вместо значка "{}" будет подставляться каждый раз имя найденного файла. Естественно, что таким образом мы их все и уничтожим.