linux bash shell svn

linux - svn checkout command line



Bash: obtenga el Ășltimo nombre de directorio/nombre de archivo en un argumento de ruta de archivo (3)

Bash puede obtener la última parte de una ruta sin tener que llamar al basename externo:

subdir="/path/to/whatever/${1##*/}"

Intento escribir un enganche post-commit para SVN, alojado en nuestro servidor de desarrollo. Mi objetivo es tratar de obtener automáticamente una copia del proyecto comprometido en el directorio donde está alojado en el servidor. Sin embargo, debo ser capaz de leer solo el último directorio en la cadena de directorios que se pasa al script para poder realizar el pago en el mismo subdirectorio donde se alojan nuestros proyectos.

Por ejemplo, si hago un compromiso SVN con el proyecto "ejemplo", mi script obtiene "/ usr / local / svn / repos / example" como primer argumento. Necesito obtener solo "ejemplo" del final de la cadena y luego concatérselo con otra cadena para que pueda realizar el pago en "/ server / root / example" y ver los cambios en vivo inmediatamente.


El siguiente enfoque se puede usar para obtener cualquier ruta de un nombre de ruta:

pathname=a/b/c echo $(basename $pathname) echo $(basename $(dirname $pathname)) echo $(basename $(dirname $(dirname $pathname)))

Salida:

c b a


basename elimina el prefijo de directorio de una ruta:

$ basename /usr/local/svn/repos/example example $ echo "/server/root/$(basename /usr/local/svn/repos/example)" /server/root/example