私がやろうとしていることは次のとおりです。コードストアフォルダがあり、現在の作業ディレクトリの「コードルート」を知らせる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/
ディレクトリ(最も長い非/
文字列として定義されています[^/]*
:)を一致させてから一致させることです。