
這就是我想要做的:我有一個程式碼儲存庫資料夾,我正在尋找一個 bash 命令,它可以告訴當前工作目錄的「程式碼根目錄」。例如,如果我目前位於~/repositories/my_program/folder1/folder2/
,我希望命令返回~/repositories/my_program/
。
我可以使用 取得工作目錄路徑pwd
和項目清單ls ~/repositories/
。如何確定哪一個字串~/repositories/<match>
是 的前綴pwd
?
答案1
如果你只想要下面的目錄~/repositories
,你可以這樣做
$ sed -r "s#($HOME/repositories/[^/]*).*#\1#" <<<$PWD
/home/terdon/repositories/my_program
並且僅列印my_program
:
$ sed -r "s#$HOME/repositories/([^/]*).*#\1#" <<<$PWD
my_program
要使用~/
它,請嘗試
$ sed -r "s#$HOME(/repositories/[^/]*).*#~\1#" <<<$PWD
~/repositories/my_program
這個想法是匹配$HOME/repositories/
,然後再匹配一個目錄(定義為最長的非/
字元字串:[^/]*
)。