【要約】PSA about abuse of cat(1) command. Don't abuse cats [Hacker_News] | Summary by TechDistill
> Source: Hacker_News
Execute Primary Source
// Discussion Topic
本スレッドは、catコマンドをパイプで繋いで他のコマンドに渡す、いわゆる「UUOC (Useless Use of cat)」という非効率な使い方の是非について議論している。本来、grepなどのコマンドは直接ファイルを開けるが、catを介することで不要なプロセスを生成してしまう問題である。
論点は以下の通りである。
論点は以下の通りである。
- ・不要なプロセス生成によるリソース消費の是非。
- ・コマンドの引数順序(grepのファイル指定位置)の習得コスト。
- ・タイピングの容易さとコマンドの使い勝手の関係。
// Community Consensus
コミュニティの反応は、技術的な正論を支持する層と、実用性や自由を重視する層で真っ向から対立している。効率性を求める意見がある一方で、教訓的な態度への拒絶感も強い。
【賛成派(UUOCを避けるべき)】
【賛成派(UUOCを避けるべき)】
- ・grepは単体でファイルを開けるため、catは不要である。
- ・パイプによるプロセス生成はリソースの無駄である。
- ・現代の計算資源では、プロセス増による影響は無視できる。
- ・cat x | grep ... と打つ方が、引数の順序を考えるより速い。
- ・ツールの使い方はユーザーが決めるべきであり、指示される筋合いはない。
// Alternative Solutions
- ・grep pattern file(catを使わず直接ファイルを指定する)。
- ・シェルの自動置換機能(エイリアスやプラグインによる最適化)。
// Technical Terms
Senior Engineer Insight
> 大規模なトラフィックや高頻度な処理を扱う現場では、シェルスクリプト内での不適切なプロセス生成は、リソース消費の増大を招くリスクがある。しかし、個人の対話型操作においては、タイピングの容易さが生産性に直結するため、合理的な判断と言える。重要なのは、作法を強要することではなく、シェル等の環境側で自動的に最適化される仕組みを検討することだ。技術的な正論が、必ずしも現場の生産性と一致しないことを示す好例である。