这就是我想要做的:我有一个代码存储库文件夹,我正在寻找一个 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/
,然后再匹配一个目录(定义为最长的非/
字符字符串:[^/]*
)。