Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

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

В данном форуме немного понижены требования к Общим правилам форума, а именно:
1. Информативность темы
2. Отходить от первоначального смысла темы

!
В разделе запрещено создавать темы связанные с раскруткой игровых серверов

H i ST o R y

, bash/zsh
Статус пользователя Gecko
сообщение 26.11.2022, 18:28
Сообщение #1
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Эта тема для тех кто часто работает в shell на linux.

Лично для меня как для начинающего линуксоида в своё время было большой головной болью уметь работать с огромными массивами данных, конечно любой начинающий линуксоид обязан уметь работать с man, ведь этот пакет даёт огромный функционал который по сути очень сильно облегчает жизнь пользователю в контексте работы с той или иной программой, но ещё чаще бывает необходимость вспомнить ту или иную команду из .bash/zsh_history. Лично я по началу как и многие другие пользователи использовал волшебное сочетание C-R, но это было очень не удобно, по этому лично я для себя написал вот такой скрипт который долгое время решал мои задачи, ведь было удобно переключать справочники/источник команд и получать искомые команды с моими комментариями.

Вот концептуальная модель такого скрипта
Код
minefile=".bash_history"
sp="[[:space:]]*"
app=$(basename "${0} ")

tmplog="/tmp/em.log"
editor="less -C"

    echo -e "Список доступных комманд для: $*\n" > ${tmplog}
    cat ${HOME}/${minefile} | grep -av "^${app}" | grep -as "^$*" | sort | uniq >> ${tmplog}
    cat ${HOME}/${minefile} | grep -av "^${app}" | grep -as "^sudo${sp}$*" | sort | uniq >> ${tmplog}
    cat ${HOME}/${minefile} | grep -av "^${app}" | grep -av "^sudo${sp}$*" | grep -av "^$*" | grep -as "$*" | sort | uniq >> ${tmplog}
    ${editor} ${tmplog}


Конечно, этот скрипт вырос в нечто более тяжёлое, то что я написал выше, это концепция которую я написал по памяти для этого поста, сам скрипт я давно удалил и вот почему.

Два года назад я взялся изобретать то, что как оказалось уже изобрели, и работает очень неплохо.

Вот репа программы: https://github.com/dvorka/hstr
Эту программу я советую любому линуксоиду работающему на bash/zsh

А теперь подробно про HSTR (H i ST o R y)

Это - удобный просмотр, навигация и поиск истории команд в интерактивном меню предложений истории оболочки для bash/zsh



README.md
Цитата
Вы ищете команду, которую использовали недавно ? Вы хотите избежать необходимости писать длинные команды снова и снова? Вы ищете инструмент, который может управлять вашими любимыми командами?
HSTR ( H i ST o R y ) — это утилита командной строки, которая обеспечивает улучшенный bash/ zsh завершение команд из истории. Он направлен на то, чтобы сделать завершение проще и эффективнее чем Ctrl-r.
HSTR также может управлять вашей историей команд (например, вы можете удалить команды, которые устарели или содержат часть конфиденциальной информации) или добавьте в закладки свои любимые команды.


После установки пакета, нужно выполнить всего одну команду для той оболочки с которой вы работаете
Код
# bash
hstr --show-configuration >> ~/.bashrc

# zsh
hstr --show-configuration >> ~/.zshrc


Опции:
Код
  --favorites              -f ... show favorites view
  --kill-last-command      -k ... delete last command in history
  --non-interactive        -n ... print filtered history and exit
  --show-configuration     -s ... show configuration to be added to ~/.bashrc
  --show-zsh-configuration -z ... show zsh configuration to be added to ~/.zshrc
  --show-blacklist         -b ... show commands to skip on history indexation
  --insert-in-terminal=[c] -i ... insert command c in terminal prompt and exit
  --version                -V ... show version details
  --help                   -h ... help


Синонимы: hstr, hh, h

Искать команды в файле .my_commands.txt:
Код
hstr  [b]--favorites[/b] .my_commands.txt


Вывести все результаты без интерактивного меню
Код
h -n


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   Цитировать сообщение
Статус пользователя Abbattmb
сообщение 26.11.2022, 18:52
Сообщение #2


Стаж: 12 лет

Сообщений: 398
Благодарностей: 73
Полезность: < 0

Не на тот форум пишешь, вот бы продавал раскрутки, то другое дело. А так пустая трата своего времени))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 26.11.2022, 19:11
Сообщение #3
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Цитата(Abbattmb @ 26.11.2022, 18:52) *
Не на тот форум пишешь, вот бы продавал раскрутки, то другое дело. А так пустая трата своего времени))

Я могу тебе назвать как миниму 10 человек с этого форума которые работают с линукс профессионально.
Многие просто читают форум без авторизации.
В контексте тематики данного форума, почти все ваши игровые сервара (в статусе продашкшн), работают на линуксах. Да почти всё о чем вы тут пишите так или иначе, в конечном счете работает на linux.
Я уверен, мой пост кому нибудь пригодиться, не одним ТАБ-ом как говориться.


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 26.11.2022, 19:39
Сообщение #4
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Цитата(Abbattmb @ 26.11.2022, 18:52) *
... пустая трата своего времени))

Вот тебе рабочий пример:
Парк пусть будет из более чем сотни узлов/nodes (vps для игровых серверов)
Задача, быстро подключиться к нужному серверу по ssh
Варианты быстрого решения:

Код
h -f id10234


.hstr_favorites
Код
ssh cs1 # Описание ноды ... Id...
ssh cs2 # Описание ноды ... Id...
ssh cs3 # Описание ноды ... Id...
ssh cs4 # Описание ноды ... Id...
ssh cs5 # Описание ноды ... Id...
ssh cs6 # Описание ноды ... Id...
....
ssh cs158 # id10234 192.168.83.235


Из списка серверов (в файле .hstr_favorites) выбираю нужную ноду и подключаюсь.

То есть, даю программе h флаг -f (искать в .hstr_favorites) далее ввожу поисковое слово (номер договора клиента id10234)
и получаю готовую команду для подключения, осталось нажать ввод
ssh cs158 - это команда для подключения к ноде.

программа выводит команды по последнему использованию

Вот так она выглядит в ~/.ssh/config
Код
Host cs158
HostName order10234.gamehost.io
Port 22
User root


Это просто пример.

Отредактировал: Gecko, - 26.11.2022, 20:36


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Eka
сообщение 26.11.2022, 20:59
Сообщение #5
Стаж: 8 лет 2 месяца

Сообщений: 280
Благодарностей: 114
Полезность: 176

Пример дичь, конечно) А если реально используется, значит лукавство о количестве нод.
Адреса нод меняются. Даже приватники. Ну просто потому что есть вышедшая из строя нода и адреса с нее куда то перетекают.
Ноды у серверов меняются в следствие изменения тарифа.

Утилита как автокомплит и выпадающее меню с историей топ.


цитаты великих умов
Цитата
аналог libcurl в Go это net/http
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 26.11.2022, 21:25
Сообщение #6
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Eka,
Цитата
Пример дичь, конечно) А если реально используется, значит лукавство о количестве нод.
Адреса нод меняются. Даже приватники. Ну просто потому что есть вышедшая из строя нода и адреса с нее куда то перетекают.
Ноды у серверов меняются в следствие изменения тарифа.


Это просто пример, пусть не самый удачный, ладно.
Подключение к ноде идёт по внутреннему интерфейсу и тут всё зависит от динамической конфигурации dhcp сервера (я даже для примера ip указал частный)

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


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Gecko
сообщение 28.11.2022, 13:49
Сообщение #7
Стаж: 7 лет 4 месяца

Сообщений: 1247
Благодарностей: 518
Полезность: 346

Немного ясности и исправлений в мой первый пост.

Корректнее было написать псевдонимы а не синонимы (моя неточность)
И по умолчанию такого псевдонима как h не существует, это уже моя модификация команды позволяющая запускать hstr с флагом -f --favorites

Для того чтобы запускать hstr с флагом -f одной простой командой, достаточно в ~/.bashrc либо .zshrc добавить нужный алиас:

Код
echo -e "\nalias h=\"hstr -f\"" >> ~/.bashrc


и теперь не нужно писать hstr -f чтобы искать команду в ~/.hstr_favorites, достаточно написать h

Отредактировал: Gecko, - 28.11.2022, 13:54


Не отвечаю на ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: