ヘッドとカットを用いたエイリアスパイプ

ヘッドとカットを用いたエイリアスパイプ

カンマ区切り文字を含むテーブル形式のファイルをすばやく表示するためにエイリアスを作成したいと思います。

alias thead='head | cut -d, -f1- | column -s, -t'

後でこのように使用される

thead file.csv

しかし、これはうまくいきません。正しい構文は何ですか?

ベストアンサー1

単純なコマンドよりも高度な機能を使用するには、エイリアスの代わりにシェル関数を使用してください。

thead () {
    head -- "$1" | cut -d, -f1- | column -s, -t
}

このシェル関数はhead最初の引数で実行され、パイプを介して結果を送信しますcutみんなこの部分は熱によって除去することができます-f 1-。もともとパイプラインでしたようにここに残しました。

または、

thead () {
    head -- "$2" | cut -d "$1" -f1- | column -s "$1" -t
}

...次のように使用できます。

thead ',' filename

それとも許可任意に選択できる区切り記号(提供されていない場合はカンマが使用されます)

thead () {
    local delim=','

    if [ "$#" -gt 1 ]; then
        delim=$1
        shift
    fi
    
    head -- "$1" | cut -d "$delim" -f1- | column -s "$delim" -t
}

上記の関数定義は通常、エイリアスを定義する任意の場所に配置できます。


エイリアスにパイプを使用する場合の問題は、パラメータと一緒にエイリアスを使用するときに、パラメータがパイプの最初のコマンドの後にではなくパイプの末尾に追加されることです。


マニュアルbashにはこのような文があります

ほとんどすべての目的で、エイリアスはシェル関数に置き換えられます。

おすすめ記事