シェルプログラミングに関する本を読んでいて、次のコマンドが同等であることを学びました。Macではビープ音が鳴りますが、Ubuntuでは音が出ません。
$ echo $"\a" $ echo -e "\a" $
ただし、どちらの場合も、端末は空白行を要求します。私の質問は次のとおりです。
- ここに
$"\a"とは何ですか?パラメータの拡張、コマンド置換、またはその他の何か? - なぜ
echoは、たとえば
$ echo $NONSENSE空の行を表示しますか?ありがとうございます!
回答
しないでくださいUbuntuで音を出す:
おそらく、特定のターミナルエミュレーターが次のように構成されているためです。音を避けたり、pcspkrカーネルモジュールがアンロードされているなどの理由で…別のターミナルエミュレータを使用できます(例:古いxterm)ビープ音が鳴るはずです。
ここで
$"\a"とは何ですか?
Bashマニュアルのシェル拡張に関する章をお読みください。これは ANSI-Cの引用( South Parker によるコメント)
echoが空行を出力する理由
echoコマンド(続きを読む echo(1) …)は、多くの場合、 bashシェルが組み込まれていますので(-n)展開された引数(ここではベル文字)の後に改行が続きます。ただし、ターミナルエミュレータは可聴ベルを鳴らしません(ベル文字は制御文字であるため、表示されません)。
BTW、AppleはGPLv3 +ライセンスを嫌うと噂されているため、 bash aをアップグレードすることをお勧めします。 > Appleコンピュータの最新バージョン(例:2017年8月の4.4)に。
歴史的なアプローチについては、謎解きされたtty を読むことができます。 Unix上のターミナルエミュレータへ。 pty(7)も参照してください。
$'...'は' "引用符の削除"と呼ばれますが、bashマニュアル'名前を付けません。この形式の引用は、少なくともksh93シェルですが、pdkshではありません。 'はPOSIX構文の拡張だと思います。