Материал просмотрен 599 раз(а)

Итак, пришла пора опубликовать решение квеста № 3 по анализу уровня выполнения Linux. Приславших правильный ответ было не очень много (меньше 1), поэтому чемпионом становится … чемпионом становится… Пока никто!

Ладно, вернемся к нашей задачке.

Имеется файл etc.tar.gz, в который запакована структура каталога /etc какой-либо машины.

Нужно набрать такую команду (понятное дело, что серию команд ;)), чтобы на экран выдалась цифра, показывающая уровень выполнения системы по умолчанию (той системы), при этом без создания временных файлов.

Квесты админа

Квесты админа

Итак, решение:

Для Debian:

$ zcat etc.tar.gz | grep -a "initdefault" | cut -d":" -f 2

Для Ubuntu:

$ zcat etc.tar.gz | grep -a "env DEFAULT_RUNLEVEL=" | cut -d"=" -f 2

Немного объясню.

zcat выводит содержимое файла (аналогично cat), дальше мы фильтруем вывод нашим любимым (не всеми) grep-ом. Кстати, отличная программка для фильтра текстов. Ну и наконец, как нам из выделенной строки (а grep фильтрует именно строки), получить нужное значение – тут на помощь приходит утилита cut, которая вырезает нужный нам фрагмент. Параметром к ней выступает разделитель: -d и номер столбца -f.

То есть, если мы, например, имеем файл значений, разделенных символом ” ” (пробел), и нам нужно вытащить 3-е слово оттуда, то будет:

$ cut -d" " -f 3

Всё очень просто.

Разумеется, решить эту задачку можно множеством способов, может даже более изящных и красивых, но это на ваше усмотрение! Всем удачи, увидимся в следующих квестах!