LinuxForum.Fans
Тема

Первичное приглашение. По поводу переменной PS1

Автор: andr-ok 77 сообщений 9205 просмотров 🔒 закрыта
#289152

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

#289153

Ладно все, я подразобрался. Вопрос можно закрыть

#289154

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

#289155
Харитон написал:
терминал - это не поле виджетов где вы помещаете виджет с выводом времени и он вам его там всегда показывает.
терминал - это место для ввода команд. и только результат работы команд сможет вам что-то показать.
если в пс1 прописана дата-время, оно во время прорисовки строки отрисует ее. и все после пока вы будете ждать и вводить команду к месту где был вывод пс1 терминал не вернется, курсор уже находится впереди и соответственно ничего туда вывести не может. нажмите энтер - и у вас отрисуется новая строка с новым временем...

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

#289158
"andr-ok" написал:
Скажем Команда date выводит время. Можно как-то сделать чтоб в режиме ожидания строка которую вывела date менялась в соответствии с показанием часов?
text
watch -n 1 date
text
while :; do clear; date; sleep 1; done
#289161
"Lupo Alberto" написал:
do clear;

Жульничаете? :)

#289163
"moshell" написал:
Харитон, интересно стало, где находятся настройки приглашения?
возможно ли подкрутить чтоб в приглашении отображалось время текущее. (время когда приглашение вывелось на экран)

~/.zshrc

text

### Приглашения командной строки
# Обычное приглашение
# PROMPT='%~%#=> '
PROMPT=$'%{\e[1;32m%}[%{\e[1;34m%}%~%{\e[1;32m%}]%{\e[1;31m%}%#%{\e[0m%}'
# Приглашение второй строки
PROMPT2='%i%U> '
# Приглашение с правой стороны экрана
if [[ $EUID == 0 ]]; then
    RPROMPT=$'%{\e[1;32m%}[%{\e[1;31m%}%m%{\e[1;32m%}]%{\e[1;32m%}[%{\e[1;33m%}%T%{\e[1;32m%}]%{\e[0m%}'
else
    RPROMPT=$'%{\e[1;32m%}[%{\e[1;34m%}%m%{\e[1;32m%}]%{\e[1;32m%}[%{\e[1;33m%}%T%{\e[1;32m%}]%{\e[0m%}'
fi

#289164

вот в этой переменной и хранится значение. для каждого процесса есть своя среда окружения с переменніми в которых хранятся их значения. они либо при старте задаются либо импортируются из экспортируемых переменных у предков...
Пропишите себе export PS1="\[\e]0;\u@\h: \w\a\]\[\033[01;31m\]\t \[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$" и увидите много интересного...

#289165
"-=Serj=-" написал:
Жульничаете? ab

А что не так?

#289167
"Lupo Alberto" написал:
А что не так?

clear просто пролистывает терминал на одно окно вниз, ну или по-другому выводит пустые строки в кол-ве, равном высоте окна. Вроде так...

#289168
"-=Serj=-" написал:
clear просто пролистывает терминал на одно окно вниз, ну или по-другому выводит пустые строки в кол-ве, равном высоте окна. Вроде так...

Я так просто окно терминала «чищу»

"man clear"
text

clear(1)                                                                                                                         clear(1)

NAME clear - clear the terminal screen

SYNOPSIS clear

DESCRIPTION clear clears your screen if this is possible. It looks in the environment for the terminal type and then in the terminfo database to figure out how to clear the screen.

clear ignores any command-line parameters that may be present.

SEE ALSO tput(1), terminfo(5)

This describes ncurses version 5.9 (patch 20110404).

clear(1)

#289169
moshell написал:

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

нашел следущее. где енто можно поправить? в каком конфиге?

PROMPTING
When executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and the secondary prompt PS2 when it needs more input to complete a command.
Bash allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows:
\a an ASCII bell character (07)
\d the date in "Weekday Month Date" format (e.g., "Tue May 26")
\D{format}
the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces
are required
\e an ASCII escape character (033)
\h the hostname up to the first `.'
\H the hostname
\j the number of jobs currently managed by the shell
\l the basename of the shell's terminal device name
\n newline
\r carriage return
\s the name of the shell, the basename of $0 (the portion following the final slash)
\t the current time in 24-hour HH:MM:SS format
\T the current time in 12-hour HH:MM:SS format
\@ the current time in 12-hour am/pm format
\A the current time in 24-hour HH:MM format
\u the username of the current user
\v the version of bash (e.g., 2.00)
\V the release of bash, version + patch level (e.g., 2.00.0)
\w the current working directory, with $HOME abbreviated with a tilde (uses the value of the PROMPT_DIRTRIM variable)
\W the basename of the current working directory, with $HOME abbreviated with a tilde
\! the history number of this command
\# the command number of this command
\$ if the effective UID is 0, a #, otherwise a $
\nnn the character corresponding to the octal number nnn
\\ a backslash
\[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
\] end a sequence of non-printing characters

The command number and the history number are usually different: the history number of a command is its position in the history list, which may include commands restored from the
history file (see HISTORY below), while the command number is the position in the sequence of commands executed during the current shell session. After the string is decoded, it
is expanded via parameter expansion, command substitution, arithmetic expansion, and quote removal, subject to the value of the promptvars shell option (see the description of the
shopt command under SHELL BUILTIN COMMANDS below).
#289170

в .bashrc7

#289171
"moshell" написал:
в .bashrc

Зависит от оболочки.

#289172
"Lupo Alberto" написал:
Я так просто окно терминала «чищу»

Да, но так получится не "перерисовывание" существующего, а вывод нового...

#289173
-=Serj=- написал:
[quote="moshell"]в .bashrc

Зависит от оболочки.[/quote]
вуаля!

text
10:59:13_gu@moshell:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\D{%T}_\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
10:59:23_gu@moshell:~$ 

так даже проще
11:03:45_gu@moshell:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\t_\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
11:04:03_gu@moshell:~$

#289174
-=Serj=- написал:
Да, но так получится не "перерисовывание" существующего, а вывод нового...

Как заказано ;)

"andr-ok" написал:
А есть ли возможность обновить в терминале то, что уже написано. Скажем Команда date выводит время. Можно как-то сделать чтоб в режиме ожидания строка которую вывела date менялась в соответствии с показанием часов?

Да и вообще, у программы clear в скриптах довольно узкая область применения: очищает терминал, на освободившееся место выводятся данные другой команды, изменяемые в течении времени.

#289175

мой способ круче))

тупо жми энтер и усё

text
11:04:03_gu@moshell:~$ 
11:07:59_gu@moshell:~$ 
11:07:59_gu@moshell:~$ 
11:07:59_gu@moshell:~$ 
11:08:00_gu@moshell:~$ 
11:08:00_gu@moshell:~$ 
11:08:00_gu@moshell:~$ 
11:08:00_gu@moshell:~$ 
11:08:00_gu@moshell:~$ 
11:08:01_gu@moshell:~$ 
11:08:01_gu@moshell:~$ 
11:08:01_gu@moshell:~$ 
11:08:01_gu@moshell:~$ 
11:08:01_gu@moshell:~$ 
11:08:01_gu@moshell:~$ 
11:08:01_gu@moshell:~$ 
11:08:02_gu@moshell:~$ 
11:08:02_gu@moshell:~$ 
11:08:02_gu@moshell:~$ 
11:08:02_gu@moshell:~$ 
11:08:02_gu@moshell:~$ 
11:08:02_gu@moshell:~$ 
11:08:02_gu@moshell:~$ 
11:08:03_gu@moshell:~$ 
11:08:03_gu@moshell:~$ 
11:08:03_gu@moshell:~$ 
11:08:03_gu@moshell:~$ 
11:08:03_gu@moshell:~$ 
11:08:03_gu@moshell:~$ 
11:08:04_gu@moshell:~$ 
#289178

заразил меня автор чота приглашением..

Войдите или зарегистрируйтесь, чтобы ответить.