
Esto es lo que estoy tratando de hacer: tengo una carpeta para repositorios de código y estoy buscando un comando bash que pueda indicar el "directorio raíz de código" del directorio de trabajo actual. Por ejemplo, si actualmente estoy en ~/repositories/my_program/folder1/folder2/
, quiero que el comando regrese ~/repositories/my_program/
.
Puedo obtener la ruta del directorio de trabajo pwd
y una lista de proyectos usando ls ~/repositories/
. ¿Cómo puedo determinar cuál de las ~/repositories/<match>
cadenas es un prefijo pwd
?
Respuesta1
Si solo desea el directorio justo debajo ~/repositories
, puede hacer algo como
$ sed -r "s#($HOME/repositories/[^/]*).*#\1#" <<<$PWD
/home/terdon/repositories/my_program
Y solo para imprimir my_program
:
$ sed -r "s#$HOME/repositories/([^/]*).*#\1#" <<<$PWD
my_program
Para usar ~/
en su lugar, intente
$ sed -r "s#$HOME(/repositories/[^/]*).*#~\1#" <<<$PWD
~/repositories/my_program
La idea es hacer coincidir $HOME/repositories/
, luego un directorio más (definido como la cadena más larga de no /
caracteres: [^/]*
).