J'essaye d'écrire un hook post-commit pour SVN, qui est hébergé sur notre serveur de développement. Mon but est d'essayer de récupérer automatiquement une copie du projet engagé dans le répertoire où il est hébergé sur le serveur. Cependant, je dois être capable de lire uniquement le dernier répertoire de la chaîne d'annuaire transmise au script afin de vérifier dans le même sous-répertoire où nos projets sont hébergés. Par exemple si je fais un commit SVN au projet "example", mon script obtient comme premier argument "/ usr/local/svn/repos/example". J'ai besoin d'obtenir juste "exemple" à la fin de la chaîne, puis concattez-le avec une autre chaîne afin que je puisse aller à la commande "/ server/root/example" et voir les changements en direct immédiatement.Bash - Récupère le dernier nom/nom de fichier dans un argument de chemin de fichier
Répondre
basename
ne supprime le préfixe du répertoire d'un chemin:
$ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example
Bash peut obtenir la dernière partie d'un chemin sans avoir à appeler le basename
externe:
subdir="/path/to/whatever/${1##*/}"
Sur mon Mac, l'utilisation de la notation de sous-chaîne est plus que d'un ordre de grandeur plus rapide que dirname/basename pour le cas où vous faites quelque chose de trivial à quelques milliers de fichiers. – George
Cela ne fonctionnait pas du tout quand mon "/ path/to/whatever /" était une variable. –
@ButtleButkus: Montrez-moi ce que vous avez fait et ce que vous attendiez comme résultat, car cela fonctionnera. –
L'approche suivante peut être utilisé pour obtenir le chemin d'accès d'un chemin:
pathname=a/b/c
echo $(basename $pathname)
echo $(basename $(dirname $pathname))
echo $(basename $(dirname $(dirname $pathname)))
Sortie:
c
b
a
- 1. Récupère le chemin du fichier de configuration de l'application actuelle
- 2. Récupère le chemin complet d'un téléchargement de fichier
- 3. RAD Websphere - EAR ne récupère pas le dernier fichier
- 4. Apache vfs: récupère le dernier fichier modifié d'un répertoire (sftp)
- 5. Chemin du fichier comme argument de route MVC
- 6. Récupère le fichier sélectionné dans une fenêtre de l'Explorateur
- 7. Récupère le fichier de l'objet IOException
- 8. nom de fichier comme argument
- 9. Récupère le chemin d'un fichier XML statique en C#?
- 10. chemin de fichier explicite vers fichier dans le répertoire parent
- 11. Comment supprimer le suffixe de fichier et la portion de chemin d'une chaîne de chemin dans Bash?
- 12. xcode chemin de fichier
- 13. Récupère le chemin d'accès d'un fichier d'élément de solution dans Visual Studio Add-In
- 14. de script Bash pour lire un fichier
- 15. recherche de fichier script bash
- 16. descripteur de fichier Bash fuite
- 17. Contrôle de chemin de fichier
- 18. Récupère le dernier élément du tableau de chaînes dans vb6?
- 19. VBScript - Récupère le nom de l'ordinateur et/ou le chemin complet du fichier réseau
- 20. Récupère le fichier .sln de Team Foundation Server SDK
- 21. Comment obtenir le chemin d'accès complet à un argument de ligne de commande de nom de fichier?
- 22. bash alias avec argument et auto complétion
- 23. Problème avec le chemin de fichier relatif
- 24. Utilisation de stringWithFormat: comme chemin de fichier dans le cacao
- 25. Comment obtenir le chemin de fichier complet
- 26. comment trouver le chemin cible de lien si le fichier est un fichier de lien
- 27. Sortie de tuyauterie du programme C dans le fichier (bash)
- 28. Récupère le chemin du fichier généré par le code dans Visual Studio?
- 29. obtenir le chemin de fichier absolu de l'image dans WPF
- 30. extrait le nom de fichier du chemin
basename est définitivement ce que je cherche. Comment obtenir le nom de base d'un argument stocké dans une variable? Par exemple. 'SUBDIR ="/chemin/vers/quelquechose/$ (basename $ 1) "' – tj111
Je reçois l'erreur "basename: opérande manquant" – tj111
@ tj111: ça sonne pas comme "$ 1", ou "$ 1" est vide – sth