
Aqui está o que estou tentando fazer: tenho uma pasta para repositórios de código e estou procurando um comando bash que possa informar o "diretório raiz do código" do diretório de trabalho atual. Por exemplo, se estou atualmente em ~/repositories/my_program/folder1/folder2/
, quero que o comando retorne ~/repositories/my_program/
.
Posso obter o caminho do diretório de trabalho pwd
e uma lista de projetos usando ls ~/repositories/
. Como determino qual das ~/repositories/<match>
strings é um prefixo de pwd
?
Responder1
Se você quiser apenas o diretório abaixo ~/repositories
, você pode fazer algo como
$ sed -r "s#($HOME/repositories/[^/]*).*#\1#" <<<$PWD
/home/terdon/repositories/my_program
E só para imprimir my_program
:
$ sed -r "s#$HOME/repositories/([^/]*).*#\1#" <<<$PWD
my_program
Para usar ~/
em vez disso, tente
$ sed -r "s#$HOME(/repositories/[^/]*).*#~\1#" <<<$PWD
~/repositories/my_program
A ideia é combinar $HOME/repositories/
, depois mais um diretório (definido como a string mais longa de não- /
caracteres: [^/]*
).