Créer un fichier de sortie avec le multi en ligne de script à l'aide de l'écho / linux
Essayer de créer un petit script capable d'écrire une partie du script dans le fichier de sortie, sans aucun changement, (comme)
source fichier texte
echo "
yellow=`tput setaf 3`
bel=`tput bel`
red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0
echo"#${green}Installing packages${reset}#" &&
" >> output.txt
De sortie souhaité:
yellow=`tput setaf 3`
bel=`tput bel`
red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0
echo"#${green}Installing packages${reset}#" &&
Ce que j'obtiens est:
yellow=^[[33m
bel=^G
red=^[[31m
green=^[[32m
reset=^[(B^[[m
echo"#${green}Installing packages${reset}#" &&
À l'aide de CentOS 7 Minimale de la nouvelle installation
Vous cherchez une solution pour être appliqués à tous les script/texte, pas de la ligne par des modifications de la ligne, je suppose que peut être fait à l'aide de sed trop ...
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour échapper à la backticks (`):
Comme un bonus:
Je préfère utiliser cette méthode pour multiligne:
cp
autour.$(...)
de backticks. Dans un certain sens, lecat
solution est de moins en moins efficace, puisqu'il s'exécute un processus externe, tandis queecho
est intégré, mais dans ce cas, c'est un petit prix à payer pour plus de lisibilité.Utilisez l'apostrophe pour prévenir les expansions:
Pour plus de détails, voir La différence entre le double et le simple devis.
Si votre texte comporte des guillemets simples puis le ci-dessus peut ne pas fonctionner. Dans ce cas, à l'aide d'un ici doc serait plus sûr. Par exemple, le ci-dessus ne fonctionnera plus si vous insérez une ligne:
var='something'
.À l'aide d'un ici doc il sera comme ceci:
Juste un ajout tardif:
La
echo 'string' >> output
commande est simple et grand.Mais il peut vous donnent le"...: Permission denied' erreur combinée avec
sudo
.Récemment, j'ai eu un ptit problème avec sudo
echo 'string \n other string \n' > /path/to/file
Ce qui a fonctionné pour moi le meilleur:
printf "Line1\nLine2\nLine3" | sudo tee --append /path/to/file
C'est un supplément que vous avez réellement la chaîne imprimé sur le stdout trop, de sorte que vous pourrez voir ce qui a été écrit dans le fichier.
Grâce à chepner
Meilleure solution que j'ai trouvé est :
Avec cette solution, tout le texte va dans le fichier de sortie, sans la modifier, et la couleur de définitions de travail sans modifications.