Lorsque je echo $something >> file.txt
, une nouvelle ligne sera ajouté au fichier.
Et si je veux ajouter sans nouvelle ligne?
bash
redirection
onemach
la source
la source
echo $something
, son comportement dépend de laIFS
variable et vous risquez de vous retrouver avec un caractère qui disparaît. Vous pouvez essayer ce qui suit:var="hello world"; echo $var
(deux espaces entre hello et world) ouvar="hello world"; IFS='l'; echo $var
orvar="-e hello \\n world"; echo $var
. Pour résoudre ce problème, mettez des guillemets doubles autour de la variable comme ceci:,echo "$var"
ou utilisezprintf
.Réponses:
C'est pour ça
echo -n
.la source
cat
? (par exemple lorsque vous avez un fichiersomething.txt
plutôt qu'une variable$something
)printf
est très flexible et plus portable queecho
. A l'instar des implémentations C / Perl / etc, si vous ne terminez pas la chaîne de formatage avec\n
aucune nouvelle ligne n'est imprimée:la source
Si vous utilisez le résultat de la commande, vous pouvez utiliser xargs en combinaison avec echo
la source
tr
est une autre alternative.Si vous utilisez
echo
votre entrée, vous pouvez vous échappertr -d '\n'
.Cette technique fonctionne également lors de l’ajout de sorties à partir d’autres commandes (avec une seule ligne de sortie). De plus, si vous ne savez pas si les fichiers ont des fins de ligne UNIX ou DOS, vous pouvez les utiliser
tr -d '\n\r'
.Voici quelques tests montrant que cela fonctionne.
Newline inclus:
UNIX newline:
Style DOS:
Testé avec BSD
tr
et GNUtr
.la source