Cygwinのbashのlsで 効かないLS_OPTIONSを 効かせたよ

Pocket

Cygwinのbashのlsで 効かないLS_OPTIONSを 効かせたよ
Cygwinのbashのlsで効かないLS_OPTIONSを効かせたよ

はい。

なぜか、cygwinのbashでは、lsでLS_OPTIONSが有効になりません。

「私の知らない武器(機能)が内蔵されているのか・・・!?」と、シロッコ風に気取って思っていましたが、強引に解決しました。

lsのLS_OPTIONSをエミュレートする

.bashrcで先頭のaliasの中に、ls $LS_OPTIONSを入れる
.bashrcで先頭のaliasの中に、ls $LS_OPTIONSを入れる

結論は簡単です。

.bashrcで先頭のaliasの中に、alias ls=”ls $LS_OPTIONS”を入れる、とするだけです。

すると、その後のに続くaliasでは、”ls”が”ls $LS_OPTIONS”に展開されます。

#上で設定した$LS_OPTIONS付きの"ls"が、展開される
alias llfa="ls -alF"

なお、今回のTeraTermの画面はCygTermではなく、リモートのCygwinのsshdへTeraTermでsshログインして撮っています。
リモートのcygwinにTeraTermでsshでログインする方法は、以下の記事で解説しています。

っ本酒!10倍仕事ができるLinuxのbashのエミ...
 
っ本酒!10倍仕事ができるLinuxのbashのエミュレーションシェルponsh -ponsh.online-
https://ponsh.ringing-web.com/archives/86
bash、emacs、Linuxを使いこなすために、悪戦苦闘している日々徒然と、オープンソースにしようとしているponshの開発日記

サンプルコード

例として、簡単な.bashrcのコードを記載します。

~/.bashrcに追記する

#------------ ls ----------------------
#export LS_OPTIONS="-cCF --color=never"
export LS_OPTIONS="-cCF"
alias ls="ls $LS_OPTIONS"
alias l="ls"
alias la="ls -a"
alias ll="ls -l"
alias lla="ls -al"
alias lfa="ls -aF"
alias llfa="ls -alF"
alias llf="ls -lF"

#------------ alias ----------------------
alias ali="grep ^alias ~/.bashrc | less"
alias alic="grep '^[#\s]*alias' ~/.bashrc | less"

lsを実行してみた結果

export LS_OPTIONS="-cCF"

上記のLS_OPTIONSの設定で、lsやls -lしてみた結果、以下のようになりました。

lsを実行してみた結果
lsを実行してみた結果

結論

結局、自分には、lsのオプションを設定する環境変数が、今現在もLS_OPTIONSなのかどうかはわかりませんでした。

そこで、少々強引にlsのaliasの式展開を使ってLS_OPTIONSの設定を反映するようにしました。

誤動作しないかどうかが気になる部分ではあります。

しかし、そこそこ便利ですので、経過を見て対応したいと思います。

それではー、またー。(^_^)/

参考サイト ありがとうございます。OSZ

20180306_ls_options

The LS_OPTIONS variable.

ls_options – Google 検索
Solaris 10 – 初期設定 – コマンドエイリアス : Server World
bash – Unable to put colors for LS by LS_OPTIONS – Stack Overflow