Как заставить верхнюю панель моего терминала сказать, какая команда запущена?

Я часто запускаю команды параллельно, которые занимают много времени, и иногда я теряю информацию о том, что работает там, где они выводят в основном ту же информацию на экране.

Знаете ли вы, как узнать, какая команда работает в каком терминале?

12
задан 6 December 2017 в 10:06

3 ответа

Название окна терминала можно изменить, изменив значение переменной $PS1 - строки первичной подсказки. [1] [2]. Мы могли бы объединить это решение с идеей использования команды history из ответа Десерта.

Подход 1: автоматически обновить значение $PS1. (Обновить)

Добавьте следующие строки в конец файла ~/.bashrc:

# Change the terminal window title, based on the last executed command
rtitle() {
        # If the variable $PS1_bak is unset,
        # then store the original value of $PS1 in $PS1_bak and chang $PS1
        # else restore the value of $PS1 and unset @PS1_bak
        if [ -z "${PS1_bak}" ]; then
                PS1_bak=$PS1
                PS1+='\e]2;$(history 1 | sed "s/^[0-9 ]* \+//")\a'
        else
                PS1=$PS1_bak
                unset PS1_bak
        fi
};
export -f rtitle        # Export the function to be accessible in sub shells
#rtitle                 # Uncomment this line to change the default behaviour

Затем source ~/.bashrc или просто откройте новый терминал и используйте функцию в этом путь:

Выполнить rtitle, чтобы автоматически начинать изменять заголовок окна терминала, основываясь на последней выполненной команде. Выполните rtitle еще раз, чтобы вернуться к поведению по умолчанию.

Подход 1: автоматически обновить значение $PS1. (начальный ответ)

Добавить следующие строки в внизу файла ~/.bashrc:

set-title() {                                                                                 # Set a title of the current terminal window
        [[ -z ${@} ]] && TITLE="$(history 2 | head -1 | sed "s/^[0-9 ]* \+//")" || TITLE="$@" # If the title is not provided use the previous command
        [[ -z ${PS_ORIGINAL} ]] && PS_ORIGINAL="${PS1}" || PS_ORIGINAL="${PS_ORIGINAL}"       # Use the original value of PS1 for each future change
        PS1="${PS_ORIGINAL}"'\e]2;'"$TITLE"'\a'                                               # Change the prompt (the value of PS1)
}; export -f set-title

Затем source ~/.bashrc или просто откройте новый терминал и используйте функцию следующим образом:

Выполнить rtitle для автоматического изменения названия окна терминала на основе последней выполненной команды. set-title без аргумента изменит заголовок окна терминала на предыдущую команду.

Ссылки и примеры:

set-title без аргумента изменит заголовок окна терминала на предыдущую команду. [d13 ] Выполните rtitle еще раз, чтобы вернуться к поведению по умолчанию. Пример 1; Пример 2
2
ответ дан 22 May 2018 в 15:40

Название окна терминала можно изменить, изменив значение переменной $PS1 - строки первичной подсказки. [1] [2]. Мы могли бы объединить это решение с идеей использования команды history из ответа Десерта.

Подход 1: автоматически обновить значение $PS1. (Обновить)

Добавьте следующие строки в конец файла ~/.bashrc:

# Change the terminal window title, based on the last executed command rtitle() { # If the variable $PS1_bak is unset, # then store the original value of $PS1 in $PS1_bak and chang $PS1 # else restore the value of $PS1 and unset @PS1_bak if [ -z "${PS1_bak}" ]; then PS1_bak=$PS1 PS1+='\e]2;$(history 1 | sed "s/^[0-9 ]* \+//")\a' else PS1=$PS1_bak unset PS1_bak fi }; export -f rtitle # Export the function to be accessible in sub shells #rtitle # Uncomment this line to change the default behaviour

Затем source ~/.bashrc или просто откройте новый терминал и используйте функцию в этом путь:

Выполнить rtitle, чтобы автоматически начинать изменять заголовок окна терминала, основываясь на последней выполненной команде. Выполните rtitle еще раз, чтобы вернуться к поведению по умолчанию.

Подход 1: автоматически обновить значение $PS1. (начальный ответ)

Добавить следующие строки в внизу файла ~/.bashrc:

set-title() { # Set a title of the current terminal window [[ -z ${@} ]] && TITLE="$(history 2 | head -1 | sed "s/^[0-9 ]* \+//")" || TITLE="$@" # If the title is not provided use the previous command [[ -z ${PS_ORIGINAL} ]] && PS_ORIGINAL="${PS1}" || PS_ORIGINAL="${PS_ORIGINAL}" # Use the original value of PS1 for each future change PS1="${PS_ORIGINAL}"'\e]2;'"$TITLE"'\a' # Change the prompt (the value of PS1) }; export -f set-title

Затем source ~/.bashrc или просто откройте новый терминал и используйте функцию следующим образом:

Выполнить rtitle для автоматического изменения названия окна терминала на основе последней выполненной команды. set-title без аргумента изменит заголовок окна терминала на предыдущую команду.

Ссылки и примеры:

set-title без аргумента изменит заголовок окна терминала на предыдущую команду. Выполните rtitle еще раз, чтобы вернуться к поведению по умолчанию. Пример 1; Пример 2
2
ответ дан 18 July 2018 в 01:53

Название окна терминала можно изменить, изменив значение переменной $PS1 - строки первичной подсказки. [1] [2]. Мы могли бы объединить это решение с идеей использования команды history из ответа Десерта.

Подход 1: автоматически обновить значение $PS1. (Обновить)

Добавьте следующие строки в конец файла ~/.bashrc:

# Change the terminal window title, based on the last executed command rtitle() { # If the variable $PS1_bak is unset, # then store the original value of $PS1 in $PS1_bak and chang $PS1 # else restore the value of $PS1 and unset @PS1_bak if [ -z "${PS1_bak}" ]; then PS1_bak=$PS1 PS1+='\e]2;$(history 1 | sed "s/^[0-9 ]* \+//")\a' else PS1=$PS1_bak unset PS1_bak fi }; export -f rtitle # Export the function to be accessible in sub shells #rtitle # Uncomment this line to change the default behaviour

Затем source ~/.bashrc или просто откройте новый терминал и используйте функцию в этом путь:

Выполнить rtitle, чтобы автоматически начинать изменять заголовок окна терминала, основываясь на последней выполненной команде. Выполните rtitle еще раз, чтобы вернуться к поведению по умолчанию.

Подход 1: автоматически обновить значение $PS1. (начальный ответ)

Добавить следующие строки в внизу файла ~/.bashrc:

set-title() { # Set a title of the current terminal window [[ -z ${@} ]] && TITLE="$(history 2 | head -1 | sed "s/^[0-9 ]* \+//")" || TITLE="$@" # If the title is not provided use the previous command [[ -z ${PS_ORIGINAL} ]] && PS_ORIGINAL="${PS1}" || PS_ORIGINAL="${PS_ORIGINAL}" # Use the original value of PS1 for each future change PS1="${PS_ORIGINAL}"'\e]2;'"$TITLE"'\a' # Change the prompt (the value of PS1) }; export -f set-title

Затем source ~/.bashrc или просто откройте новый терминал и используйте функцию следующим образом:

Выполнить rtitle для автоматического изменения названия окна терминала на основе последней выполненной команды. set-title без аргумента изменит заголовок окна терминала на предыдущую команду.

Ссылки и примеры:

set-title без аргумента изменит заголовок окна терминала на предыдущую команду. Выполните rtitle еще раз, чтобы вернуться к поведению по умолчанию. Пример 1; Пример 2
2
ответ дан 24 July 2018 в 17:28
  • 1
    Очень хороший ответ! Есть ли способ сохранить текущую информацию каталога вместе с последней командой из истории? – Luca Minciullo 5 December 2017 в 16:22
  • 2
    Большое спасибо, вы действительно решили это красиво. – Luca Minciullo 5 December 2017 в 16:50

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

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