Сделать gnome-terminal показать команду, запущенную как title [duplicate]

По состоянию на 13/06/2012, этот PPA, похоже, содержит последнюю версию «10-полосного эквалайзера» (эквалайзер rhythmbox-plugin-equalizer), и он отлично работает для меня (12.04 и 14.04-64 бит).

sudo add-apt-repository ppa:fossfreedom/rhythmbox-plugins
sudo apt-get update
sudo apt-get install rhythmbox-plugin-equalizer
7
задан 28 April 2012 в 10:25

2 ответа

Это более полное решение, фактически заботящееся о том, чтобы избавиться от баха-завершения спам-мусора.

Чтобы быть ясным: я ничего не сделал сам по себе, кроме исследований.

Это отлично работает для меня с Gnome-Terminal / Terminator (поместите его в ваш .bashrc или где-то, что получает источник)

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'

    # Show the currently running command in the terminal title:
    # http://www.davidpashley.com/articles/xterm-titles-with-bash.html
    show_command_in_title_bar()
    {
        case "$BASH_COMMAND" in
            *\033]0*)
                # The command is trying to set the title bar as well;
                # this is most likely the execution of $PROMPT_COMMAND.
                # In any case nested escapes confuse the terminal, so don't
                # output them.
                ;;
            *)
                echo -ne "\033]0;${USER}@${HOSTNAME}: ${BASH_COMMAND}\007"
                ;;
        esac
    }
    trap show_command_in_title_bar DEBUG
    ;;
*)
    ;;
esac

Также это это Marius Gedminas , потому что я только что узнал об этом и хотел поделиться, и я думаю, что он полезен и здесь.

8
ответ дан 25 May 2018 в 12:16
  • 1
    Не делайте этого, не защищая ловушку с помощью теста, такого как [-n "$ PS1 " ] или ваши escape-последовательности будут деформировать скрипты! – Martin Dorey 12 May 2016 в 08:22
  • 2
    Я нашел с помощью local this_command=$(HISTTIMEFORMAT= history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//"); вместо очистителя $ BASH_COMMAND, поскольку он показывает псевдонимы в их оригинальной нерасширенной форме. – zeroimpl 23 November 2016 в 02:12

Это было похоже на ответ.

trap 'command' DEBUG делает bash run command перед каждой командой. echo -ne "\033]0;Title\007" изменяет заголовок на «Title» $BASH_COMMAND содержит команду, которая запускается.

Объединив их, мы получим

trap 'echo -ne "\033]0;$BASH_COMMAND\007" > /dev/stderr' DEBUG

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

tl; dr: Добавьте эти две строки (в этом порядке, в противном случае я получил искаженное приглашение) в нижней части ~/.bashrc ]

PS1="\033]0;\w\007${PS1}"
trap 'echo -ne "\033]0;$BASH_COMMAND\007" > /dev/stderr' DEBUG

Изменить: ваш $PS1 может уже изменить заголовок, и в этом случае нужна только последняя строка.

6
ответ дан 25 May 2018 в 12:16

Другие вопросы по тегам:

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