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

22

Comment puis-je faire ce qui suit en utilisant le terminal sur OS X?

Créez un fichier nommé .inputrcdans le répertoire personnel d'un utilisateur et mettez cette ligne dedans:

set completion-ignore-case On

GGbro
la source

Réponses:

31

Réponse rapide

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

Explication

Créez d'abord le fichier:

touch ~/.inputrc

Ensuite, ajoutez le contenu au fichier:

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

touchcrée un fichier vide (en supposant que le ~/.inputrcfichier n'existe pas déjà). echoécrit du texte dans la "sortie standard" ("stdout" pour faire court), qui est normalement votre écran, mais en raison de la redirection ( >>), la sortie est redirigée vers ~/.inputrc. Cette configuration ajoutera la ligne au fichier.

S'il ~/.inputrcexiste déjà et que vous souhaitez effacer (écraser) son contenu, puis y écrire la ligne (c'est-à-dire créer un fichier avec uniquement cette ligne de texte), procédez comme suit:

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

La flèche unique ( >), alias "supérieur à", indique echode créer un fichier avec uniquement le texte donné comme contenu du fichier, au lieu d'écrire le contenu à la fin du fichier. (En fait, echone crée pas le fichier; le shell crée le fichier, en supprimant tout contenu existant et la echocommande écrit le nouveau contenu.)


Si vous utilisez la première approche (avec le >>) et que vous constatez que la ligne que vous avez ajoutée est effacée sur la ligne précédente, par exemple,

des trucs ici
quelques autres trucs ici définissent l'achèvement-ignorer-cas

vous devez ensuite modifier le fichier pour le corriger. 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 .TXTfichiers sous Windows, mais rare sur * nix.

Si vous vous rendez compte à l'avance que votre .inputrcfichier a un contenu préexistant qui ne se termine pas par une nouvelle ligne, vous devez utiliser cette echoinstruction à la place:

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

L' \navant la phrase est interprétée comme un caractère de nouvelle ligne, donc une nouvelle ligne est ajoutée après le contenu précédent et avant les nouveaux éléments que vous souhaitez 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 set completion-…commande après cela.

Caleb Xu
la source
1
Il n'y a aucune raison d'utiliser la touchcommande ici; echo "…" >> ~/.inputrcc'est bien assez.
G-Man dit «Réinstalle Monica»
1
Sauf si le fichier que vous souhaitez ajouter n'existe pas.
amrx
@Baron: Non, echo "…" >> ~/.inputrccréera le fichier s'il n'existe pas. À l'exception des cas pathologiques, comme ~n'existe pas, vous n'avez pas de permission d'écriture ~ou le système de fichiers est plein; et, dans de tels cas, touchn'aidera pas.  touchest complètement superflu ici.
G-Man dit `` Réintègre Monica ''
4

Il vous suffit de:

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

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

l' >>écrit la sortie stdout de la commande gauche au fichier de la main droite, ce qui dans votre cas est~/.inputrc

~/ est le même que /home/your_username/

0x7a79
la source