Итак, пришла пора опубликовать решение квеста № 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
Всё очень просто.
Разумеется, решить эту задачку можно множеством способов, может даже более изящных и красивых, но это на ваше усмотрение! Всем удачи, увидимся в следующих квестах!
Comments: