Доброго времени суток всем! Командная строка Linux очень мощная, но многие команды из раза в раз приходится набирать одни и те же, а аргументы часто занимают большую часть командной строки. Если вы согласны — добро пожаловать.

Я накопил некоторый список скриптов, которыми пользуюсь каждый день и мне интересно поделиться своими наработками с обществом и менее опытными товарищами, а так же почерпнуть опыт от более опытных сочувствующих и дополнить их.

Накопилось множество скриптов:

1. textfind — скрипт из публикации: habrahabr.ru/post/135497 — очень полезен в купе с Suricata/Snort в качестве IPS.
2. lschanged — список 5 последних изменённых файлов — полезно, если отвлёкся и нужно вспомнить, какими файлами ты занимался.
3. prettyuser — очень полезный скрипт, если установил поверх системы какой-нибудь софт, который шёл с «предустановленным» юзером — удобно посмотреть, в каких группах он находится.
4. memhungry — иногда полезно узнать, сколько памяти жрёт конкретный процесс.
И многие другие…

В последнее время мне часто приходится переносить эти скрипты между новыми, только установленными системами. Поэтому я создал репозиторий на github, в котором систематизирую все свои скрипты, которыми пользуюсь каждый день. Идея создать репо, в котором сконцентрировать наиболее удобные и полезные скрипты.

Я стараюсь каждый день дополнять список, исправляя свои скрипты и их неудобства. Поэтому репозиторий будет часто обновляться.

Так же у меня есть некоторое количество скриптов, позволяющих оценить нагрузку системы с использованием netstat:

netstat -na | grep ":80\ " | wc -l
netstat -na | grep ":80\ " | grep SYN_RCVD | wc -l
netstat -na | grep ":80\ " | grep ESTAB | wc -l

и т.д.

Очень приветствуются дополнения, критика и исправления ошибок в скриптах. Большая часть скриптов взята с commandlinefu — как замена моим менее функциональным.
Поделиться с друзьями
-->

Комментарии (6)


  1. nightvich
    09.12.2016 12:24
    +29

    Простите, не могу сдержаться, но эта картинка отлично визуализирует Вашу статью.
    image


  1. acmnu
    09.12.2016 14:44
    +7

    Эта статья конечно полезная, но лично для вас. Фишка в том, что паттерны, повторяющеся в вашей работе не факт что будут полезны для других. Например для многих задача вспомнить что он тут делал будет комбинацией команд git status; git show HEAD;


    Для привыкания к новым патернам требуется время, а главное не всегда надо их сохранять. Часто можно прям в консоли набить функцию которая нужна вам прям сейчас, но врятли понадобится когда-нибудь ещё.


    Например прям сейчас у меня есть функция:


    $ type get_console
    get_console is a function
    get_console () 
    { 
        curl $1 | grep --color=auto -v '| +'
    }

    Это сиюминутная фишка необходимая мне для того, что я просматриваю кучу логов от Jenkis и они засраны спамом от set +x. Думаю понятно, что без этой функции мне приходилось бы подставлять url, куда-то в средину команды, а так стрелка вверх, ctrl+w, shift-insert. Но нет я не делаю скрипт, не правлю .bashrc, просто набиваю эту функцию прям в командной строке.


    Ну и не надо забывать про alias. Класика жанра:


    alias ll='ls -alF'

    Ну или ваши пять последних файлов (правда не больше 2^15 файлов):


    alias ltr5='find . | xargs ls -tr | tail -5'

    Косательно вашего репозитория могу сделать вам несколько подсказок, возможно они вам понадобятся.


    • Имена ваших хелперов неплохо начинать одинаково. Я например предпочитаю префикс hlp_. В этом случае, даже если подзабыл как называлась функция, то нажав на таб получишь список (если пользоваться zsh, то можно и список с пояснениями вывести)
    • Если расширяете известные команды или делаете по ним шорткаты, то проще называть созвучной с оригнальным именем командой. Опять таки классика ls и alias ll.
    • Нет никакой необходимости "инсталировать" это дело. Гораздо проще написать один sh файл с функциями и делать source из .bashrc. Это позволятет просто соурсить из вашей рабочей папки с гитом. Ну или в вашем случае можно прописать PATH на эту директорию.
    • Надо писать толковый readme. Со временем патерны работы поменяются и разобраться что вы писали год или два назад будет очень сложно. Написать для себя man вообще бесценно.


    1. HellDN
      09.12.2016 17:29
      +1

      Вы правы, но идея была собрать полезные ежедневные скрипты.
      Я сомневаюсь что Вы сможете вспомнить что устанавливали/конфигурили командой git status.
      Алиасы, конечно, полезны. Но мне часто приходится переносить скрипты с сервера на сервер и переносить .bashrc каждому юзеру в home — очень не удобно.
      Поэтому мне удобнее иметь все эти скрипты в /usr/bin.


      1. acmnu
        09.12.2016 17:37

        Ну если это тащить на сервер, то надо пакетировать однозначно, хотя можно и в хомяк положить.


        1. HellDN
          09.12.2016 18:07
          +1

          Вот я и вложил в некое подобие пакета.
          По поводу, что они полезны только для меня — я специфичные скрипты не выкладывал. Только общие. Никаких докеров, xen, и тому подобных.
          Рассмотрите prettyuser — достаточно удобная штука.
          lschanged, showservice — с начала sysmtectl скучал по этой софтине.
          Благо вместо netstat — ss с теми же аргументами идёт. Не пришлось оборачивать в удобочитаемую форму.
          Хомяк — опять же идёт привязка к конкретному юзеру.


  1. athost
    09.12.2016 17:25

    Имхо, для этих «скриптов» больше бы подошли alias в .bashrc