Cómo crear un archivo e insertar una línea en él usando el terminal OS X

22

¿Cómo puedo hacer lo siguiente usando el terminal en OS X?

Cree un archivo nombrado .inputrcen el directorio de inicio de un usuario y ponga esta línea en él:

set completion-ignore-case On

GGbro
fuente

Respuestas:

31

Respuesta rápida

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

Explicación

Primero, cree el archivo:

touch ~/.inputrc

Luego, agregue el contenido al archivo:

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

touchcrea un archivo vacío (suponiendo que el ~/.inputrcarchivo aún no existe). echoescribe texto en la "salida estándar" ("stdout" para abreviar), que normalmente es su pantalla, pero debido a la redirección ( >>), la salida se redirige a ~/.inputrc. Esta configuración agregará la línea al archivo.

Si ~/.inputrcya existe y desea borrar (clobber) su contenido, y luego escribir la línea en él (es decir, crear un archivo con solo esta línea de texto), haga lo siguiente:

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

La flecha simple ( >), también conocida como símbolo "mayor que", le indica echoque cree un archivo con solo el texto dado como contenido del archivo, en lugar de escribir el contenido al final del archivo. (En realidad, echono crea el archivo; el shell crea el archivo, descarta los contenidos existentes y el echocomando escribe los nuevos contenidos).


Si usa el primer enfoque (con el >>) y encuentra que la línea que agregó está borrada en la línea anterior, por ejemplo,

algunas cosas aquí
algunas cosas más aquí establecen completar-ignorar-caso

entonces necesita editar el archivo para arreglarlo. Esto sucedería si la última línea del archivo preexistente terminara con un carácter textual en lugar de un carácter de "nueva línea" (es decir, un marcador de fin de línea). Esto es común para .TXTarchivos en Windows, pero raro en * nix.

Si de alguna manera se da cuenta de antemano de que su .inputrcarchivo tiene contenidos preexistentes que no terminan con una nueva línea, entonces debe usar esta echodeclaración en su lugar:

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

El \nantes de la frase se interpreta como un carácter de nueva línea, por lo que se añade una nueva línea después de los contenidos anteriores y antes de la nueva materia que desee agregar.

O, un poco más de mecanografía pero mucho más legible,

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

o

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

que hacen lo mismo; es decir, proporcione el carácter de nueva línea que falta al texto existente y luego agregue el set completion-…comando después de eso.

Caleb Xu
fuente
1
No hay razón para usar el touchcomando aquí; echo "…" >> ~/.inputrces suficiente
G-Man dice 'Reincorporar a Monica'
1
A menos que el archivo que desea adjuntar no exista.
amrx
@Baron: No, echo "…" >> ~/.inputrccreará el archivo si no existe. Excepto en casos patológicos, como ~no existe, no tiene permiso de escritura ~o el sistema de archivos está lleno; y, en tales casos, touchno ayudará.  touchEs completamente superfluo aquí.
G-Man dice 'Restablecer a Monica'
4

Todo lo que necesitas hacer es:

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

echo simplemente hace eco del texto que se le da a través del canal de salida normal (stdout)

el >>escribe la salida estándar del comando de la izquierda en el archivo de la derecha, que en su caso es~/.inputrc

~/ es lo mismo que /home/your_username/

0x7a79
fuente