Настроим Ubuntu shell под себя

  • Tutorial
Итак. Абстрагируемся от мощных высокотехнологичных постов на хабре — я им апплодирую. Но жизнь рядового программиста начинается с его рабочего места, куда он неустанно возвращается снова и снова.
Если это про вас. Если вы хотите добавить в свою жизнь немного изюминки — отвлекитесь на минутку, расслабьтесь и открывайте хабракат!



Большинство из нас работают в среде Ubuntu (Linux). Это стало своего рода стандартом для многих веб-разработчиков, это как один раз попробовать, и понять… Вся магия на начальных порах ограничивается возможностью установки пакетов (программ) из-под эмулятора коммандной строки Terminal, затем интерес утихает. Но, задайтесь пожалуйста вопросом: что для вас представляет окно Терминала? Безцветная, бездушная оболочка с базовым набором комманд? Или друг и помошник в повседневных делах? Открою вам маленький секрет: лично я адаптирую его под каждый свой новый проект. И всё благодаря Алиасам (alias).

Конечно, многие гуру тут снисходительно пожмут плечами, но давайте не будем уж больно торопиться и делать поспешные выводы. Ведь порой самые очевидные вещи могут принимать разные формы и выражения, и одной из таких форм я и хочу с вами поделиться.

Открываю для вас свой Terminal (Ctrl+Alt+T):

terminal_window

Думаю, мало кто из читателей видит то же самое. Настроен автоматический переход в корень проекта. Выводится список определенных комманд, которые мне наиболее часто приходится использовать в работе. Конечно, это личное дело каждого, но у меня это следующий список:

Пароли

Обычно, клиент/заказчик высылает нам логины/пароли к своим сервисам. В любой момент времени, мне достаточно вызвать комманду pass чтобы вывести на консоль все пароли имеющие отношение к проекту:

image

Удобно, не правда ли?

alias pass=printSecure

printSecure() {

 # вы же не будете  против, если я вставлю сюда палитру:

 green="\e[32m"

 cyan="\e[36m"
 blue="\e[34m"
 lightblue="\e[94m"
 black="\e[30m"
 red="\e[31m"
 darkgray="\e[90m"
 bold="\e[1m"
 norm="\e[0m"

 title=$bold$black
 url=$blue$norm
 l=$red
 p=$cyan
  
 echo -e "
   $title AWS Storage $url http://aws.amazon.com
      $l login@gmail.com $p password
   $title Heroku WebServers $url https://api.heroku.com/login
      $l login@gmail.com $p password
 "
}


Email в буффер обмена

Везёт людям, с емэйлом вида «a@a». Я конечно утрирую, но по долгу службы мой корпоративный емэйл имеет длинну в 29 символов.
Частый ввод такого емэйла для меня всегда являлся рутиной, а напоследок заканчивался тем что я впопыхах путал как назло местами две соседние буквы.
Проблема исчезла как только я создал алиас на копирование своего емэйла в буффер обмена. Алиас называется лаконично «m», и стоит не более секунды моего времени: Alt+Ctrl+T -> m -> Enter -> Alt+F4

image

mailToClipboard() {
echo "vitalyp@softwareplanet.uk.com" | xclip -selection clipboard
echo "email vitalyp@softwareplanet.uk.com in clipboard buffer!!"
}
alias m=mailToClipboard


Wiki Manual

Это мануал по всем возможным командам, которые я использую во время деплоев / удаленных бэкапов и т.д. Пишется один раз, но здорово разгружает мозги. У меня копия такого мануала находится ещё в текстовичке, и открывается через блокнот по алиасу «snips» (всё-же из блокнота легче копипастить), но можно юзать и консольный вариант:

image

Edit hosts / .bashrc

Когда какое-то действие выполняется часто, бывает неплохо автоматизировать этот процесс.
С hosts файлом всё понятно, а вот .bashrc я часто открывал, когда хотел добавить какой-то новый безумный алиас к своему терминалу:

alias edit="gedit ~/.bashrc&"
alias hosts="sudo gedit /etc/hosts&"


С помощью амперсанта, файлы открываются в отдельном потоке, а консоль — освобождается для дальнейших инструкций.

Edit temp / daily

Темповый файл для многих может выполнять роль вспомогательного буффера. Но я даже не знаю с какого края экрана он у меня находится, потому-что у меня есть алиас:

alias temp="gedit ~/Desktop/temp&"


В файл Daily я иногда вношу заметки, которые нужно будет не забыть включить в свой дневной отчёт (daily report) заказчику:

alias daily="gedit ~/Desktop/daily&"


— Боюсь, что на вступительную часть хватит. Добавлю только, что я использую в работе помимо этих типов, ещё GUI-шные алиасы, которые выводят оконные диалоги на экран. Если кому интересно, могут попробовать установить пакет «zenity». Popup окно создаётся так:

zenity --error --title="Service checker" --text="$service1 is not running! Start it, and click OK."


— Ну вот, а я буду надеяться что эта статья хоть кому-то была интересна.
Метки:
Поделиться публикацией
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама
Комментарии 41
  • +12
    Alt+Ctrl+T -> m -> Enter -> Alt+F4

    Посмотрите в сторону xbindkeys. Ещё, раз вы в Ubuntu, поставьте ccsm (compizconfig-settings-manager) и взгляните на настройки плагина Commands.
    В любой момент времени, мне достаточно вызвать комманду pass чтобы вывести на консоль все пароли имеющие отношение к проекту

    А для таких вещей лучше keepassx использовать.
    • 0
      Спасибо за подсказку, пошёл устанавливать xbindkeys.
      • 0
        Еще есть классная прога guake, делает консоль как в quake или hl на часть экрана.
        • 0
          guake у меня падала пару лет назад, остановился на tilda — симпатичнее и стабильнее.
          • 0
            К tilda есть претензия в виде собственного метода настройки вызова: у меня все глобальные клавиатурные сочетания находятся только в ~/.fluxbox/keys и самодеятельность tilda мне совершенно не нужна. Остановился на yakuake (основывается на konsole (из KDE)). Теперь к tilda есть дополнительная претензия в виде отсуствия поддержки true color.

            Если кто не понимает, как показать yakuake из .fluxbox/keys: используйте qdbus. Конкретнее:
            qdbus org.kde.yakuake /yakuake/MainWindow_1 org.kde.yakuake.toggleWindowState
        • 0
          А keepassx может работать в консоли? Одного взгляда на официальный сайт, не хватило чтобы это понять. В оригинале именно консоль и это очень удобно…
      • –1
        Спасибо. Нашёл для себя много нового, хоть я просто пользователь, а не веб-программист.
        • +2
          Пользователи используют Windows/Mac OS, а вы гик :)

          Я вот являюсь веб-программистом, но моя ОС на работе — это IDE. В остальное время я обычный пользователь и предпочитаю Mac OS.
          • +2
            Тот факт, что я врач не повод не уметь поднять, скажем, сервер на KVM)) жизнь облегчает. Хотя вы в чем-то правы))
            • +2
              О чём тут говорить, если вы читаете хабр? :)
              • +1
                Ну, хабр кто только ни читает. Тут скорее люди с инвайтом реже встречаются)) Думаю, оффтопик надо завершать. Всю ветку заняли))
              • +1
                Тут очень к месту вспомнить про австралийского анастезиолога, который активно ковырял линуксовое ведро (:
                • 0
                  Ну, я ядро ковырял не очень активно. Разве что Debian подпиливал под видеокарту, чтобы медиа сервер отцу сделать. И я стоматолог :)
              • 0
                У меня наоборот — OS X в офисе, дома основная система Ubuntu, которая доставляет меньше хлопот, но на работе нужен Photoshop.
            • +14
              Я правильно понимаю, что вы предлагаете хранить пароли от проекта в открытом текстовом виде без ограничения доступа к ним, чтобы любой, случайно получивший доступ к вашему аккаунту, могу увести вообще всё с потрохами? А чтобы не расстраивать неудачников, которые не сумели получить доступ к аккаунту, выводите пароли на экран, причём сразу все. Чтобы у них тоже был шанс. (:

              Хотя действительно, зачем все эти 100500 всевозможных хранилок паролей, в том числе консольных, которые и шифруют всё, и защищают паролем, и даже копируют нужный пароль напрямую в буфер обмена. Ну или на худой конец собственный велосипед с gpg зашифрованным файлом…
              • +7
                Удобно, не правда ли?
                • 0
                  Естественно, что я предусмотрел этот вариант, и… поменял во всех паролях первые две буквы местами. Я не помню, где я прочитал про эту хитрость, но нахожу это очень криптостойким (:
                  • +10
                    То есть теперь Вы рассказали и об этом на весь Интернет.

                    «Люди, у меня пароли хранятся в открытом виде, НО я ж не дурачок, и первый получивший доступ к моему аккаунту не сможет воспользоваться этими паролями, потому что первые две буквы поменяны местами… ой...»
                    • +2
                      Какой же вы наивный :)
                      • +3
                        Вторая и третья?! Как вы вероломны!1
                    • 0
                      Блин, у меня первые две буквы одинаковые :(
                  • +19
                    Рубисты знакомятся с командой alias:)
                  • +3
                    В любой момент времени, мне достаточно вызвать комманду pass чтобы вывести на консоль все пароли имеющие отношение к проекту. Удобно, не правда ли?

                    Да не сказал бы. Установите себе pacmanager и храните пароли в заметке для сервера.

                    Это мануал по всем возможным командам, которые я использую во время деплоев / удаленных бэкапов и т.д. Пишется один раз, но здорово разгружает мозги. У меня копия такого мануала находится ещё в текстовичке, и открывается через блокнот по алиасу «snips»

                    Возможно, вам поможет zsh и правила к нему:
                    image

                    Проблема исчезла как только я создал алиас на копирование своего емэйла в буффер обмена. Алиас называется лаконично «m», и стоит не более секунды моего времени: Alt+Ctrl+T -> m -> Enter -> Alt+F4

                    Забейте email в браузер и он будет автодополняться. И поставьте yakuake или tilda.

                    Не беспокойтесь, через некоторое время вы найдете для себя более удобные решения, но то, что у вас сейчас не может быть удобно. Почему? Потому, что я прошел через это.
                    • 0
                      Не обойду пристальным вниманием всё перечисленное в этом комментарии, спасибо большое!
                      Ну, прям пост добра какой-то вышел :)
                    • 0
                      У каждого свои заморочки и фломастеры. Но зачем создавать функцию, чтобы потом вешать на неё алиас? Весь функционал можно запихнуть напрямую в алиас (тем более, что, судя по приведённым примерам, использование функций избыточно) либо, раз уж хочется функций, использовать их напрямую (func_name () { ...; }; export -f func_name). Ну, а для развесистого функционала вообще лучше создать у себя в домике ~/bin/, добавить его в PATH (если он уже по умолчанию не добавлен) и создавать там свои скрипты на том же bash'е.
                      • 0
                        Вот этот последний путь — в никуда. Он уязвим: если в ~/bin создать программы su и sudo, которые скачивают и запускают бота (заодно высылая введённый пароль куда-то в интернет), то когда-нибудь это ружьё выстрелит.

                        Это вообще давно известный трюк: когда-то unix-администраторы добавляли. (текущий каталог) в PATH, что приводит к печальным последствиям.

                        А вот для дополнительной защиты от такого даже придумали mount -o noexec, что подразумевает, что никакого ~/bin быть не может. Но для /home, на мой взгляд, это уже слишком.
                        • +2
                          Во-первых, если путь добавить к PATH, то su и sudo будут найдены сначала в системных каталогах. Во-вторых, если у кулхацкера есть возможность создать что-либо в домике юзера (примем за умолчание, что неадекватных прав на домик не установлено), то с таким же успехом можно добавить и алиас и функцию в ~/.bashrc. Так что тут такое дело.
                          А по поводу добавления в PATH текущего каталога (.) согласен — ещё никто никому не запрещал стрелять по своим же ногам =)
                          • +2
                            Если злоумышленник может добраться до ~/bin, то он с такой же лёгкостью доберётся до ~/.zshrc или ~/.bashrc и определит функции su или sudo там. Не вижу тут никаких дополнительных уязвимостей: либо у злоумышленника есть доступ к ~ и вы пропали, либо наличие ~/bin не является проблемой.
                        • +2
                          Получается printSecure — статичный раскрашенный текст обернутый в функцию. Проще и лучше тогда сделать alias на обычный cat. Чтобы пароли лежали не в .bashrc, а в отдельном файле. И минимально закрыть его содержимое от посторонних глаз.

                          Когда надо было работать совсем без гуя — использовал /dev/shm для более-менее надежного хранения аналогичного файлика. При загрузке расшифровываем из надежного места в /dev/shm.
                          • +2
                            Статья замечательная, но Ubuntu из названия можно убрать — ничего Ubuntu-специфичного тут нет, всё будет работать даже под NetBSD.
                            • +4
                              Вы с таким упоением рассказываете про распиливание терминала, и при этом редактируете конфиги gedit'ом. Ну как так.
                              • +4
                                Сразу видно что статью писал творческий человек, мне бы даже в голову не пришло раскрашивать в разные цвета вывод паролей в консоль. Да и вообще, вывод паролей в консоль в голову не пришел бы.
                                • 0
                                  Алиасы — не круто, поиск по истории — вот что круто.
                                  • 0
                                    КоММанда? БуФФер? Вам не хваттает соггласнных в словвах?
                                    • 0
                                      command, buffer, ok?
                                      upd: но всё равно спасибо, я за орфографию.
                                    • 0
                                      Извиняюсь а вброс, но сам когда-то не знал о великолепном oh-my-zsh, может кому тоже понравится
                                      wget --no-check-certificate github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O — | sh
                                      • 0
                                        О боже, сколько ещё вам открытий чудных готовит shell.
                                        • 0
                                          Огласите весь список.
                                          • 0
                                            Весь жирновато будет, а на затравку вот, пожалуйста: xbingkeys, oh-my-zsh, fish shell, solarized, qwandry, password-store, ну и vim для начала (ну или emacs). Иначе ваш пост не имеет смысла дальше песочницы.

                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.