シェルプログラミングに関する本を読んでいて、次のコマンドが同等であることを学びました。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構文の拡張だと思います。