Supposons que j'ai une ligne que je veux ajouter à un fichier sans ouvrir un éditeur.
Comment puis-je ajouter cette ligne
alias list='ls -cl --group-directories-first'
à ce fichier
config.fish
Supposons que j'ai une ligne que je veux ajouter à un fichier sans ouvrir un éditeur.
Comment puis-je ajouter cette ligne
alias list='ls -cl --group-directories-first'
à ce fichier
config.fish
Vous pouvez ajouter un ligne de texte dans un fichier en utilisant l'option >>
opérateur :
echo "hello world" >> my_file.txt
ou dans votre cas
echo "alias list='ls -cl --group-directories-first'" >> config.fish
Veuillez prendre note de la différents types de devis .
Il existe de nombreuses méthodes pour ajouter des fichiers sans ouvrir d'éditeur de texte, notamment via les multiples utilitaires de traitement de texte disponibles dans Ubuntu. En général, tout ce qui nous permet d'effectuer open()
syscall avec O_APPEND
ajouté, peut être utilisé pour ajouter à un fichier.
Version GNU de dd
L'utilitaire peut ajouter des données au fichier avec conv=notrunc oflag=append
printf "\nalias list='ls -cl --group-directories-first'\n" | dd conv=notrunc oflag=append bs=1 of=config.fish
Nous pourrions utiliser quelque chose comme ceci sur le côté droit du pipeline :
dd conv=notrunc seek=$(wc -c < testFile.txt) bs=1 of=testFile.txt
Notez l'utilisation de bs=1
qui consiste à éviter les lectures courtes dans le pipeline
El tee
peut être utilisée lorsque vous avez besoin d'ajouter un fichier et de l'envoyer vers la sortie standard ou vers la commande suivante dans le pipeline.
tee -a config.fish <<< "alias list='ls -cl --group-directories-first'"
awk
a l'opérateur append >>
qui est également portable et définis par les spécifications POSIX
awk 'BEGIN{ printf "alias list=\x27ls -cl --group-directories-first\x27\n" >> "config.fish" }'
Nous pouvons combiner sed
drapeau de $
pour faire correspondre la dernière ligne avec a
pour l'ajout et -i
pour l'édition sur place.
sed -i '$a alias list='"'"'ls -cl --group-directories-first'"'" config.fish
Nous pourrions même mettre en œuvre quelque chose comme dd
dans Python 3 :
#!/usr/bin/env python3
# read bytes from stdin, append to specified file
import sys
with open(sys.argv[1],'ab') as f:
f.write(sys.stdin.buffer.read())
Ajouter à La réponse de Stefano vous pouvez également utiliser cat
:
Utilisation d'un hérédoc :
$ cat >> config.fish <<'EOF'
> alias list='ls -cl --group-directories-first'
> EOF
<<'EOF'
signifie "prends ce qui suit comme entrée, jusqu'à ce que tu atteignes une ligne qui est juste EOF
". Les guillemets signifient qu'il faut prendre l'entrée littéralement.
Ou en entrant la ligne sur stdin :
$ cat >> config.fish
Ensuite, collez ou tapez dans la ligne, appuyez sur Enter pour passer à une nouvelle ligne, puis appuyez sur Ctrl+D pour marquer la fin.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.