bashで\ nをnに拡張するのはなぜですか?

bashで\ nをnに拡張するのはなぜですか?

時に来るシェル操作、最初のステップは理解できますが、2番目のステップは少し混乱しています。これが私の理解です:

まず、シェルは入力を単語と演算子に分割し、引用規則に従って実行します。私が持っているいくつかの質問は次のとおりです。私が実行したとき:

$ \n
bash: n: command not found

なぜn: command not found?いいえ\n: command not found

$ $'\n'
bash: $'\n': command not found

ANSI-Cの引用を実施しないのはなぜですか?

しかし、入力がスクリプトファイルの場合、単語と演算子にどのように分割されますか?一行ずつまたは全体的に?

ベストアンサー1

バックスラッシュは次の文字を引用します(引用符を参照man bash)。\nしたがって、は次のように解釈されますn(コマンドの最初の単語として、これはエイリアスの拡張を防ぎます。ALIASESを参照man bash)。

$'\n' はいANSI-C引用符として解釈されます。 Bashは同じ引用符を使用して問題のある文字を表示します。同じエラーが発生する可能性があります

'
'

これはそれと同じです。

単語分割プロセスは最初に説明されていますman bash。ご不明な点は、より具体的にご質問いただくか、確認してみてください。ソースコード

おすすめ記事