タグ

2020年4月2日のブックマーク (2件)

  • bash の for と パイプ(xargs) の一番大きな違い - それマグで!

    bash の似たものシリーズ 初心者が躓きそうなbash で似て紛らわしいものの違いをはっきりさせようとさせるシリーズ。 bash に於ける xargs / for には違いがあるのか? あります。結構大きな違いが有ります。 それぞれのループの回しかたを復習しておきましょう。 for ループでコマンド結果を回す for e in some_command ; echo $e; done xargs パイプでコマンド結果を回す some_command | xargs -I @ echo @; この2つの、コマンドの実行には違いが在るのでしょうか。またコマンドの実行の速度には違いが出るでしょうか? 2つの違い xargsはサブシェルを起動するので変数の名前空間が違う コマンドの終了を待つfor と 終了を待たない xargs こんかいは、この後者の違いについて着目したいと思います。 毎秒カウ

    bash の for と パイプ(xargs) の一番大きな違い - それマグで!
    otori334
    otori334 2020/04/02
  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

    シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
    otori334
    otori334 2020/04/02