私はパーソナルコンピュータでOS / Xを実行し、リモートサーバーでLinuxを実行しています。 (Xserveがまだ作成していてもXserveを買う余裕はありませんでした。)私は両方のファイルに同じ.bashrcファイルを使用したいと思い、実行可能ファイル、ディレクトリなどを識別できるようにlsに色を付けたいと思います。 。
ただし、LinuxのGNUはコマンドラインスイッチがls
表示されると予想し--colors
、そうでなければカラー表示を拒否します。 Apple(BSD?)は色を表示するようにシェル変数を表示することをls
好みます。export CLICOLORS=1
ls
私は両方ともしますが、--colors
Appleは未知のスイッチを見つけたらあきらめます。
ls
スイッチが承認されたかどうかを検出し、エイリアスを追加するかどうかを判断するための良い方法は.bashrcにありますか--colors
?
ベストアンサー1
移植可能なタスクを実行する場合は、プラットフォーム以外の機能をテストします。
if ls --help 2>&1 | grep -q -- --color
then
alias ls='ls --color=auto -F'
else
alias ls='ls -FG'
fi
プラットフォームが変更されると、プラットフォームテストは中断されます。 macOSは現在BSDとGNUユーザーエリアツールの組み合わせを提供していますが、時間の経過とともに変化BSDツールを活用してください。したがって、2つの方法が異なる方法で実装する機能に依存している場合、Appleが依存するGNUツールを最も近いBSDツールに置き換えると、「macOS」のテストが失敗する可能性があります。機能テストは変化にもかかわらず、継続的に役に立つことがよくあります。
ボーナスとして、時には最初にテストしていないプラットフォームのサポートを作成することがあります。たとえば、上記のスクリプトスニペットはSolarisおよびFreeBSDでも正しい操作を実行する必要があります。
(ちなみに、これがGNU Autoconfの哲学であり、これがconfigure
10年前に書かれたスクリプトが今日でもまだ新しいシステムで実行できる理由です。)
エイリアスを適切に変更します。執筆時点に最も近いmacOSおよびLinuxシステムで使用された値のみを表示しています。