web-dev-qa-db-ja.com

Bash + iTerm2では、どのようにタブに名前を付けるのですか?

ITerm2(Build 1.0.0.20120203)では、私は通常いくつかのタブを開きます。それぞれのタブは分割されていて、例えばリビジョン管理、コーディング、ファイル管理、mysql端末作業などの特定の作業テーマです。私は通常、ワークフロー内で5つ以上のタブを切り替える必要があります。画面の内容を見てどれがどれであるかを覚えたり見分けるのが難しい場合があります。どういうわけかタブに名前を付けたいので、すばやくちらっと見ることでどれがどれであるかすぐにわかります。これは可能ですか?

172
qazwsx

あなたはMac上でiterm2を使っているので、もう一つの選択肢はあなたがただ打つことができるということです CmdI、何かをタイプし、そしてヒット ESC

端末ソリューションはこれより少し速いですが、ただあなたに知らせたいと思いました。

206
mawaldne

私は~/.bashrcに置いておくと便利な以下の関数を見つけました。

function title {
    echo -ne "\033]0;"$*"\007"
}

それから私はbash Promptから次のようにそれを呼び出すことができます。

> title I want a pony!

そして私のタブはそれに応じてタイトルが付けられます。

117
Jason Sundram

タブまたはウィンドウのタイトルを設定するには、このコマンドを実行します。

export Prompt_COMMAND='echo -ne "\033]0;YOUR NAME HERE\007"'

私の~/.bash_profileに以下を追加して、いつも私のホームディレクトリに相対的な現在のディレクトリをリストします。

export Prompt_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'

ドックに最小化された端末が100台あるときに便利です。

マックワールドへのハットチップ

44
schpet

私は長い間上記と同じような解決策を使用しました、しかし私は私がそれらを容易に視覚的な参照のためにそれらに色分けされて欲しい十分なタブを使います。だから私は tabset 、私が各タブでやっている仕事の種類に基づいてタブのタイトル、バッジ、そして色を設定するためのユーティリティを作りました。

example

それは ノード を必要とします、しかしそれは今一般的にインストールされたプラットフォームです。インストールするには:

npm install -g iterm2-tab-set
16
Jonathan Eunice

この関数をあなたの~/.bash_profileファイルに追加すればうまくいきます。

function title ()
{
    TITLE=$*;
    export Prompt_COMMAND='echo -ne "\033]0;$TITLE\007"'
}
16
jiangyu7408

私はこれが好きです:

#setup terminal tab title
function title {
    if [ "$1" ]
    then
        unset Prompt_COMMAND
        echo -ne "\033]0;${*}\007"
    else
        export Prompt_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
    fi
}
title

タブの名前をカスタム名とデフォルトのCWDの間で切り替えることができます。

title - >あなたのタブのタイトルは~/YOUR_CWD/になります

title hey there - >あなたのタブのタイトルはhey thereになります

7
taylorstine

私は本当に taylorstineの答え が好きです、しかしそれは信頼するiTerm2の シェル統合 を壊しますPrompt_COMMAND変数に。 Taylorのコードを修正して、これを修正するときはいつでも__bp_precmd_invoke_cmdPrompt_COMMANDに追加することで修正できます。

# iTerm2 Shell integration
test -e "${HOME}/.iterm2_Shell_integration.bash" && source "${HOME}/.iterm2_Shell_integration.bash"

# iTerm2 tab titles
function title {
    if [ "$1" ]
    then
        export Prompt_COMMAND='__bp_precmd_invoke_cmd'
        echo -ne "\033]0;${*}\007"
    else
        export Prompt_COMMAND='echo -ne "\033]0;${PWD/#$HOME/\~}\007";__bp_precmd_invoke_cmd'
    fi
}
title
5
Michael

私は Michaelの 答えが好きです。

.iterm2_Shell_integration.bashが存在しない場合はどうなりますか?

これが私の考えです:

# iTerm2 Shell integration
test -e "${HOME}/.iterm2_Shell_integration.bash" && source "${HOME}/.iterm2_Shell_integration.bash"

# iTerm2 tab titles
function title {
  if [ "$1" ] ; then
    test -e "${HOME}/.iterm2_Shell_integration.bash" \
      && export Prompt_COMMAND='iterm2_preexec_invoke_cmd' \
      || unset Prompt_COMMAND
    echo -ne "\033]0;${*}\007"
  else
    test -e "${HOME}/.iterm2_Shell_integration.bash" \
      && export Prompt_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007";iterm2_preexec_invoke_cmd' \
      || export Prompt_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
  fi
}
title
3
user1318024
Preferences -> Profiles -> Terminal
  uncheck Terminal may set Tab/Window title

Max Cantorのコメントが役に立ちました。

2
B Seven

あなたがプロフィールを使っているなら(これはとても便利です):設定 - >外観 - >ウィンドウとタブのタイトル: 'プロフィール名を表示'をチェックします。

image

それはそれが世話をする方法です:

thumbnail linked to main image

2
aianitro

私は 自動プロファイル切り替えバッジ はあなたが必要とするもののために正確に設計されていると思います:

自動プロファイル切り替えiTerm2は現在のパス、ホスト名、ユーザー名について知っている情報を使ってプロファイルを変更できます。例えば、あなたのウィンドウの背景色や端末の文字エンコーディングは、異なるホストに接続するときに変わる可能性があります。

バッジ現在のセッションに関する情報を表示するバッジを端末の右上に置くことができます。ユーザー名、ホスト名、あるいは現在のgitブランチのようなカスタムデータさえも表示できます。

そのため、結果は次のようになります。

enter image description here

1
lengxuehx

私は B Seven の答えを少し明確にしたいと思います。

私たちのほとんどは、リモートシェルではなくローカルシェルにいない場合でもタブのタイトルをどのように設定できるかを知りたいので(例えばsshで)。

ステップ1. Preferences -> Profiles -> Terminal uncheck Terminal may set Tab/Window title

ステップ2.各タブについて、double click on the tab -> Session Title

これで、セッションのタイトルに何を設定しても、そのままになります。

0
Krishna Gupta