использование ansi управляющие коды для изменения цвета фона в xfce4-терминале

Вот подход, который я считаю, это чуть менее грязно, чем ответ Gilles (Хотя я уступаю, чтобы быть субъективным суждением).

#!/bin/sh
this_dir=$(dirname "$0")        # Alternatively, hard-code this as this_dir=$HOME/bin
redacted_PATH=$(echo ":${PATH}:" | sed -e "s:\:$this_dir\::\::" -e "s/^://" -e 's/:$//')
if obscured_prog=$(PATH=$redacted_PATH which foo)
then
            ⋮           # Munging to do before running /usr/bin/foo
        "$(obscured_prog)" argument(s)          # may be "$@", but might not be.
            ⋮           # Munging to do after running /usr/bin/foo
else
        echo "$0: foo (real) not found in PATH."
            ⋮           # Any code that you want to do anyway.
fi

Эта конструкция Redacted_Path Быть $ Путь Минус $ HOME / BIN каталог, где эта частная копия Foo жизни. ECHO ": $ {путь}:" добавляет двоеточия до начала и конца $ PATH , Таким образом, каждый компонент этого будет предшествовать и сопровождается толстой кишкой - Даже первый и последний. SED SED ищет

: $this_dir :

(с пробелами, добавленными для «ясности») и заменяет его с помощью

:

, т. Е. ЭТОТ $ thiss_dir из »: $ {путь }: «. Затем он удаляет двоеточия с самого начала и конца.

Тогда мы временно устанавливаем Путь на $ Redacted_Path И искать foo , используя , который . Если успешно, мы получаем полный путь к нему (например, / bin / foo или / usr / bin / foo ), Что мы используем для запуска реальной (публичной / общей / системной) копии FOO . Так как мы изменили Путь только временно, / bin / foo имеет доступ к Ambient пользователя $ PATH , И так, если / bin / foo работает BRILLIG , он может найти $ HOME / BIN / BRILLIG (если он существует).

У этого возникнет проблема, если $ HOME / BIN появляется в $ PATH несколько раз, Но это не слишком сложно, чтобы исправить.

0
24.02.2015, 20:41
1 ответ

С текущей версией xfce-терминала (4.12) это невозможно, так как для терминальной эмуляции используется старинный, основанный на Gtk+2 байт. Следует подождать, пока они перенесут свой код на новую, основанную на Gtk+3 vte, или переключиться на другой терминальный эмулятор (например, gnome-terminal).

-1
28.01.2020, 05:06

Теги

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