Como criar um arquivo e inserir uma linha nele usando o terminal OS X

22

Como posso fazer o seguinte usando o terminal no OS X?

Crie um arquivo nomeado .inputrcno diretório inicial de um usuário e coloque esta linha nele:

set completion-ignore-case On

GGbro
fonte

Respostas:

31

Resposta rápida

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

Explicação

Primeiro, crie o arquivo:

touch ~/.inputrc

Em seguida, adicione o conteúdo ao arquivo:

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

touchcria um arquivo vazio (supondo que o ~/.inputrcarquivo ainda não exista). echograva texto na "saída padrão" ("stdout", abreviado), que normalmente é sua tela, mas devido ao redirecionamento ( >>), a saída é redirecionada para ~/.inputrc. Essa configuração anexará a linha ao arquivo.

Se ~/.inputrcjá existe e você deseja apagar (controlar) seu conteúdo e, em seguida, escreva a linha nele (por exemplo, crie um arquivo com apenas essa linha de texto), faça:

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

A seta única ( >), também conhecida como símbolo "maior que", indica echopara criar um arquivo com apenas o texto fornecido como conteúdo do arquivo, em vez de escrever o conteúdo no final do arquivo. (Na verdade, echonão cria o arquivo; o shell cria o arquivo, descartando qualquer conteúdo existente e o echocomando grava o novo conteúdo.)


Se você usar a primeira abordagem (com o >>) e descobrir que a linha que você adicionou é borrada na linha anterior, por exemplo,

algumas coisas aqui
mais algumas coisas aqui configuradas conclusão-ignorar-caso

então você precisa editar o arquivo para corrigi-lo. Isso aconteceria se a última linha do arquivo preexistente terminasse com um caractere textual em vez de um caractere "nova linha" (isto é, um marcador de fim de linha). Isso é comum para .TXTarquivos no Windows, mas raro no * nix.

Se você perceber de alguma forma antecipadamente que o seu .inputrcarquivo possui conteúdo preexistente que não termina com uma nova linha, use esta echoinstrução:

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

O \nantes da frase é interpretado como um caractere de nova linha; portanto, uma nova linha é adicionada após o conteúdo anterior e antes do novo item que você deseja adicionar.

Ou, um pouco mais de digitação, mas muito mais legível,

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

ou

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

que fazem a mesma coisa; ou seja, forneça o caractere de nova linha ausente ao texto existente e adicione o set completion-…comando depois disso.

Caleb Xu
fonte
11
Não há razão para usar o touchcomando aqui; echo "…" >> ~/.inputrcé o bastante.
G-Man diz 'Reinstate Monica'
11
A menos que o arquivo ao qual você deseja anexar não exista.
Amrx
@ Baron: Não, echo "…" >> ~/.inputrccriará o arquivo se ele não existir. Exceto em casos patológicos, como ~não existe, você não tem permissão de gravação ~ou o sistema de arquivos está cheio; e, nesses casos, touchnão ajudará.  touché completamente supérfluo aqui.
G-Man diz 'Restabelecer Monica'
4

Tudo que você precisa fazer é:

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

echo simplesmente reproduz o texto fornecido através do canal de saída normal (stdout)

o >>escreve a saída stdout do comando mão esquerda para o arquivo mão direita, que no seu caso é~/.inputrc

~/ é o mesmo que /home/your_username/

0x7a79
fonte