Linux
使用文件列表在 vim 中打開文件不起作用
vim $(cat filelist)
我嘗試按照這個早先問題的建議使用 vim 打開文件。假設我有以下文件:
~/Workspace/bar/foo.cpp
當contains時
vim $(cat filelist)
從~/Workspace
正確打開執行。但是,當包含. 我想知道為什麼使用絕對路徑會導致命令失敗。foo.cpp``filelist``bar/foo.cpp``filelist``~/Workspace/bar/foo.cpp
這是由於在 shell 中執行不同類型的擴展的順序。
bash
手冊頁說:將其拆分為單詞後在命令行上執行擴展。執行的擴展有七種:大括號擴展、波浪號擴展、參數和變數擴展、命令替換、算術擴展、分詞和路徑名擴展。
替換
~
is 波浪號擴展,而您的$(...)
is 命令替換。現在您看到在執行命令替換後,不再有波浪號替換。使用真正的絕對路徑(從文件系統 root 開始/
)它會起作用。但是您可以自己執行擴展
sed
:vim $(sed "s_~_${HOME}_g" filelist)