情報をファイルに転送するためにパイプを使用していますが、ツールはギガバイトmyTool > file.txt 2>&1
のデータを生成できます。最初のNバイト(2MBなど)の後は切り捨てる必要があります。これを行う方法はないようですpv
。残念ながら、1行ずつ実行することはオプションではありません(head
)。
これを行うための基本的なツールはありませんか?
理想的には、次のように機能しますmyTool | limiter --amount 2M > file.txt 2>&1
。
答え1
複数の実装でこのオプションをサポートしていhead
ます-c
。 GNU実装はM
メガバイトのサフィックスも受け入れ、最新バージョンではMB
メガバイト(1,000,000)とMiB
メガバイト(1,048,576)もサポートしています。
head -c 2097152
head -c 2M
head -c 2MiB
head -c 2000000
head -c 2MB
を使用すると、を使用してpv
サイズを指定でき、を使用して-s
サイズに達するとすぐに読み取りを停止するように指示できます-S
。繰り返しますが、サフィックスはサポートされていますが、これは1000ではなく1024の累乗です。
pv -Ss 2M
pv -Ss 2097152
pv -Ss 2000000
(-q
進捗情報が必要ない場合は追加)
GNUを使用すると、dd
次のことができます。
dd iflag=fullblock,count_bytes bs=64k count=2097152 status=none
dd iflag=fullblock,count_bytes bs=64k count=2MiB status=none
dd iflag=fullblock,count_bytes bs=64k count=2M status=none
dd iflag=fullblock,count_bytes bs=64k count=2000000 status=none
dd iflag=fullblock,count_bytes bs=64k count=2MB status=none