read、head -1、sed 1qの間に違いはありますか?

read、head -1、sed 1qの間に違いはありますか?

次のコマンドはほぼ同じようです。

read varname
varname=$(head -1)
varname=$(sed 1q)

read1つの違いは、whileとareが組み込みシェルではないことです。headsed

それ以外にも三人の行動に違いはありますか?

私の動機は、シェルと主なユーティリティ(たとえばhead,sed、usingをhead簡単に置き換えることができる場合は、readなぜread組み込み関数として存在するのですか?)をよりよく理解することです。

ベストアンサー1

効率性や内蔵性が最大の違いではありません。特定の入力の場合、すべて異なる出力を返します。

  • head -n1末尾の改行は、入力に改行がある場合にのみ提供されます。

  • sed 1q末尾の改行文字は常に提供されますが、そうでなければ入力は保持されます。

  • read末尾の改行は提供されず、バックスラッシュシーケンスが解釈されます。

また、read分割、タイムアウト、入力履歴などの他のオプションがあり、その一部は標準で、他の部分はシェルによって異なります。

おすすめ記事