シェルプログラミングに関する本を読んでいて、次のコマンドは同等であることがわかりました。Macではビープ音が鳴りますが、Ubuntuでは音が出ません:
$ echo $'\a'
$ echo -e "\a"
$
ただし、どちらの場合も、端末は空白行を要求します。私の質問は次のとおりです:
-
$'\a'
とは ここ?パラメータ拡張、コマンド置換、または他の何か? - なぜ
echo
たとえば、 の場合のように、パラメータが未定義であるかのように空の行を出力します。
$ 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)も参照してください。