コマンド置換でvimを起動する

コマンド置換でvimを起動する

私は2つの異なるコンピュータでプロジェクトを進めています。 1つはMac OSX 10.8.3を実行し、もう1つはRed Hat Enterprise Linuxを実行しています。私のMacでは、次のことができます。

vim $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))

すべてが正常です。 Linuxシステムでは失敗します。これらすべては私が期待した通りに正しく機能します。

ls -R */*.@(h|cpp) */*/*.@(h|cpp)
echo $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
export myfilelist=$(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
echo $myfilelist

しかし、

vim $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))

破損したファイル名のセットを生成します。

^[[00m^[[00mevent_builder/include/eb_service.h^[[00m" [New DIRECTORY]

または

:ls
  1 %a   "^[[00m^[[00mevent_builder/include/eb_service.h^[[00m" line 1
  2      "^[[00mevent_builder/include/EventBuilder.h^[[00m" line 0

理由を知っている人はいますか?

ベストアンサー1

ls出力色を指定するエイリアス(または関数)があります。type -a ls何をしますか?代わりに使用

vim $(command ls ...)

しかし: 解析されないls

努力する

shopt -s nullglob globstar
printf "%s\n" **/*.{h,cpp}

おすすめ記事