エスケープシーケンスは機能的に異なる動作をします。

エスケープシーケンスは機能的に異なる動作をします。

lsのような関数を作成しようとしています。

私はこのエイリアスで始めましたが、うまくいきました。

alias l="/usr/bin/ls -lF --color=always | tr -s ' ' | cut -d ' ' -f 9-"

しかし、これを関数に変換すると、色は表示されません。

l() {
    local _c=
    [ -t 1 ] && _c=--color=always
    /usr/bin/ls -lF $_c "$@" | tr -s ' ' | cut -d ' ' -f 9-
}

エイリアスと関数の違いをすべて削除しても、まだ無色です。

l() {
    /usr/bin/ls -lF --color=always | tr -s ' ' | cut -d ' ' -f 9-
}

唯一のカラーバージョンはオイペのないバージョンです。

l() {
    /usr/bin/ls -lF --color=always
}

関数で色がパイプを通過するのを防ぐには?

答え1

l関数の定義や関数の前に使用したエイリアスを妨げていないことを確認してください。エイリアスは関数よりも優先されます。機能定義も拡張されました。

関連情報