web-dev-qa-db-fra.com

Comment créer un fichier et y insérer une ligne à l'aide d'un terminal OS X

Comment puis-je effectuer les opérations suivantes à l'aide du terminal sous OS X?

Créez un fichier nommé .inputrc dans le répertoire de base d'un utilisateur et mettez-y cette ligne:

set completion-ignore-case On

20
GGbro

Réponse rapide

touch ~/.inputrc
echo "set completion-ignore-case On" >> ~/.inputrc

Explication

Tout d'abord, créez le fichier:

touch ~/.inputrc

Ensuite, ajoutez le contenu au fichier:

echo "set completion-ignore-case On" >> ~/.inputrc

touch crée un fichier vide (en supposant que le fichier ~/.inputrc n'existe pas déjà). echo écrit du texte sur la "sortie standard" ("stdout" en abrégé), qui est normalement votre écran, mais à cause de la redirection (>>), la sortie est redirigée vers ~/.inputrc. Cette configuration va ajouter la ligne au fichier.

Si ~/.inputrc existe déjà et que vous voulezeffacer(clobber) son contenu, puis écrivez la ligne dessus (c.-à-d. Créez un fichier aveconlycette ligne de texte), faites:

echo "set completion-ignore-case On" > ~/.inputrc

La flèche unique (>), un symbole "supérieur à", indique.v.k.a indique à echo de créer un fichier avec uniquement le texte donné en tant que contenu du fichier, au lieu d'écrire le contenu à la fin du fichier. (En fait, echo ne crée pas le fichier; le shell le crée, en supprimant tout contenu existant et la commande echo écrit le nouveau contenu.)


Si vous utilisez la première approche (avec le >>) et que vous trouvez que la ligne que vous avez ajoutée est insérée dans la ligne précédente, par exemple,

quelques trucs ici 
 plus trucs icidéfinir la complétion-ignorer-la casse

alors vous devez éditer le fichier pour le réparer. Cela se produirait si la dernière ligne du fichier préexistant se terminait par un caractère textuel plutôt que par un caractère "nouvelle ligne" (c’est-à-dire un marqueur de fin de ligne). Ceci est courant pour les fichiers .TXT sous Windows, mais rare sur * nix.

Si vous vous rendez compte d'avance que votre fichier .inputrc a un contenu préexistant qui ne se termine pas par un retour à la ligne, utilisez plutôt l'instruction echo:

echo -e "\nset completion-ignore-case On" >> ~/.inputrc

Le \n avant la phrase est interprété comme un caractère de nouvelle ligne. Ainsi, une nouvelle ligne est ajoutée après le contenu précédent et avant le nouveau contenu à ajouter.

Ou, légèrement plus typé mais beaucoup plus lisible,

echo "" >> ~/.inputrc
echo "set completion-ignore-case On" >> ~/.inputrc

ou

(echo ""; echo "set completion-ignore-case On") >> ~/.inputrc

qui font la même chose; c'est-à-dire, fournissez le caractère de nouvelle ligne manquant au texte existant, puis ajoutez la commande set completion-… par la suite.

28
Caleb Xu

Tout ce que vous devez faire c'est:

echo "set completion-ignore-case On" >> ~/.inputrc 

echo fait simplement écho au texte qui lui est donné via le canal de sortie normal (stdout)

le >> écrit la sortie stdout de la commande de gauche dans le fichier de droite, qui dans votre cas est ~/.inputrc

~/ est identique à /home/your_username/

2
0x7a79