GNU/Linux >> Linux の 問題 >  >> Linux

ベル文字「\a」のメカニズム?

シェルプログラミングに関する本を読んでいて、次のコマンドは同等であることがわかりました。Macではビープ音が鳴りますが、Ubuntuでは音が出ません:

$ echo $'\a'

$ echo -e "\a"

$

ただし、どちらの場合も、端末は空白行を要求します。私の質問は次のとおりです:

  1. $'\a'とは ここ?パラメータ拡張、コマンド置換、または他の何か?
  2. なぜecho たとえば、
  3. の場合のように、パラメータが未定義であるかのように空の行を出力します。

$ echo $NONSENSE 空の行を促すのはどれですか?ありがとう!

承認された回答:

Ubuntuでは音を出さないでください:

おそらく、特定のターミナルエミュレータが音を回避するように構成されているか、pcspkrが原因です。 カーネルモジュールがアンロードされるなど…別のターミナルエミュレータを使用できます(例:古いxterm )ビープ音が鳴るはずです。

$'\a'とは ここに?

Bashマニュアルのシェル拡張に関する章をお読みください。これはANSI-C引用と呼ばれます(サウスパーカーのコメントによる)。

エコーが空の行を印刷する理由

echo コマンド(続きを読むecho(1)…)は多くの場合bashシェルに組み込まれているため、(-nなし) )展開された引数(ここではベル文字)の後に改行が続きます。ただし、ターミナルエミュレータは可聴ベルを鳴らしません(ベル文字はではありません 制御文字なので表示されます)

ところで、AppleはGPLv3 +ライセンスを嫌うと噂されているので、bashをアップグレードするかもしれません Appleコンピュータの最新バージョン(2017年8月の4.4など)に変更します。

Unix上のターミナルエミュレータへの歴史的なアプローチについては、謎解きされたttyを読むかもしれません。 pty(7)も参照してください。


Linux
  1. Bashは独自の入力ストリームに書き込むことができますか?

  2. 端末がC/c ++プログラムで使用する文字エンコードを判別する方法は?

  3. Ansiエスケープコードを使用してターミナルカーソルで文字を取得することは可能ですか?

  1. Linuxスクリプトで端末のユーザー入力を隠す

  2. Mac OS X ターミナルの ip コマンド

  3. Linux で TCP トンネルを特殊文字デバイスとして公開することはできますか?

  1. Linuxターミナルで冒険に出かけましょう

  2. Bashscriptはターミナルからは機能しますが、Crontabからは機能しませんか?

  3. エコー$は何ですか?行う??