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

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

$ echo $"\a" $ echo -e "\a" $ 

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

  1. ここに$"\a"とは何ですか?パラメータの拡張、コマンド置換、またはその他の何か?
  2. なぜechoは、たとえば

$ echo $NONSENSE空の行を表示しますか?ありがとうございます!

回答

しないでくださいUbuntuで音を出す:

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

ここで$"\a"とは何ですか?

Bashマニュアルのシェル拡張に関する章をお読みください。これは ANSI-Cの引用( South Parker によるコメント)

echoが空行を出力する理由

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

BTW、AppleはGPLv3 +ライセンスを嫌うと噂されているため、 bash Appleコンピュータの最新バージョン(例:2017年8月の4.4)に。

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

コメント

  • '非常に有益で、大いに感謝します!:)
  • $'...'は' "引用符の削除"と呼ばれますが、bashマニュアル'名前を付けません。この形式の引用は、少なくともksh93シェルですが、pdkshではありません。 'はPOSIX構文の拡張だと思います。
  • Kusalananda正しいと思いますが、構文はASCI-C引用と呼ばれます: gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
  • @SouthParkerああ、その' sその名前。覚えてくれてありがとう!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です