vim $(cat filelist)
私は以前提案したようにvimを使ってファイルを開いてみました。質問。
次のようなファイルがあるとしましょう。
~/Workspace/bar/foo.cpp
含まれていると、vim $(cat filelist)
実行が正しく開きます。ただし、含まれている場合、コマンドはファイルを開きません。絶対パスを使用すると、コマンドが失敗する理由がわかります。~/Workspace
foo.cpp
filelist
bar/foo.cpp
filelist
~/Workspace/bar/foo.cpp
ベストアンサー1
これは、さまざまな種類の拡張がシェルで実行される順序によるものです。マニュアルbash
ページには次のように記載されています。
拡張は単語に分割され、コマンドラインから行われます。中括弧拡張、チルダ拡張、パラメータおよび変数拡張、コマンド置換、算術拡張、トークン化、パス名拡張など、7 種類の拡張が実行されます。
~
isチルダ拡張を置き換え、$(...)
isコマンドを置き換えます。コマンド置換を実行した後、チルダ置換がなくなったことがわかります。実際の絶対パス(ファイルシステムのルートから始まる/
)を使用すると機能します。
ただし、次の方法で直接拡張を実行できますsed
。
vim $(sed "s_~_${HOME}_g" filelist)