シェルプログラミングに関する本を読んでいて、次のコマンドは同等であることがわかりました。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)も参照してください。