В командной строке, которая включает в ветке уровень заряда батареи и Git


Есть ли лучший способ справиться с цветовые коды и отображать в Git ветке и процент батареи?

#!/bin/bash

## set colors
t="\[\033[0;34m\]"
p="\[\033[0;35m\]"
g="\[\033[0;32m\]"
b="\[\033[0;36m\]"
y="\[\033[0;33m\]"
## the color reset code
re="\[\033[0m\]"



## inserts git brance into prompt at $(PBG)
PBG(){
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

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

## inserts battery percentage into prompt @ $(BATT)
BATT(){
    acpi | awk '{print $4}' | sed -e 's/,//'
}

PS1="$b($re$y\$(BATT)$re$p \h$re $gλ$re $g\W$re$t \$(PBG)$re$b)$re "

demo



149
4
задан 18 февраля 2018 в 05:02 Источник Поделиться
Комментарии
1 ответ

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

Вместо git branch + sedесть идиоматические способ, чтобы получить имя текущей ветки, используя git rev-parse:

git rev-parse --abbrev-ref HEAD

Это один процесс вместо двух.

И сделать процент батареи,
вы могли бы заменить awk + sed С одного на awk:

awk '{ sub(",", "", $4); print $4 }'

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

2
ответ дан 4 марта 2018 в 08:03 Источник Поделиться