LINUX.ORG.RU

Программируемые дополнения в bash


0

0

Ян Макдональд выпустил скрипт, позволяющий сделать ваш (любимый :) командный интерпретатор значительно лучше понимающим ваши намерения при работе в командной строке.

Вооружив bash этим дополнением вам больше не придётся, например желая посмотреть man, вспоминать полное имя редко используемой функции из какой-то библиотеки, или административной утилиты. Просто введите "man [<номер раздела>] <начало чего-то><TAB>" и bash выведет список доступных дополнений. Аналогично для ssh - список хостов, для mount - список ФС, для make - список targets из Makefile в текущей директории, для cvs - список команд, и т.д. Поставьте скрипт, наберите complete -p и на экран выведется список "разумных" команд.

Я "писал кипятком" :).

>>> Подробности

★★

Проверено:

То, что уже много лет имеют пользователи zsh безо всяких проблем ;)

ivlad ★★★★★
()

Тем, кто учится полезно смотреть именно в man, info, HOWTO, FAQ.
Тем кто уже работает, лучше не расчитывать на костыли.

BlackRabit
()

Ага. "Записная книжка - костыли для мозгов".

К тому же поставить это дело на десяток серверов... Быстрее будет все время набивать :)

anonymous
()

Ну чего вы злые какие :)))) "Костыли" "ZSH"... Прикольно ведь? не нравится, не пользуйтесь... Пользуйтесь чем хотите, хоть MC :)))

Я вот поставил на 8 слаку на работе, сейчас домой понесу... Писаю рядом с Philin :)))

Скорость работы действительно в разы подскочила.

Но вы уважаемый BlackRabit правы. Действительно костыли. Это изначально к башу должно быть приделано, и желательно на сях, а не так. Будет модулей побольше, как всё это тормозить будет, а?

Но всё равно прикольно :))) Новая рюшечка.

O_Prime
()

хм, добавили бы еще поддержку int, float и массивов с указателями - вот это было бы вкусно.

anonymous
()

комментарий к комментариям

ну что тут сказать, кому что нужно тот то и пользует. Если нередко приходится колотить в шеле по 200-300 знаков в минуту, эта "рюшечка" неплохо экономит время. А пальцеватым (у кого проблем со скоростью набора в шеле нет ;) она действительно ни к чему.

filin ★★
() автор топика

Сколько раз ловил себя на желании нажать tab после man и ssh :) Обязательно попробую поставить.

Согласен, что это должна быть стандартной фичей баша. На счет костылей не согласен! TAB комплишен тоже наверно кому то казался костылем, а сейчас это такая фича которая придает шарм и удобство работы никсам.

anonymous
()

ТАБы в шелле - полный рулез. А новая фича - тоже рулез. Не нравится - не юзайте. Ноги - тоже костыли, только для тела. И еще бегать позволяют. (с) мой.

anonymous
()

ZShell - Rulez Forever!

anonymous
()

Muzhiki, vy vse-taki zsh poprobujte; na bash svet klinom ne soshelsya. Tem, komu programmiruemye kompletitions nravyat'sya, zsh - nahodka.

anonymous
()

А ещё вкусные дополнения после: rpm, tar, insmod, rmmod, chown, chgrp, mount, umount, find, ifconfig, ifup, ifdown, cvs, apt-get, route, make, service, iptable, cd, configure (!) ...;

команды, которым нужны пользователи(su, passwd, usermod, userdel ...), получают список пользователей; нужны группы - получай группы; kill хочет сигналов - "их есть у нас!" ; хосты, переменные, опции, остановленные(и фоновые) задания ... "каждому своё" :)

вдобавок куча программ дополняется только файлами с заданными расширениями: ogg123 только .ogg и .OGG; xpdf и acroread - .pdf и .PDF; ... и т.д.

всё это определяется в файле /etc/bash_completion , который затем читает ~/bash_completion , соответственно любые настройки можно добавить/восстановить для каждого пользователя персонально.

$ info bash

jellyfish
()

про себя -- попробую поставить. а с zsh есть одна проблема -- сильно сомневаюсь что все в районе /etc/rc.d будет работать ежели сделать /bin/sh линком на zsh..

dmiceman ★★★★★
()

2 jellyfish:

> команды, которым нужны пользователи(su, passwd, usermod, userdel ...)

Не ну это уже слишком...
Если "так" "писать кипятком", то можно и ноги ошпарить! ;)

anonymous
()

Мне понравилась. Только ругается у меня в ASPLinux 7.2 by default:
"bash: complete: illegal option: -g
complete: usage: complete [-abcdefjkvu] [-pr] [-o option] [-A action]
[-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat]
[-F function] [-C command] [name ...]"
Но в целом вещь приятная. Никогда на скорость набора не жаловался
(привык за 7 лет печатать не глядя на клавиатуру), но здесь просто
дополнительный помошник.


lionsoftware
()

К вопросу о /etc/rc.d. zsh - существенно лучше держит стандарты ksh, чем bash. Было уже несколько неприятных моментов. Поэтому, если что-то не работает в /etc/rc.d - править нужно именно там.

AlexM ★★★★★
()

Vim/Emacs, KDE/Gnome, Windows/UNIX... Come on, мужики. Остановите флейм, пожалуйста! Каждому свое, я привык к bash, и не хочу привыкать ни какому другому шеллу. Если вы пользуетесь zsh, не надо оскорблять других.

Очень классная вещь, я даже сел писать порт на FreeBSD. Если кто присоединится - буду рад, а то времени свободного совсем мало...

bison
()

Vim/Emacs, KDE/Gnome, Windows/UNIX... Come on, мужики. Остановите флейм, пожалуйста! Каждому свое, я привык к bash, и не хочу привыкать ни какому другому шеллу. Если вы пользуетесь zsh, не надо оскорблять других.

Очень классная вещь, я даже сел писать порт на FreeBSD. Если кто присоединится - буду рад, а то времени свободного совсем мало...

bison
()
Ответ на: комментарий от dmiceman

Не будет работать. Это не в упрек zsh -- сам им пользуюсь, но он не полностью совместим с bourne shell. в этом плане лучше брать korn shell (ksh), тем более, что под linux сейчас оно родное есть, прям от Корна, а разных вкусностей там ничуть не меньше, чем в zsh, но в отличие от него полная совместимость с /bin/sh

anonymous
()

Все возможности из перечисленных выше в этих дополнениях к bash уже реализованы в других оболочках, в полной мере наверно в zsh. Я где-то год назад перешел на zsh именно из-за его большей функциональности. Очень приятно что теперь и для bash реализовано что-то подобное.

Насчет совместимости с sh. В принципе были некоторые странности в работе zsh, после которых я предпочел оставить rootу по-умолчанию bash. Перейти полностью обратно на bash однако уже не смог. Но /bin/sh на всякий случай по-прежнему ссылается также на /bin/bash.

Из неупомянутых в мессаджах выше фичей, в zsh есть правый prompt (дополнительная строчка-приглашение, удобна например для вывода pwd, убирается с экрана при вводе длинной командной строки), встроенные команды для работы с ftp, разнообразная подсветка приглашений, autocd (переход в директорию по набору ее имени, без набора самой команды cd). С точки зрения человека привыкшего к классическому Bourne shell все эти штучки может быть покажутся излишествами, но когда к ним привыкаешь без них чуствуешь себя в командной строке дискомфортно. Это здорово, что bash не стоит на месте и продолжает развиваться, пусть это и отдалаяет его еще дальше от исторических корней Bourne shell. Кто как привык, так и работает, а за себя могу лишь сказать, что именно освоившись со всякими вкусностями zsh я почуствовал что командная строка есть самый рулезный способ руления компьютером :) Конечно, самая рульность скорее в мощи shellовых языков, позволяющих набором простых командам выполнять сложные действия, но всякие фенечки о которых здесь идет речь очень упрощают набор этих самых команд. Короче, Unix - rulez! И нечего тут спорить! :)

--
WBR,
Axel


anonymous
()
Ответ на: комментарий от anonymous

>Короче, Unix - rulez! И нечего тут спорить! :)
Верно все! С такими штучками как completion в ком. строке
окончательно пропадает надобность во всяких е.....банутых
файловых менеджерах. Больше completion-ов, хороших и разных!!!

anonymous
()

Я что - то не допонимаю. Что никто из вас всех не знает что такое {csh,tcsh} ?? Что зти все добивки там заложены изначально ?? Можно настроить не только complete для man и ssh но и обработку и добивки паратетром из Makefile. Да что говорить -- в tcsh настраивается все что угодно !!!

anonymous
()

Больше completion-ов, хороших и разных!!! :) точно, поэтому я пользую lftp для все что можно скачать :) у него еще и cache есть для всего подряд, в частности этих completions, плюс туда-же складываются данные от ls, соответственно один раз ls и потом ляпота, плюс cache'ы для сесий и вообще клиент всех времен и народов :)

anonymous
()

csh/tcsh неверно интерпретируют разные кавычки, в частности, когда
внутри есть символы ';' Это нужно, когда пишешь мини-скрипты
на перле прямо в ком. строке ( с ключом -e '...' ) Эта хрень
сильно достает. Смотрите статью 'Csh Programming Considered Harmful'
http://www.perl.com/pub/a/language/versus/csh.html

anonymous
()

> Я что - то не допонимаю. Что никто из вас всех не знает что такое
> {csh,tcsh}

Дело привычки. Я к примеру уже сильно привык к sh-синтаксису скриптов, разбираться еще и в csh конструкциях не вижу необходимости.

> Можно настроить не только complete для man и ssh но и обработку и
> добивки паратетром из Makefile

Tcsh конечно хорош по возможностям, но в оригинальном csh если не путаю этих возможностей изначально не было. Они появились именно в tcsh. Возможно я ошибаюсь?

--
WBR,
Axel

anonymous
()

Все верно в csh некоторые возможности ограничены. Все основные фичи появились только в tcsh. Но я часто встречался с рекомендациями в которых советают в интерактивном режиме работать с {tcsh,csh} а скрипты писать на {sh,bash}. Что я и делаю.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.