четверг, 10 января 2008 г.

Настройка command prompt

Я нахожу не удобным то, что по в командной строке надо лишний раз писать pwd, что бы понять, где ты находишся. Намного более удобно, когда местонахожение указанно в приглашении (в тоже время, когда путь слишком длинный - это перестает быть удобным). Для настройки вида command prompt существуют shell-переменные PS1, PS2, PS3, PS4.

Самая полезная из них - первая, все остальные расширяют возможности первой. По умолчанию PS1='$(ppwd \l)\u@\h:\w>' (это в моем линаксе; хотя в мануале написанно PS1='\s-\v\$'), расшифровывается примерно так: имя_юзеря@имя_хоста:текущая_директория. Выглядит это так: Oleksandr.Lysenko@olysenko-pc:~ - не очень удобно. В мануале можно посмотреть, какие же еще значениями можно описать PS1:

  • \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
  • \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

Можно использовать значения переменных окружения, например PWD. Тогда самы простой и удобный вариант (для меня), будет PS1='[\t] $PWD> '.

В PS1 можно так же изменить заголовок xterm, для этого нужно изменить значение переменной следующим образом: PS1='[\t] $PWD> \e]2;${PWD}\a'.

1 комментарий:

Анонимный комментирует...

Спасибо! Полезно! :)
Только у меня возник вопрос - как сделать, что бы когда я залогинен по ssh, в заголовке xterm выводилось имя удаленного хоста + желательно еще имя удаленного пользователя.
Заранее спасибо!