Bash prompt configuration

Команда 'grep' выводит целые строки, в которых появляется «оболочка». Не только слово «оболочка». Как видно ниже:

grep shell test.txt
for shell_A
shell_B
shell_C

Я бы рекомендовал использовать параметр

-o, --only-matching

Итак:

grep -o "shell" test.txt | wc -w
0
21.12.2018, 02:00
1 ответ

Много заимствований из ответа Денниса Каарсемейкера:

PROMPT_COMMAND='_abbrev_pwd=$(sed -e "s:$HOME:~:" -e "s:/\(.\)[^/]*:/\1:g" <<< "$(dirname "$PWD")")/"$(basename "$PWD")"'
PS1='\u@\h ${_abbrev_pwd}> '

Переменная PROMPT _COMMAND — это специальная переменная bash , которая выполняется каждый раз перед выводом подсказки. Код здесь устанавливает переменную с именем _abbrev_pwdдля конкатенации следующих элементов:

  • вывод команды sed:$(sed -e... <<<...)
  • косая черта/
  • "текущая" директория:$(basename "$PWD")

Сама команда sed принимает в качестве входных данных строку здесь -; что здесь строка -является результатом вызова dirname "$PWD"для удаления текущего каталога. Затем эта строка подлежит двум заменам (, указанным в параметрах -esed ):

.
  1. замените любой внешний вид вашего каталога "$HOME" на тильду и
  2. заменить любой элемент пути (косой чертой, захваченным одиночным символом ., затем любое количество не -косой черты -)косой чертой, за которой следует (захваченный )] один символ; повторите, что шаблон соответствует "глобально" с флагом g. Я использовал :в качестве разделителя поиска и замены sedвместо обычного /, чтобы избежать синдрома наклона зубочистки при попытке уйти от желаемого вперед косая черта.

Наконец, мы настроили PS1 на использование переменной _abbrev_pwdвместо $PWD.

1
28.01.2020, 02:41

Теги

Похожие вопросы