文字列セット内のどの文字列が別の文字列のプレフィックスであるかを確認するBashコマンド

文字列セット内のどの文字列が別の文字列のプレフィックスであるかを確認するBashコマンド

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

おすすめ記事