Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> Приглашение csh/tcsh

Приглашение csh/tcsh

Автор: SHPAk.


Вид командной строки в csh/tcsh по умолчанию мне не очень нравится, после гугления я нарыл вот такую вот инфу.Вид задается несколькими переменными окружения. Главная из них - prompt. По умолчанию приглашение командной строки имеет вид:
%

что ессно совершенно не устраивает. Введем команду
set prompt="%m%#"

где %m - имя компьютера, %# - символ > (или первый символ переменной promptchars) для обычных пользователей или символ # (или второй символ переменной promptchars) для суперпользователя.
Ур-р-а чёт поменялось!!!!!
machine>

Далее добавим имя текущего пользователя (%n) и полное имя директории, где мы сидим в данный момент(%/)
set prompt="%n@%m [%/]%# "

Вид меняется на:
user@machine [/usr/local/etc]>

Приглашение стало более информативным. Но полный путь занимает слишком много места. Меняем %/ на %c, урезающий отображаемый путь до имени текущей директории
set prompt="%n@%m [%c]%#"

и чё получилось ?
user@machine [etc]> 

Вот уже что-то. Добавим текущее время :))))
set prompt="%T %n@%m [%c]%#"

и опа...
23:01 user@machine [etc]> 

Наверное кого-то сильно напрягает символ > в конце приглашения. Для смены символа используем переменную promptchars
set promptchars="$#"

Первый символ подставляется вместо %# если вы обычный пользователь, а второй - если вы суперпользователь.
Теперь записываем полученный результат в ~/.cshrc или в /etc/csh.cshrc.

Ниже приведен список допустимых подстановок (подробности в man csh):
%/ Текущая рабочая директория
%~ Текущая рабочая директория, но домашная директория текущего пользователя представлено тильдой ~ и домашние директории остальных пользователей представлены как ~user. Подстановка ~user действует только в случае если оболочка (shell) уже использует ~user в имени пути в текущей сессии
%c[[0]n],
%.[[0]n]
Отслеживает конечный компонент пути к текущей рабочей директории или n конечных компонентов, при заданном n. Если n начинается с 0 количество пропущенных компонентов предваряет конечные в формате /<skipped>trailing. Если установлена переменная оболочки ellipsis, пропущенные компоненты будут представлены как ...trailing. Подстановка ~ действует аналогично %~, но будет игнорироваться при количестве конечных компонентов больше одного
%C Аналогично %c, но без подстановок ~
%h, %!, ! Номер события в текущей истории
%M Полное имя машины
%m Сокращенное имя машины. Отображается часть до первой точки
%S (%s) Включить (отключить) стандартный режим
%B (%b) Включить (отключить) режим жирного шрифта
%U (%u) Включить (отключить) режим подчеркивания
%t, %@ Время в 12-часовом (AM/PM) формате
%T
Аналогично %t, но в 24-часовом формате (зависит от переменной ampm оболочки)
%p Точное время суток в 12-часовом (AM/PM) формате, с секундами
%P Аналогично %p, но в 24-часовом формате (зависит от переменной ampm оболочки)
\c c будет распознан как код символа
%% Символ %
%n Имя пользователя
%j Количество запущенных в оболочке работ (jobs)
%d День недели в текстовом формате
%D День недели в числовом формате
%w Месяц в текстовом формате
%W Месяц в числовом формате
%y Год в двухзначном формате
%Y Год в четырехзначном формате
%l tty оболочки
%L Очищает от конца приглашения до конца экрана или строки
%$ Подставляет значение переменной оболочки или окружения с именем, заданным сразу после $ (например %$PATH)
%{string%} Включает строку как управляющая escape последовательность. Может использоваться для изменения атрибутов терминала (например для раскраски приглашения) и может не воздействовать на положение курсора. Не может быть последней последовательностью в приглашении
%? Возвращает код ошибки команды, запущенной непосредственно перед приглашением


Исходник статьи находится тут:http://mr-tacitus.blogspot.com/2008/02/cshtcsh.html

ЗЫ Лично для меня подошёл самый лаконичный вариант
set prompt="%{^[[40;33;1m%}[%T] %{^[[40;32;1m%} %/ >"

и выглядит это примерно так:
[10:08] /root >



размещено: 2008-04-14,
последнее обновление: 2008-04-14,
автор: SHPAk


Sk1f3r, 2008-04-14 в 10:15:47

Забыли про rprompt.

Моё приглашение:
set prompt = "[%U%n@%m%u]|$shlvl|%?|%B#%b "
# Promt like [user@host]|shell-level|errorcode|#
set rprompt = "[%c02 ]"
# RightPrompt like [previous/current workdir]

Morty, 2008-04-14 в 11:28:04

спс -)
приятная тема

Schax, 2008-04-14 в 18:45:40

Мое приглашение
       set prompt = '%{^[[3;33;1m%}[%$USER@'`/bin/hostname -s`"] %{^[[3;36;2m%}%t%{^[[40;34;1m%}#%{^[[2;32;3m%} "

Zerox, 2008-04-17 в 15:48:00

Спасибо, давно хотел изменить приглашение, да все руки не доходили.

unknownDaemon, 2008-04-17 в 17:34:07

Тады ловите мой /.cshrc :)

alias h         history 25
alias j         jobs -l
alias ls        ls -FG
alias la        ls -aFG
alias me        tail -50 -f /var/log/messages
alias cgrep     'grep --colour -B 999999'
alias clz       'colorize'

# A righteous umask
umask 22

set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin)

setenv  EDITOR  mcedit
setenv  PAGER   more
setenv  BLOCKSIZE       K
setenv  LSCOLORS ExGxFxdxCxDxDxBxBxExEx
#setenv  LSCOLORS ExFxBxDxCxEgEdAbAgAcAd
setenv  CLICOLOR
setenv  GREP_COLOR '1;33'
setenv  GREP_OPTIONS ' --color=auto'

if ($?prompt) then
       # An interactive shell — set some stuff up
#       set prompt="%m[%c]%#"
       set prompt="%B%{\033[34m%}%m%{\033[31m%}[%c]%{\033[30m%}%b"
       set filec
       set history = 100
       set savehist = 100
       set mail = (/var/mail/$USER)
       set autolist
       set complet all
       set autocorrect
       set nobeep
       set matchbeep = nomatch
       set correct = cmd
       set color
       if ( $?tcsh ) then
               bindkey "^W" backward-delete-word
               bindkey -k up history-search-backward
               bindkey -k down history-search-forward
       endif
endif

lookout, 2008-04-17 в 17:55:45

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

# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias cal='cal -m'
alias tls='tail -f /var/log/ssh/secure'
alias tlm='tail -f /var/log/mail/maillog'
alias tree='tree -Csu | more'
alias h='history'
alias ll='ls -lhap --color=tty | more'
alias du="du -h"
alias df="df -h"
alias ..="cd .."
alias e='emacs'
alias port='netstat -nlpt'
alias path='echo -e ${PATH//:/\\n}'
alias ipshow='iptables -n -v -L --line-numbers'
PROMPT_COMMAND='history -a'
shopt -s cdspell;
shopt -s cmdhist;
shopt -s cdable_vars;
shopt -s checkhash;
shopt -s checkwinsize;
shopt -s cmdhist;
shopt -s dotglob;
shopt -s no_empty_cmd_completion;
shopt -s sourcepath;
shopt -s histappend histreedit histverify;
shopt -s extglob;
ulimit -S -c 0
set -o notify
set -o noclobber
#set -o ignoreeof
set -o nounset
#alias mc='mc -b'
alias pd='postsuper -d ALL'
alias d='postsuper -d'
alias pr='postsuper -r ALL'

export PS1="[\t] \h [\u]\w < "

# Source global definitions
if [ -f /etc/bashrc ]; then
       . /etc/bashrc
fi

Харон, 2008-04-21 в 11:22:38

мой промпт:

set MainC = 'ESC[=3FESC[=0G'
       set HostC = 'ESC[36m'
       set TimeC = 'ESC[32m'
       set DayC = 'ESC[1mESC[32m'
       set DateC = 'ESC[0mESC[32m'
       set ttyC  = 'ESC[32m'
       set EvntC = 'ESC[0mESC[36m'
       set PathC = 'ESC[0mESC[32m'
       set GtC   = 'ESC[1mESC[37m'
       set ttyS = `expr ${tty} : 'tty\(.*\)'`
       set HostS = %m
       set Sep1 =  ':'
       set Sep2 =  '-'
       set Sep3 =  '/'
       if( `id -un` == 'root' ) then
         set SUColor = 'ESC[1mESC[31m'
         set Sep2 = "%{$SUColor%}#%{ESC[0m%}"
       endif
       set prompt = "%{$DayC%d$DateC${Sep3}%W.%y${Sep1}$PathC%B%/%b\n%}%B%{$HostC%}${HostS}%b${
Sep1}%B%{$ttyC%}${ttyS}%b${Sep2}%{$EvntC%}%h%{$TimeC%}${Sep3}%T%{$GtC>ESC[0%}m"

Замечательная вещь в том, что при работе с правами рута символ решетки выводится красным цветом.

STEALTH, 2008-09-19 в 11:37:16

спасибо
это моё писанное, созданноё по этой статье
set prompt="%{^[[40;35;1m%}|%{^[[40;30;1m%}%T%{^[[40;35;1m%}|\
%B%{\033[34m%}%{\033[31m%}[%{^[[40;36;1m%}%c%{\033[34m%}%{\033[31m%}]\
%{\033[30m%}%b %{^[[40;34;1m%}%# "

, 2008-12-06 в 11:57:18

[code]

if ( $?prompt ) then

   # example - :phoenix (~/dist/freebsd).
   set promptchars = '.!'

   # look into termcap(5) for `AF', `md', `me' definitions
   set prompt = "%{`echotc md``echotc AF 1`%}:%{`echotc AF 4`%}%m %{`echotc AF 1`%}(%{`echotc AF 3`%}%~%{`echotc AF 1`%})%{`echotc AF 2`%}%#%{`echotc me`%} "

endif

[/code]

lexy, 2009-07-17 в 18:53:38

маленький поправочка по поводу
set promptchars="$#"
работать не будет, т.к. $# - переменная и в кавычках будет транслироваться в значение.
так:
set promptchars='$#'
работает без проблем

Den, 2011-08-23 в 11:20:57

Народ.. у меня на 8.2 при изменении .cshrc постоянно происходит вход с такой ошибкой -

$ su
Password:
Too many (\'s.

в чём грабли? уже моск не варит

SHPAk, 2011-08-23 в 11:39:21

А пользователь входит в группу wheel?

Den, 2011-08-23 в 11:45:30

конечно

Wallenberg, 2012-04-21 в 0:02:23

можно ли сделать, чтобы вывод программ не оставался на экране после выхода из них?.. как в том же bash, чтобы после less к примеру не оставался весь вывод, в переменных шела не нашел ничего похожего..

Alex Keda, 2012-04-21 в 11:41:32

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

Wallenberg, 2012-05-14 в 11:59:21

я лишь спросил о такой возможности, возможно ли вообще..
логи/маны я и так в других табах открываю всегда, а вот выходя из vim\'а хотелось бы так сказать историю работы, а не открываемый файл
или те же утилиты мониторинга, как top и прочие

Крол, 2016-10-11 в 7:58:05

Товарищи, а можно изменить вид курсора в консоли? Хочу подчёркивание чтобы было, это меня так успокаивает, как в светлые старые ламповые времена :)



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0423 секунд
Из них PHP: 21%; SQL: 79%; Число SQL-запросов: 77 шт.
Исходный размер: 36148; Сжатая: 9323