linux - via - Obtenha o último nome/nome de arquivo em um argumento de caminho de arquivo no Bash




svn commit terminal linux (2)

A seguinte abordagem pode ser usada para obter qualquer caminho de um nome de caminho:

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

Saída:

c
b
a

Eu estou tentando escrever um gancho post-commit para o SVN, que está hospedado em nosso servidor de desenvolvimento. Meu objetivo é tentar fazer checkout automaticamente de uma cópia do projeto confirmado no diretório em que ele está hospedado no servidor. No entanto, eu preciso ser capaz de ler apenas o último diretório na string de diretório passado para o script, a fim de fazer o checkout para o mesmo subdiretório onde nossos projetos estão hospedados.

Por exemplo, se eu fizer um SVN commit para o projeto "example", meu script obtém "/ usr / local / svn / repos / example" como seu primeiro argumento. Eu preciso obter apenas "exemplo" fora do final da seqüência de caracteres e, em seguida, concatenar com outra seqüência de caracteres para que eu possa fazer check-out para "/ server / root / example" e ver as alterações ao vivo imediatamente.


O Bash pode obter a última parte de um caminho sem ter que chamar o basename externo:

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




svn