The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

topalias - утилита для генерации коротких алиасов по истории bash/zsh

19.11.2020 10:42

На GitHub опубликована открытая утилита для генерации коротких алиасов на основании истории работы в bash или zsh. Утилита анализирует файлы ~/.bash_aliases, ~/.bash_history и ~/.zsh_history с историей выполнения команд в терминале Linux, после чего предлагает короткие аббревиатуры (акронимы) для длинных, долго набираемых и сложно запоминаемых, но часто используемых команд. Также поддерживается вывод статистики по истории работы в командной строке.

  1. Главная ссылка к новости (https://github.com/CSRedRat/to...)
Автор новости: CSRedRat
Тип: Программы
Короткая ссылка: https://opennet.ru/54108-alias
Ключевые слова: alias, bash, zsh
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (35) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, burik666 (ok), 11:51, 19/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    $ cat ~/.bash_history | sort | uniq -c | sort -n
    Это оно?
     
     
  • 2.19, Dzen Python (ok), 20:16, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну да. Только надо не забыть fish_history и что там у zsh и других оболочек. Но все равно получится нечто вроде:

    cat ~/.bash_history >> ~/temp.txt
    cat ~/.local/share/fish/fish_history >> ~/temp.txt
    ...
    cat ~/temp.txt | sort | uniq -c | sort -n

    ну и далее для каждой строки нечто подобное

    head /dev/urandom | tr -dc A-Za-z0-9 | head -c5

    , а если использовать gpw, то можно получить не тот шлак, то выдает сейчас, но нормальные читаемые алиасы,

    gpw $num $alias_len

    , а если делать как автор, то просто выкусить для каждой команды по 1-3 символов из начала, с проверкой на существование бинарника в общесистемных /bin. А можно вообще делать слово из каждой первой-двух букв после пробела

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

    Но нынешнее поколение этого уже не осилит, поэтому, хм, имеем что имеем.

     
     
  • 3.21, burik666 (ok), 20:22, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну да. Только надо не забыть fish_history и что там у zsh
    > и других оболочек.

    Обычно известно где лежит HISTFILE используемого shell, так что собирать даже ничего не надо.

     
     
  • 4.22, Dzen Python (ok), 20:26, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А ВДРУГ у нашего юзверя powershell?
    Хотя да, тогда скрипт серьёзно упрощается. Но ты забыл случай, когда один и тот же юзер использует в одном логоне разные шеллы.
     
     
  • 5.24, burik666 (ok), 20:28, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Но ты забыл случай, когда один
    > и тот же юзер использует в одном логоне разные шеллы.

    Тогда и разные алисаы ему могут быть нужны.

     
     
  • 6.29, Dzen Python (ok), 20:43, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Которые должны мнемонически обозначать шелл выполнения (префиксом, постфиксом, алконаркиинтеркфиксом) и по-сути уже должны быть обернуты в скрипты, с нормальным вызовом шелла назначения и передачей ему команды соаргументы.
     

  • 1.2, leibniz (ok), 11:55, 19/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Утилита анализирует файлы ~/.bash_history и ~/.zsh_history с историей выполнения команд в терминале Linux

    Эти файлы же и содержат историю, нет?

     
     
  • 2.3, Аноним (3), 11:57, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ну да, прога читает историю и предлагает алиасы
     
  • 2.6, And (??), 12:09, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Эти файлы же и содержат историю, нет?

    Их больше. И эти  - тоже.

     
     
  • 3.7, leibniz (ok), 12:17, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Понятно, что больше, ведь не только bash и zsh есть в этом мире. Я про логическую нестыковку в указанном предложении.
     
     
  • 4.11, Аноним (11), 13:36, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Как раз хорошая стыковка же. Файлы такие-то с историей команд. То есть файлы таки-то, содержащие ту самую историю команд. А не файлы такие-то да плюс ещё история команд из другого места.
     

  • 1.4, InuYasha (??), 12:00, 19/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    А потом привыкнешь к алиасам, а на чужих тачках их нет ) Как ll.
     
     
  • 2.5, And (??), 12:07, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Вообще-то, у многих линуксоидов и яблоковедов на Гитхабчике прикопаны свои ~/.bashrc ~/.bash_aliases ~/.config/et-cetera

    Либо есть Deb, Rpm пакеты и просто скрипт, распихивающие все эти goodies по нужным углам в чистых системах. Хостить можно в т.ч. на своей флешке. Или там же - в инете.

     
     
  • 3.31, ананим.orig (?), 23:47, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Угу.
    А теперь ещё и история… пароли, явки,..
    И алиасы к ним.
     
     
  • 4.32, InuYasha (??), 14:09, 20/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    У меня тоже свой (ba|z)shrc, но на чужие || рабочие серваки их не потащишь.
     

  • 1.8, an0nymous (?), 12:49, 19/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    Расскажите им про ctrl + r
     
     
  • 2.9, Аноним (9), 12:59, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Зашёл сюда чтобы это написать. Работает на любой тачке.
     
  • 2.12, mumu (ok), 14:57, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В PS работает. Не ожидал. Спасибо!
     
  • 2.15, Michael Shigorin (ok), 18:51, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Про alt+. знаете?

    mkdir здоровенныйкаталог
    cd <alt+.>

    (или Esc . для некоторых терминалов, но так перебирать неудобно)

     
     
  • 3.18, bw (ok), 20:00, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Мне больше нравится как fish с историей работает.
     
  • 3.30, an0nymous (?), 23:20, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Про alt+. знаете?
    > mkdir здоровенныйкаталог
    > cd <alt+.>
    > (или Esc . для некоторых терминалов, но так перебирать неудобно)

    Спасибо, не знал. Оно я так понимаю только последний аргумент прошлой команды дублирует? я для этого делаю ^, ctrl+<, ctrl+W сколько нужно раз - так чуть гибче

     

  • 1.10, FrBrGeorge (ok), 13:10, 19/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Ну, пакет на PyPi нерабочий, (нет конфигурационных файлов)

    Cама программ ищет эти самые конфигурационные файлы исключительно в подкаталоге 'topalias/data' _текущего_ каталога. Разумеется, не находит, потому что их нет.

    А если всё ей вручную скачать и куда надо положить, при попытке прочитать мой .zsh_history — валится при перекодировке.

    Лучше бы студенту поручили: их, по крайней мере, учат pip-ы делать и тестировать перед релизом.

     
     
  • 2.33, CSRedRat (ok), 16:29, 20/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В релизе 2.0.13 проблема с поиском файлов .bash_aliases, .bash_history и .zsh_aliases
    Также устранены проблемы с кодировкой unicode при чтении истории zsh и ошибки при обработке мультистрочных комманд

    Пакет рабочий: https://pypi.org/project/topalias/

    Обновите утилиту:
    pip3 install -U --user topalias
    или
    pip3 install -U --user topalias==2.0.13

     
     
  • 3.34, CSRedRat (ok), 17:00, 20/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    исправлена* проблема с конфигурационными файлами

    даже pull request с решением некоторых проблем присылают:

    я проверял в 4 разных средах до публикации, в т.ч. чистой убунте, у меня работало)

     

  • 1.13, Аноним (13), 17:21, 19/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Прога ради проги.
    Алиасы  вообще говоря не нужны, а автоматически сгенерированные тем более. Надуманная проблема, вымученное решение...

    Если регулярно нужно выполнять какие-то навороченные команды, нужно написать скрипт с ними (и засунуть в крон). Терминал не для того, чтобы выполнять в нем рутинную работу.

     
     
  • 2.14, burik666 (ok), 18:49, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    ls -lah засунуть в cron?
     
     
  • 3.25, Dzen Python (ok), 20:32, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Но ведь...человек дело говорит.
    Засунуть длинные команды с кучей параметров в скрипт, как с тем же ютюбдл. В скрипт просто передавать ссылку и ... всё. Как тут:

    #!/bin/bash
    # Download single video

    if [ -n "$1" ]
    then
        cd "~/blah/blah/blah/youtu.be feed"
        youtube-dl -i -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' --no-mtime "$1"
    else
    echo "No url to video found."
    fi


    А смотреть каталоги...хм. Смысл алиаса на команду из 5-6 символов вместе с параметрами?

     
     
  • 4.26, burik666 (ok), 20:35, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Но ведь...человек дело говорит.
    > Засунуть длинные команды с кучей параметров в скрипт, как с тем же
    > ютюбдл. В скрипт просто передавать ссылку и ... всё. Как тут:

    Сам так делаю.

    > А смотреть каталоги...хм. Смысл алиаса на команду из 5-6 символов вместе с
    > параметрами?

    алиас ll=ls -lah очень популярен.

     
     
  • 5.27, Dzen Python (ok), 20:38, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мда. Не понимаю я этого. Привык уже к тому, что джвумя символами mc вызываю полноценный ФМ и работаю в нем.
     
  • 5.35, InuYasha (??), 13:08, 22/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Однажды, когда много-много сидел в консоли в поисках каких-то файлов, я подумал "а почему бы не повесить ls -lahZ на ll". Каково же было моё удивление, когда он УЖЕ существовал как "ls -l"! Наверное, так я и стал юниксоидом. )
     

  • 1.16, СеменСеменыч777 (?), 19:51, 19/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а для tcsh - нету. дискриминация эмигрантов из *BSD !
     
     
  • 2.23, лютый жабби__ (?), 20:28, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >а для tcsh - нету. дискриминация эмигрантов из *BSD !

    а оно надо? я фряху уже 10 лет не видел, но во всех линухах в tcsh именно за шедевральный родной поиск по истории. пара букв, up up и готово

     

  • 1.17, Аноним (17), 19:59, 19/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ну уже лучше.
    А то вот это вот всё
    systemctr.stupid.service.do --new_mega_option = 12843 --no_nothing = 887 --post_to_facebook=yes --another=i_do_not_know --ne_pomniu --netu_documentacii +100500_parameters start

    уже достало.

     
     
  • 2.20, And (??), 20:21, 19/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    В этом случае с этим работают несколько иначе.

    Переменные и параметры в юнит файлах. В юнит файлах может быть имя файла с переменными.

    Но тема с --no-pager заела, да. После чего хэйтерство системды. Тоже, видимо, как-то там в другом месте логи читать имелось ввиду...

     

  • 1.28, Dzen Python (ok), 20:40, 19/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Короче как с gping - новость ниочем.
     
  • 1.36, Аноним (-), 19:58, 22/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    кошмар, какая-то куча костылей на питонятине, зачем такую домашку по информатике в новости пихать?
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру