declare -f growl
:iTerm2 +で
出力はstuckedガイド:
growl()
{
echo -n -e '
出力端子+ベルで文字。
定義を変更して、文字を関数定義にそのまま組み込むことなく、必要な文字を出力できるようにすることをお勧めします。 Bashのecho
コマンドは、-e
オプションを使用して、ベル文字に対して\a
などのエスケープシーケンスを認識できるようにします。詳細についてはinfo bash
を検索し、「エコー」を検索してください。
(あなたがあなたのターミナルエミュレータを台無しにしたら回復する方法を求めているならば、私は答えを持っていません。)
編集:私は質問を読み違えます。問題は、エスケープシーケンスを実際の制御文字に展開する$'...'
構文を使用していることです。明らかに、declare -f
は展開された文字列を印刷しています。ただ$'...'
構文を使用しないでください。
function growl()
{
echo -n -e '\e]9;'"[email protected]"'\a'
}
('\a'
が'\007'
に相当します。)
EDIT2:固定タイプミス
EDIT3:どうやらのbashの一部のバージョンでは、echo -n -e '\e'
は、エスケープ文字を印刷しませんが、 '\ 033'動作します。改訂ソリューション:
function growl()
{
echo -n -e '\033]9;'"[email protected]"'\a'
}
(質問者が使用しているのbash 3.2.48私は3.2.25が正しく、これを行うことが確認できましたそれは奇妙だ。。。)
\ e]と等価です。 – Tyilo
無効な構文+ 'echo -n -e $ \ e] 9; '" $ @ "' \ a''は唸り通知を表示しません – Tyilo
@Tyilo:間違った文字を削除しました。私はちょうどそれを更新する。再試行する。 (ちなみに、「Growl」はMacOS特有のものなので、実際にはテストできません) –