В разработке программного обеспечения все меняется с невероятной скоростью — в том числе инструменты, которые мы используем. Это происходит в результате совершенствования аппаратной части, инфраструктурных сред. Иногда старые инструменты плохо адаптируются к реалиям, поэтому они в конечном итоге исчезают, и на замену им приходят новые утилиты. "Все новое — лучше, чем старое" — девиз, который не всегда применим для утилит в Linux. Но все же исключения есть. В статье под катом разработчик Хосе Висенте Нуньес* рассказывает о нескольких устаревших инструментах, которые вы, возможно, все еще используете. А также о том, чем их можно заменить. Автор объясняет, почему вам следует переключиться на эти улучшенные альтернативы, которые обеспечивают ту же — а в некоторых случаях даже большую — функциональность. Список составлен в произвольном порядке. *Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис. Уважаемая многими команда grep — один из лучших примеров философии операционной системы Unix: Пишите программы, которые выполняют одну задачу и делают это хорошо. Пишите программы для совместной работы. Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс. Инструмент egrep (extended grep) использует регулярные выражения для сопоставления строки. Однако egrep устарел, и теперь его имеет смысл заменять обычным grep с флагом grep -E. Например: Оба примера выведут соответствующие строки, которые начинаются с буквы j или f в файле /etc/passwd. Чтобы получить больше примеров, скачайте эту шпаргалку: Linux grep command cheat sheet. Другой пример, добавление нового флага — fgrep. Команда fixed grep использует фиксированную строку для сопоставления (без оптимизации, поэтому она быстрее, чем регулярное выражение). Утилита fgrep легко заменяется на grep -F. Посмотрим в сравнении: Для инструмента, обеспечивающего аналогичное поведение, использовать флаги более естественно. Нам нужно знать, что grep с флагом может использовать регулярные выражения или выполнять точный поиск. Введите «Y», если вы когда-либо пытались получить IP-адрес сервера следующим образом: Альтернативой nslookup является dig. Вот пример, аналогичный приведённому выше: Еще один пример. Ниже в интерактивном режиме показано, как получить запись указателя (PTR) того же сервера: Аналог команды dig выглядит так: Команда dig может делать то, чего не может nslookup. Например, с ее помощью вы можете запросить передачу доменной зоны в формате файла зоны (включая все типы записей), чтобы сделать резервную копию зоны вашего домена: Но и nslookup может делать то, чего не может dig, например, дружественный интерактивный режим, который очень полезен при изучении доменных зон DNS. Также nslookup может работать в неинтерактивном режиме. В чем же разница? Утилита dig использует системные библиотеки операционной системы для разрешения имен (local Domain Name System resolver library), а nslookup — нет. В результате они могут вести себя по-разному при выполнении запросов. На самом деле nslookup планировался к выводу, но не был заменен на dig (или host). Обратимся к "Википедии": nslookup — программное обеспечение сервера имен BIND. В начале... при разработке BIND 9 Internet Systems Consortium (ISC) планировал отказаться от nslookup в пользу host и dig. Это решение было отменено в 2004 году с выпуском BIND 9.3, и с тех пор остается неизменным. Так что, зная особенности, вполне логично использовать оба инструмента. Вы можете использовать ifconfig для получения информации о сетевых интерфейсах и изменения их настроек. Например: Однако ifconfig был заменен на ip. Вот как сообщается список сетевых интерфейсов с помощью ip: Еще один полезный инструмент — route. Используйте следующую команду, чтобы проверить таблицу маршрутизации: Команда ip также может отображать таблицу маршрутизации. В следующем примере показано, почему этот инструмент взял верх (думаю, помимо прочего, дело в формате его вывода): Еще одна утилита, которая была заменена, это netstat. С помощью netstat вы, среди прочего, можете увидеть список активных подключений. Например, чтобы просмотреть список активных TCP-соединений (listening) на вашем сервере без разрешения имен, введите: В этом случае заменой является команда ss: Отсутствие технического сопровождения стало причиной вывода этих инструментов. Согласно той же "Википедии", их место заняли более новые утилиты: Многие дистрибутивы Linux (например, ArchLinux, RHEL 7 и выше) отказались от использования ifconfig и route в пользу программного пакета iproute2, который включает поддержку всех общих функций ifconfig(8), route(8), arp(8) и netstat(1). Он также включает в себя поддержку multicast-конфигурации, управление туннелями и виртуальными ссылками, контроль трафика, низкоуровневую настройку IPsec и другие функции. Важно следить за новейшими инструментами, поскольку разработчики исправляют ошибки и добавляют полезные функции, которых может не быть в старых версиях. Это помогает нам повышать продуктивность. Старое программное обеспечение, как правило, не получает исправления багов. Ваша система может оказаться под угрозой. Как мы убедились на примере nslookup, не каждое заявление о том, что инструмент устарел, верно. В рамках домашнего задания советую вам убедиться, что ваши утилиты находятся в актуальном состоянии. Делитесь в комментариях своим мнением об альтернативных инструментах Linux, вариантах их применения и эффективности по сравнению с устаревшими аналогами. А чтобы получать больше интересного контента, подписывайтесь на наш хабр-блог: мы регулярно переводим статьи зарубежных авторов и делимся экспертизой наших сотрудников.  Руководитель инженерного отдела