Quelqu'un peut-il me dire comment trouver le chemin d'accès du KornShell (ksh) sur ma machine et ensuite changer la ligne d'interpréteur dans tous les scripts shell (.sh) dans le courant répertoire qui montre un chemin d'accès différent pour ksh?UNIX, modifier la ligne d'interpréteur dans tous les scripts shell
Répondre
Cela vous donnera le chemin d'accès shell Korn:
which ksh
Et cela remplacera tralala dans tous les scripts shell:
sed -i 's/#!\/bin\/bash/#!insert escaped ksh path here/' *.sh
Mettre cela dans la première ligne de chaque fichier (ligne tralala):
#!/usr/bin/env ksh
Si vous devez remplacer vous pouvez utiliser sed/awk: find -name '*.sh' | xargs perl -pi -e "s{^#!/usr/bin/sh}{#!/usr/bin/env ksh}"
Qu'est-ce que c'est que ça? –
Supprimé. C'est à partir d'un extrait que j'ai trouvé qui cherchait des fichiers .pl ET .cgi. Merci de l'avoir attrapé. –
Pour savoir où vit ksh:
whence -a ksh
Pour modifier tous les scripts shell dans le répertoire courant à utiliser ksh:
Cela correspond aux sh
ou bash
et de préserver tous les espaces (et arguments) qui apparaissent après. Il agit uniquement sur la première ligne afin qu'il ne touche pas les lignes similaires qui peuvent apparaître plus tard dans le fichier.
Substituez l'emplacement réel de votre exécutable ksh ou utilisez /usr/bin/env ksh
. Utilisez sed -i .bak
si vous souhaitez sauvegarder les fichiers modifiés.
Cette commande localisera l'exécutable korn shell dans votre environnement UNIX:
which ksh
Si aucune sortie est renvoyée, le korn shell est manquant. (Au moins ne pas trouvé dans votre environnement PATH.) Vous pouvez l'obtenir à partir du site KornShell ou l'installer via votre système de gestionnaire de paquets logiciels.
Pour remplacer la ligne d'interprète dans tous les scripts shell (* .sh), vous pouvez exécuter quelque chose comme ceci:
sed -i "s/^#\!.*$/#\!\/bin\/ksh/" *.sh
L'option -i
est d'éditer des fichiers en place. (Avertissement: Testez d'abord cette commande sans le -i
, pour éviter les modifications de fichier.)
L'argument indiqué est le motif qui correspond à toutes les lignes commençant par "#!" et remplacez-les par "#!/bin/ksh". (Notez que certains caractères spéciaux doivent être échappés avec "\" avant.) Vous devrez peut-être personnaliser cet argument si ce n'est pas exactement le remplacement que vous recherchez.
D'une manière ou d'une autre, j'obtiens une erreur: nom de variable non valide. Mais cela fonctionne: 'sed -i 's /^#\!.*$/#!\/ bin \/ksh /' * .sh' – danger89
Sur ma machine seulement cela fonctionne sed -i "s/^#\!.*/#\!\/usr\/bin\/perl/" *.sh
Everyother jette une erreur.
- 1. Compréhension facile des scripts shell UNIX et UNIX!
- 2. Unix - comment générer plusieurs scripts shell dans un répertoire?
- 3. erreur dans Unix (scripts)
- 4. Citation d'arguments de ligne de commande dans des scripts shell
- 5. Comment modifier un encodage de caractères de scripts shell?
- 6. scripts shell sur Windows XP
- 7. Expressions booléennes dans les scripts shell
- 8. FTP à SFTP dans les scripts shell
- 9. Compilateurs pour les scripts shell
- 10. Fonction Zip pour les scripts shell
- 11. Expression régulière Script shell Unix
- 12. Tableaux dans un shell Unix?
- 13. ## */Utilisation dans UNIX Shell Scripting
- 14. Que fait '-a' dans Unix Shell scripting
- 15. PHP: ignore_user_abort (true) dans tous les scripts
- 16. Sous-chaîne Unix dans un script shell?
- 17. Événements shell Unix?
- 18. Comment puis-je lire une ligne à la fois avec C shell dans unix
- 19. Scripts de contrôle d'application sous Unix
- 20. put Tous les scripts jquery dans la page maître
- 21. les scripts en ligne dans ASP.NET
- 22. Erreur logique dans l'aide Shell script.Please (UNIX)
- 23. Lecture dans le répertoire, script shell Unix
- 24. remplacer un texte particulier dans tous les fichiers en utilisant la commande shell simple ligne
- 25. Syntaxe soulignant les scripts shell PHP sans extension dans netbeans
- 26. Comment changer de shell dans unix
- 27. Tiles2 regroupe tous les scripts dans une définition ¿?
- 28. Comment exécuter des scripts shell dans un site ASP.NET
- 29. Jeditable doubler sur tous les sauts de ligne modifier
- 30. Utilisation de scripts shell éligibles
Peut-être vaut-il la peine de noter qu'il doit échapper à la corde qu'il insère. Mieux encore, je suppose qu'il est préférable d'utiliser quelque chose comme: 'echo 1/23 | sed 's ^/^ 2 ^''. De plus, vous n'avez pas besoin de '/ g', car il est à espérer qu'un seul par ligne ...:) –