Командная строка (можно ни исправить)

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Nelegal
Сообщения: 16
ОС: Slackware FreeBSD

Командная строка

Сообщение Nelegal »

Добрый День.

В FreeBSD токая особенность по умолчанию, что когда вводишь команд в shell например pkg + Tab то комманда не прописывается до pkg_ и не дает выбор. Мне как новичку очень тяжело так работать, я привык и Unix? можно ли как то это поменять, чтобы и выбор был и дописывал до следующих повторяющихся букв в команде.

Заранее Спасибо и простите новичка.
Спасибо сказали:
Igor Yakimchuk
Сообщения: 110
ОС: FreeBSD

Re: Командная строка

Сообщение Igor Yakimchuk »

в шеле csh вместо tab используйте ctrl+d, или поставьте bash, там будет tab.
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: Командная строка

Сообщение alv »

Nelegal писал(а):
13.09.2008 00:01
В FreeBSD токая особенность по умолчанию

Как верно было замечено в следующем посте, это не во FreeBSD, а в csh, который используется в ней по умолчанию как рутовый шелл.
Вариант решения:
1) вызывать рутовый шелл как /bin/tcsh - на самом деле это одно и то же, но вызванный как csh, tcsh его и эмулирует, а под своим именем - работает как он сам :)
2) прочитать маны и сделать подходящий конфиг для tcsh или найти в сети готовый и доделать под себя
один из таковых есть, например, здесь: http://alv-posix.blogspot.com/2008/08/c-shell-tcsh.html

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

Igor Yakimchuk писал(а):
13.09.2008 05:05
в шеле csh вместо tab используйте ctrl+d

control+d по умолчанию выводит варианты, а не даёт автодополнение
Спасибо сказали:
Igor Yakimchuk
Сообщения: 110
ОС: FreeBSD

Re: Командная строка

Сообщение Igor Yakimchuk »

control+d по умолчанию выводит варианты, а не даёт автодополнение

это да, малость ошибся.
Спасибо сказали:
Nelegal
Сообщения: 16
ОС: Slackware FreeBSD

Re: Командная строка

Сообщение Nelegal »

Igor Yakimchuk писал(а):
14.09.2008 17:46
control+d по умолчанию выводит варианты, а не даёт автодополнение

это да, малость ошибся.

А как выполнить автодополнение
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: Командная строка

Сообщение alv »

Nelegal писал(а):
14.09.2008 21:18
Igor Yakimchuk писал(а):
14.09.2008 17:46
control+d по умолчанию выводит варианты, а не даёт автодополнение

это да, малость ошибся.

А как выполнить автодополнение

Если Вас не устроили предыдущие советы, то никак: в чистом /bin/csh автодополнение работает только для путей, но не для команд.
Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: Командная строка

Сообщение arachnid »

а как называется действие, когда csh (и tcsh) при отсутствии вариантов дополнят команду?
например, набираю sd, жму ctrl-d, предлагается три варианта, добавляю i, жму ctrl-d и появляется полная команда sdiff ?
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: Командная строка

Сообщение arkhnchul »

в чистом /bin/csh автодополнение работает только для путей, но не для команд
Losing is fun!
Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: Командная строка

Сообщение arachnid »

Arkhnchul писал(а):
15.09.2008 14:00
в чистом /bin/csh автодополнение работает только для путей, но не для команд


в следующий раз думаем, если не знаем, ставим imho, а лучше молчим

на всякий случай - сейчас во фре 7.0 есть два испольняемых файла - и tcsh и csh. оба этих файла имеют одинаковый размер и совпадающую контрольную сумму md5, что позволяет говорить об их полной идентичности. с зависимости от того, запущу я один или другой, измениться вид приглашения, но поведение в виде автодополнения не меняется.

поэтому я и уточнил.

ps. давайте проверять, а то некрасиво получается...
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Аватара пользователя
evil
Сообщения: 149

Re: Командная строка

Сообщение evil »

у меня в csh tab дополняет название команды если оно уникально :)
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: Командная строка

Сообщение arkhnchul »

в следующий раз думаем, если не знаем, ставим imho, а лучше молчим

на форуме любой пост означает имхо автора, а не непреложную истину...
зы у меня в свежепоставленной фре автдополнение команд не работает. Пищит спикером и все. Если писать полный путь - /bin/чонить - <ctrl-d> - дополняет, просто команду - нет...
Losing is fun!
Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: Командная строка

Сообщение arachnid »

Arkhnchul писал(а):
16.09.2008 12:25
в следующий раз думаем, если не знаем, ставим imho, а лучше молчим

на форуме любой пост означает имхо автора, а не непреложную истину...
зы у меня в свежепоставленной фре автдополнение команд не работает. Пищит спикером и все. Если писать полный путь - /bin/чонить - <ctrl-d> - дополняет, просто команду - нет...

сейчас на работе с csh автодополнение срабатывает по tab'у - то есть при однозначном соотвествии

э... а почему с дома я написал, что по ctrl-d дополняет? странно :( вернусь - проверю
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: Командная строка

Сообщение alv »

arachnid писал(а):
15.09.2008 14:17
Arkhnchul писал(а):
15.09.2008 14:00
в чистом /bin/csh автодополнение работает только для путей, но не для команд


в следующий раз думаем

Очень верное замечание. А ещё лучше - сначала читаем, чтобы было над чем думать.
Так вот, файлы /bin/csh и /bin/tcsh есть не только в 7.0 - они были во Free всегда.
Но чистого C-shell в ней никогда не было, потому что это не свободная программа.
Чтобы убедиться, что /bin/csh и /bin/tcsh - идентичны, не обязательно считать их контрольные суммы, достаточно дать команду ls -i и поглядеть на ID этих файлов.
Ибо /bin/csh - это хардлинк на /bin/tcsh
Но /bin/tcsh, запущенный как /bin/csh, полностью эмулирует чистый C-shell, то есть игнорирует все продвинутые фичи последнего, в том числе и автодополнение команд. Это специально сделано по умолчанию и изменяемо посредством редактирования конфигов.
Но по умолчанию именно так, как сказано выше.

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

Код: Выделить всё

av79773# pkg_
pkg_add      pkg_create   pkg_delete   pkg_info     pkg_updating pkg_version
av79773# pkg_a
pkg_add
av79773# pkg_a

Соответственно, после каждого # pkg и так далее нажималось Control+d
Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: Командная строка

Сообщение arachnid »

проишел домой, проверил. почему написал, что дополнение происходит по ctrl-d - не скажу. вечернее помутнение?
но по tab'у дополнение работает. в файлах .cshrc никаких особых параметров не прописанно
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
blah
Сообщения: 24

Re: Командная строка

Сообщение blah »

alv писал(а):
16.09.2008 16:58
Но /bin/tcsh, запущенный как /bin/csh, полностью эмулирует чистый C-shell, то есть игнорирует все продвинутые фичи последнего, в том числе и автодополнение команд.
где это документировано?
Nelegal писал(а):
13.09.2008 00:01
В FreeBSD токая особенность по умолчанию, что когда вводишь команд в shell например pkg + Tab то комманда не прописывается до pkg_ и не дает выбор. Мне как новичку очень тяжело так работать, я привык и Unix? можно ли как то это поменять, чтобы и выбор был и дописывал до следующих повторяющихся букв в команде.
set autolist?
Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: Командная строка

Сообщение arachnid »

blah писал(а):
17.09.2008 04:10
alv писал(а):
16.09.2008 16:58
Но /bin/tcsh, запущенный как /bin/csh, полностью эмулирует чистый C-shell, то есть игнорирует все продвинутые фичи последнего, в том числе и автодополнение команд.
где это документировано?
Nelegal писал(а):
13.09.2008 00:01
В FreeBSD токая особенность по умолчанию, что когда вводишь команд в shell например pkg + Tab то комманда не прописывается до pkg_ и не дает выбор. Мне как новичку очень тяжело так работать, я привык и Unix? можно ли как то это поменять, чтобы и выбор был и дописывал до следующих повторяющихся букв в команде.
set autolist?

спасибо за set autolist - действительно, есть в мане такая фича. но странно, что у меня нигде эта переменная не определена.
и нигде в скриптах, читаемых tcsh, тоже...
ага, согласно ману tab будет дополнять всегда, когда соотвествие однозначно, а в случае установки autolist по табу будут выводиться и варианты
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: Командная строка

Сообщение alv »

Признаю свою ошибку:
действительно, /bin/csh и /bin/tcsh при одинаковых конфигах ведут себя абсолютно одинаково, что от рута, что от юзера.
В частности, при безальтернативности дополнение по Tab работает и там, и там.
Спасибо сказали: