2010-10-21 6 views
6

Je cherche quelque chose de similaire à indent mais pour les scripts (bash). Console uniquement, pas de colorisation, etc.Joli-print pour script shell

Connaissez-vous un?

+0

Pensez également à mettre vos réponses dans [cette question plus générale] (http://stackoverflow.com/questions/3923301/what-applications-do-you-know-of-that-can-reformat-code) – Benoit

Répondre

5

Vim peut indenter des scripts bash. Mais ne pas les reformater avant d'indenter.
Sauvegardez votre script bash, ouvrez-le avec vim, tapez gg=GZZ et le retrait sera corrigé. (Note pour les impatients: cela écrase le fichier, alors assurez-vous de faire cette sauvegarde!)

Cependant, quelques bugs avec << (attendant EOF comme premier caractère sur une ligne) par exemple.

EDIT: ZZ ne ZQ

+0

Ah mec! +1000 si je pouvais. – Jamie

0

En bash je fais ceci:

source <(echo "Zibri() {";cat script_to_be_reindented.sh; echo "}") 
declare -f Zibri| cut -c 5-|head --lines=-1|tail --lines=+3 

ce qui élimine les commentaires et réindentera le script "façon bash". il ne fonctionnera pas si le script contient Heredoc mais si vous faites ceci:

source <(echo "Zibri() {";cat script_to_be_reindented.sh; echo "}") 
declare -f Zibri|head --lines=-1|tail --lines=+3 

il fonctionnera avec un script, mais le script entier sera en retrait par 4 espaces. N'hésitez pas à modifier mais citez mon nom dans votre script et postez le! : D