Обновление переменной git в командной строке командной строки для каждой команды

Я запускаю TCSH, и я хотел бы обновлять мое приглашение каждый раз, когда я запускаю команду. Я думаю, что в настоящее время это можно сделать с помощью backticks.

set tmpstr = `git status --untracked-files=no --porcelain` set prompt="%{\e[35;1m%} $tmpstr %{\e[32;1m%}%n%{\e[37m%}@%{\e[33m%}%m%{\e[37m%}:%{\e[36m%}%~%{\e[37m%}"\$"%{\e[0m%} " 

Но я действительно не хочу иметь полный список файлов каждый раз. Поэтому просто сказать, достаточно ли каталога GIT.

  set tmpstr1 = `git status --untracked-files=no --porcelain` if ("$tmpstr" == "") then set gitstr = 'Git: Clean' else set gitstr = 'Git: Uncommitted GIT ' endif set prompt="%{\e[35;1m%} \$gitstr %{\e[32;1m%}%n%{\e[37m%}@%{\e[33m%}%m%{\e[37m%}:%{\e[36m%}%~%{\e[37m%}"\$"%{\e[0m%} " 

Но gitstr не будет обновляться, так как это не команда. У кого-нибудь есть другие идеи? Или любые магические способы вызова полного оператора if каждый раз, когда я запускаю команду?

  • Режим Vim в оболочке FreeBSD?
  • Псевдоним для «cd», который показывает текущий каталог каждый раз, когда меняю каталоги?
  • Вопросы по завершению tcsh
  • Глобальный / etc / profile setenv или экспорт, перезаписывающий пользовательские настройки в .profile
  • FreeBSD csh, TAB, чтобы показать доступные варианты?
  • создание псевдонима для cmd с backticks
  • «переключатель» на основе оболочки
  • Преобразование содержимого файла в нижний регистр
  • One Solution collect form web for “Обновление переменной git в командной строке командной строки для каждой команды”

    Я закончил тем, что использовал precmd

    Я поместил alias precmd 'source ~/.tcsh/precmd.tcsh' в мой .cshrc-файл и переместил мою подсказку в этот файл.

    Источник .tcsh

     set tmpstr = `(git status --untracked-files=no --porcelain >! ~/out ) >&! ~/out1` #echo $tmpstr #for debugging if !( -s ~/out ) then if !( -s ~/out1 ) then set gitstr = "Git: Clean" set prompt="%{\e[35;1m%} \$gitstr %{\e[32;1m%}%n%{\e[37m%}@%{\e[33m%}%m%{\e[37m%}:%{\e[36m%}%~%{\e[37m%}"\$"%{\e[0m%} " else #echo "not in GIT" set prompt="%{\e[35;1m%} %{\e[32;1m%}%n%{\e[37m%}@%{\e[33m%}%m%{\e[37m%}:%{\e[36m%}%~%{\e[37m%}"\$"%{\e[0m%} " endif else set gitstr = "Git: Uncommitted GIT " set prompt="%{\e[35;1m%} \$gitstr %{\e[32;1m%}%n%{\e[37m%}@%{\e[33m%}%m%{\e[37m%}:%{\e[36m%}%~%{\e[37m%}"\$"%{\e[0m%} " endif 

    Это позволило мне проверить, когда я нахожусь, и вернуть статус в строку cmd. Когда из папки GIT он просто не сообщает статус GIT. Шениганы, идущие в tmpstr, должны удалить stderror из консоли.

    Linux и Unix - лучшая ОС в мире.