カンマ区切り文字を含むテーブル形式のファイルをすばやく表示するためにエイリアスを作成したいと思います。
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
にはこのような文があります
ほとんどすべての目的で、エイリアスはシェル関数に置き換えられます。