Я использую эту остроту:
IP=$(/sbin/ifconfig | grep -e "inet:" -e "addr:" | grep -v "inet6" | grep -v "127.0.0.1" | head -n 1 | awk '{print $2}' | cut -c6-)
Использование ifconfig
(широко доступный), не берет localhost
обратитесь, не связывайте Вас с данным именем интерфейса, не принимайте во внимание IPv6, и пытается получить IP первого доступного сетевого интерфейса.
Делайте свое изменение оболочки заголовком окна каждый раз, когда это изменяет каталог, или каждый раз, когда это отображает подсказку.
Для Вашего ~/.bashrc
:
if [[ "$TERM" == screen* ]]; then
screen_set_window_title () {
local HPWD="$PWD"
case $HPWD in
$HOME) HPWD="~";;
$HOME/*) HPWD="~${HPWD#$HOME}";;
esac
printf '\ek%s\e\\' "$HPWD"
}
PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"
fi
Или для Вашего ~/.zshrc
(для zsh пользователей):
precmd () {
local tmp='%~'
local HPWD=${(%)tmp}
if [[ $TERM == screen* ]]; then
printf '\ek%s\e\\' $HPWD
fi
}
Для получения дополнительной информации ищите в соответствии с Динамическими заголовками в Экранном руководстве, или в соответствии с “Заголовками (называющий окна)” в странице справочника.
Вы можете поместить это в .bashrc, чтобы изменить имя терминала (имя окна) на последний каталог (или имя файла), в котором вы находитесь (работаете).
случай "$TERM" в
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"".
;;
*)
;;
esac
более подробно описано здесь: link
;' bash: PROMPT_COMMAND: line 0:
; screen_set_window_title' – liewl 19.01.2011, 07:40PROMPT_COMMAND
если уже было что-то, но у меня были компоненты в неправильном порядке. – Gilles 'SO- stop being evil' 19.01.2011, 10:08$HOME/*) HPWD="~${HPWD#$HOME}";;
с*) HPWD=`basename "$HPWD"`;;
– 31.03.2011, 00:32