Суббота, 20.04.2024, 14:37
Мой персональный сайт Добрым людям smart & sober

Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Калькулятор


Меню сайта
Календарь
«  Июнь 2012  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930


Форма входа


Архив записей
Мини-чат


Категории раздела


Наш опрос
В чем заключается ваш смысл жизни
Всего ответов: 154
 
Главная » 2012 » Июнь » 2 » Yet another cool story about bash prompt комментарии
00:20
Yet another cool story about bash prompt комментарии
Я влюблен в продукцию компании Apple: из всего их ассортимента, у меня на данный момент нет только Apple TV (я не смотрю телевидение вообще) и MacBook (жду пока прояснится ситуация с дисплеями). У меня есть и Mac Mini, и 2 iPod'a, и 2 iPhone, iPad и iMac. И это только у меня одного, не учитывая то, что еще есть в семье.

Прекрасное железо, прекрасная платформа, прекрасный софт. Я искренне уверен в том, что на данный момент для повседневных задач лучшего решения не существует. Но хоть убей меня, я не понимаю почему я должен пользоваться какими–то GUI'ями, если мне что-то удобнее сделать в консоли. Я пробовал, честно, где-то GUI прижился, где-то – нет.

PS Думаю, что если бы Apple возводило GUI как абсолютную истину, они бы из OSX выпилили любую возможность использовать консоль. Наоборот же, родной Terminal.app стоновится от версии к версии только лучше.
+14
1ex #
image
0
1101_debian #
Спасибо за статью, очень понравилась идея вводить команды с новой строки, нужно попробовать, а то у самого на 13" мониторе половина экрана занята инфой об окружении (тоже что и у вас, только вместо python'а ruby).

Для вывода текущей версии ruby и текущего gemset'а написал такую функцию.
rvm_gemset(){
 ruby_version=$(ruby -v | awk ' { print $2 } ')
 ree=$(ruby -v | grep -q Enterprise && echo "ree")
 if [ $ree ]
 then 
 ruby_version="ree"
 fi
 gemset=$(rvm current | awk -F@ ' { print $2 } ')
 if [ $gemset ]
 then
 echo "$ruby_version@$gemset "
 else
 echo "$ruby_version "
 fi
}
0
Stdit #
В приглашении люблю видеть время на сервере ("\D{%Y-%m-%d %H:%M:%S}") и полный путь к текущей директории ("\w"), а команду люблю вводить с новой строки ("\n$ "). Раскрашиваю приглашения разных серверов в разный цвет ("\e[32m"… "\e[0m"), чтобы случайно в запарке не выполнить команду не там, где надо.
+1
r13 #
Суровые программисты, как раз, пользуют zsh, vim и бабочек.
0
danilchenko #
Клевая штука! Как-то в голову не приходило перевести строку в приглашении, а длинное приглашение было неудобно…

И еще для любителей Mercurial:
аналогично git функция
# get hg status
function parse_hg_status {
# clear hg variables
HG_BRANCH=
HG_DIRTY=

# exit if no hg found in system
local HG_BIN=$(which hg 2>/dev/null)
[[ -z $HG_BIN ]] && return

# check we are in hg repo
local CUR_DIR=$PWD
while [ ! -d ${CUR_DIR}/.hg ] && [ ! $CUR_DIR = "/" ]; do CUR_DIR=${CUR_DIR%/*}; done
[[ ! -d ${CUR_DIR}/.hg ]] && return

# 'hg repo for dotfiles' fix: show git status only in home dir and other hg repos
[[ $CUR_DIR == $HOME ]] && [[ $PWD != $HOME ]] && return

# get hg branch
HG_BRANCH=$($HG_BIN branch 2>/dev/null)
[[ -z $HG_BRANCH ]] && return
#HG_BRANCH=${HG_BRANCH#refs/heads/}

# get hg status
local HG_STATUS=$($HG_BIN status 2>/dev/null)
[[ -n $HG_STATUS ]] && HG_DIRTY=1
}

Во всех местах, где есть git можно добавить и hg по аналогии
0
danilchenko #
Аргх, подсветку забыл
+1
danilchenko #
# get hg status
function parse_hg_status {
# clear hg variables
HG_BRANCH=
HG_DIRTY=

# exit if no hg found in system
local HG_BIN=$(which hg 2>/dev/null)
[[ -z $HG_BIN ]] && return

# check we are in hg repo
local CUR_DIR=$PWD
while [ ! -d ${CUR_DIR}/.hg ] && [ ! $CUR_DIR = "/" ]; do CUR_DIR=${CUR_DIR%/*}; done
[[ ! -d ${CUR_DIR}/.hg ]] && return

# 'hg repo for dotfiles' fix: show git status only in home dir and other hg repos
[[ $CUR_DIR == $HOME ]] && [[ $PWD != $HOME ]] && return

# get hg branch
HG_BRANCH=$($HG_BIN branch 2>/dev/null)
[[ -z $HG_BRANCH ]] && return
#HG_BRANCH=${HG_BRANCH#refs/heads/}

# get hg status
local HG_STATUS=$($HG_BIN status 2>/dev/null)
[[ -n $HG_STATUS ]] && HG_DIRTY=1
}
0
Dreadatour #
О, спасибо, добавлю себе (редко-редко приходится Mercurial кудрить)
+1
powerman #
hg status тормозит. гитовский __git_ps1 работает значительно по-шустрее, но всё-равно не так быстро как хотелось бы. А тормоза при выводе каждого приглашения bash — т.е. при выполнении каждой команды — создают раздражающее ощущение тормозящей системы.

Поэтому лично я использую утилитку vcprompt, которая во-первых написана на C для скорости, и во-вторых единообразно поддерживает кучу VCS. Я к ней дописал быструю поддержку определения modified/unknown для hg (жду пока автор мой pull request примет). Главное, не перепутать её с vcprompt :) написанной по мотивам предыдущей и совместимой с ней, но реализованной на питоне, т.е. медленной.
Просмотров: 611 | Добавил: Breger | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024