`pvファイル名bash関数sha256sum -b`

`pvファイル名bash関数sha256sum -b`

私はGNU bashバージョン4.3.48(1)-リリース(x86_64-pc-linux-gnu)でLinux Mint 18.2を使用しています。

100GB以上のファイルによく使用されるため、進行状況を表示するために定義した関数でsha256sum上書きしたいと思います。.bash_aliases

機能は次のとおりです。

function sha256sum {

    if [ -z "$1" ]
    then
    {
        \sha256sum --help
    }
    else
    {
        pv $1 | \sha256sum -b
    }
    fi

}

しかし、説明できない犯人が何人かいます。

まず、予期せず動作してパラメータを「食べる」ことを強制しました。

具体的には、次のファイルは次のようになります。

-rw-r--r-- 1 root root 2.0K Jul 24 12:29 testdisk.log

これで終了しないファイルサイズを出力します。

vlastimil@vb-nb-mint ~ $ sha256sum testdisk.log 
1.92KiB 0:00:00 [40.8MiB/s] [====================================================>] 100%            
1.92KiB
1.92KiB
1.92KiB
1.92KiB
1.92KiB
1.92KiB
1.92KiB
1.92KiB
1.92KiB
1.92KiB
1.92KiB
...
...
...
^C
[1]+  Stopped                 pv $1 | \sha256sum -b

私は何が間違っていましたか?中かっこの有無、セミコロンの有無などさまざまな構造を試しましたが、1時間以上これ以上の結果が得られませんでした。

編集1:

\次のように関数記号を削除します。

function sha256sum {

    if [ -z "$1" ]
    then
    {
        sha256sum --help
    }
    else
    {
        pv "$1" | sha256sum -b
    }
    fi

}

結果:

1.92KiB 0:00:00 [56.8MiB/s] [====================================================>] 100%            
1.92KiB
1.92KiB
1.92KiB
1.92KiB
...
...
...
^C
[2]+  Stopped                 pv "$1" | sha256sum -b

ベストアンサー1

\sha256sum関数本体の各項目は、関数への再帰呼び出しです。名前の前にバックスラッシュを付けるとエイリアスとして解釈されませんが、関数として解釈されることは防げません。

たとえば、元の関数のレイアウトを維持しながら、次のようにcommand sha256sum作成したいと思います。\sha256sum

function sha256sum {

    if [ -z "$1" ]
    then
    {
        command sha256sum --help
    }
    else
    {
        pv "$1" | command sha256sum -b
    }
    fi

}

おすすめ記事