Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development

7 consejos simples y útiles para la línea de comandos

Read Time: 12 mins

Spanish (Español) translation by Andrea Jiménez (you can also view the original English article)

Una de las herramientas más útiles, pero poco utilizadas, que tiene un desarrollador web es la línea de comandos. La terminal a menudo asusta a la gente; aquí es donde demostramos algunos de los comandos más útiles del día a día.


1. Conceptos básicos

Si eres nuevo en la línea de comandos, querrás saber algunas cosas que te ayudarán a orientarte.

Cambiar directorios

Puedes cambiar a un directorio diferente con lo siguiente:

Si te pierdes, puedes volver a tu directorio "home" con el comando "cd ~".

Listado de archivos y directorios

Si necesitas saber qué archivos contiene un directorio en particular:

Puedes usar el interruptor "-l" para mostrar el contenido como una lista, y el interruptor "-A" para mostrar también archivos ocultos (en máquinas basadas en Linux, los archivos y directorios cuyo nombre comienza con un "." se consideran 'ocultos').

Mostrar tu directorio actual

¡A veces solo quieres saber en qué directorio te encuentras actualmente!

Esto mostrará una ruta a tu carpeta actual.

Copiar archivos

Copiar archivos de un lugar a otro es rápido y fácil:

También puedes usar el interruptor "-R" al copiar para que sea recursivo, por lo que también se copian todos los subdirectorios y archivos.

Pero escribir es lento, y ¿qué pasa si no puedo recordar la ruta o el comando exactos?

La mayoría de las veces, la línea de comandos tiene habilitada la función de tabulación, por lo que puedes comenzar a escribir el nombre de un comando o la ruta de un archivo, presiona la pestaña y la completará por ti. Si hay más de una opción, no se completará, pero si presionas dos veces la pestaña, se enumerarán las opciones.

¡La función de tabulación hace que escribir rutas de archivo largas sea mucho más rápido!

¿Cómo saber qué opciones tiene un comando?

Hay algunas maneras de determinar qué opciones tiene un comando. La mayoría de los comandos tienen disponible un operador --help (o -help, o -h), que enumera los posibles argumentos y opciones que puedes usar:

Si encuentras que la breve ayuda proporcionada por el operador --help no es suficiente, puedes leer más detalles con el programa man:

Que te dirá todo sobre el programa "nano". Es posible que los comandos simples como "cd" no tengan una entrada en man.


2. Hacer una copia de seguridad de la base de datos (con compresión GZip)

Hacer una copia de seguridad de tu base de datos es algo que debes hacer con frecuencia. Como la mayoría de las cosas, hay muchas formas de hacer esto, pero usar la línea de comandos es una de las mejores. ¿Por qué? Porque te ayuda a solucionar problemas potenciales como tiempos de espera de ejecución para herramientas como phpMyAdmin y posibles interrupciones de la red al usar una herramienta de administración local como MySQL Workbench.

El comando para ejecutar la copia de seguridad es bastante pequeño, pero puede requerir una explicación:

¡Ahora, para explicar lo que está pasando aquí! El programa "mysqldump" es una herramienta para crear copias de seguridad de bases de datos. Los parámetros que se utilizan son:

  • El interruptor "-u" significa que vas a especificar un nombre de usuario con el que conectarse, que debe seguir, como "-u mysqluser" arriba.
  • El interruptor "-p" significa que o vas a especificar inmediatamente la contraseña a usar (sin espacio), o le pedirás una.
  • El parámetro final utilizado en el ejemplo anterior es el nombre de la base de datos para hacer una copia de seguridad (¡por supuesto!)

Si ejecutaste el comando anterior, habrías visto el contenido de tu base de datos atravesando la pantalla. Eso es bueno, porque sabemos que esa parte funciona (en realidad se conecta a la base de datos), pero también es malo, porque... ¿a dónde se fue? Respuesta: ¡en ninguna parte! Se desplazó más allá, y eso fue todo. Ahora necesitamos capturarlo y ponerlo en un archivo.

Para colocar el contenido de la salida en un archivo, con fines de respaldo, necesitamos usar lo que se llama una redirección.

Así que agregamos un redirector y el nombre de archivo en el que queríamos que entrara la salida. Ahora deberías poder ver un archivo llamado "db_backup.sql", y si lo abres, puedes ver un script SQL con la estructura y el contenido de tu base de datos listo para restauración o migración.

Una última cosa que podría ser útil para una copia de seguridad es comprimir el script SQL. Para este ejemplo, usaré la compresión GZip, porque es bastante común, pero también podrías usar Bzip2 o algo más.

Para agregarle compresión a este comando, simplemente hacemos lo que se llama piping. Canalizamos la salida de mysqldump a través de gzip, y luego la redirigimos al archivo que queremos, así:

También agregué el ".gz" al nombre del archivo, así que sé que está comprimido y ya no es solo texto sin formato (¡también será más pequeño!)


3. Restauración desde una copia de seguridad de base de datos (con compresión GZip)

Por lo tanto, tienes una copia de seguridad de tu base de datos (ya sea utilizando el método anterior o de alguna otra manera), y algo salió mal y necesitas restaurarlo, o lo estás migrando a un nuevo servidor. Puedes usar una de las otras herramientas mencionadas anteriormente, pero en el ejemplo de phpMyAdmin, ¿qué pasa si el archivo de respaldo de tu base de datos es más grande que el tamaño de carga permitido? Bueno, afortunadamente, a la línea de comandos no le importa.

El comando para restaurar es muy similar al de realizar una copia de seguridad. En primer lugar, sin compresión GZip:

Usamos el comando "cat" para generar el contenido del script de respaldo y canalizar su contenido al programa mysql. Como puedes ver, el programa mysql toma las mismas opciones que mysqldump en la sección dos.

Ahora bien, si el script estaba comprimido en GZip, no podemos simplemente enviar su contenido a mysql, ya que serán datos comprimidos en lugar de un buen script SQL. Entonces hacemos lo siguiente:

Mira, es muy familiar, solo cambió un poco.

Lo que está sucediendo aquí es que también ejecutamos "gunzip" y redirigimos el script de respaldo para descomprimirlo. Luego canalizamos la salida descomprimida al programa "mysql".


4. Buscar/Reemplazar en un archivo de texto

A veces tienes un archivo grande, como tal vez una exportación de base de datos, y necesitas buscar/reemplazarlo... pero no se abrirá en ninguno de tus editores de texto, ¡porque tu máquina se queda sin memoria al intentar abrirlo! Bueno, aquí hay una forma de evitar eso, usando la línea de comandos y algunas expresiones regulares.

La forma en que esto funciona es generar el contenido de la secuencia de comandos SQL (o cualquier archivo que estés usando), canalizarlo a través de un programa llamado "sed", que es específicamente para manipular el contenido de transmisión, y luego redirigir esa salida al nuevo archivo . ¿Suena complicado? Bueno... supongo que es un poco, ¡pero el comando en sí parece simple!

La parte nueva aquí es realmente el programa "sed". Básicamente, lo que está haciendo es tomar la entrada y hacer coincidir el primer patrón (en este caso, mi nombre, "Japheth"), y reemplazarlo con el segundo patrón (en este caso, una abreviatura de mi nombre, "Japh"), luego generar ese.


5. Copiar archivos de forma segura a / desde un servidor (a través de SSH con SCP)

Si estás trabajando en la línea de comandos y necesitas copiar un archivo, especialmente si necesitas hacerlo de forma segura, ¿por qué ir y activar tu cliente FTP? Simplemente use un programa llamado Secure Copy, o SCP, que es especialmente para hacer copia remota de archivos de forma segura. Secure Copy usa SSH para copiar los archivos, por lo que primero debes asegurarte de poder conectarte a la computadora remota a través de SSH (hablaré un poco más sobre esto al final del artículo, así que mantén ese pensamiento).

La sintaxis del comando scp es similar a la del comando cp cubierto en la sección uno, con la adición del nombre de servidor de la computadora eliminada y el nombre de usuario con el que conectarse:

Los bits a tener en cuenta son "username@hostname:", que, como expliqué anteriormente, son el nombre de usuario a usar y el nombre del servidor a usar al conectarse. Se te pedirá que ingreses la contraseña para ese usuario, y también obtendrás un indicador de progreso para la copia para que puedas ver cómo va.

Puedes usar el interruptor "-r" (nota: es minúscula para scp, mayúscula para cp) con copia segura para que sea recursivo. Además, si es la primera vez que usas SCP o SSH para conectarte a la máquina remota, es posible que se te pida que aceptes una huella digital RSA por seguridad, que debes aceptar (suponiendo que estés seguro de que te estás conectando al servidor correcto).

Vale la pena mencionar que esto funciona en ambos sentidos. También puedes copiar archivos desde el equipo remoto al equipo local cambiando los argumentos:

Si tienes SSH en un servidor web y quieres copiar archivos a otro, puedes usar este comando para copiar los archivos directamente sin tener que descargarlos primero en tu computadora local.


6. Encontrar archivos específicos en un proyecto grande

Encontrar un archivo con un nombre determinado

¿Quieres encontrar un archivo específico pero no estás seguro de dónde se esconde en los muchos directorios de tu proyecto? (¡o incluso si hay más de uno!)

El comando "find" es para localizar archivos dentro de una heredera de directorio. Tiene muchas opciones, por lo que sus usos son bastante variados. Aquí especifiqué buscar en el directorio actual con "./", y utilicé el interruptor "-iname", que significa buscar un archivo con un nombre como el que proporciono. También hay un interruptor "-name", pero el interruptor "-iname" no distingue entre mayúsculas y minúsculas, por lo que también encontrará INDEX.php.

Encontrar un archivo con contenido particular

¿Alguna vez supiste que habías escrito una función para algo, pero no puedes recordar en qué archivo estaba?

"grep" es un programa para imprimir líneas que coinciden con un patrón particular. Puedes proporcionarle algunos interruptores, como la "-i" para que no distinga entre mayúsculas y minúsculas, y la "-R" para que sea recursiva en mi ejemplo. Luego proporciona un patrón y la ruta para buscar (aquí estoy buscando el directorio actual con "./"). Este ejemplo mostrará el nombre del archivo y la línea en ese archivo para cualquier coincidencia que encuentre con "myfunction" (no distingue entre mayúsculas y minúsculas debido a la "-i").

Si tus proyectos son copias de trabajo de Subversion, puedes resultarle molesto ver los resultados de los directorios ".svn". Para excluir directorios particulares de la búsqueda, usa el interruptor "--exclude-dir=", por ejemplo "--exclude-dir=.svn".


7. Realización de acciones masivas en archivos específicos

Ahora sabemos cómo encontrar archivos particulares; ¿Qué pasa si queremos hacer cosas particulares con esos archivos? Por ejemplo, a menudo trabajo en una Mac y encuentro que cuando guardo archivos en recursos compartidos de Windows o recursos compartidos de Linux Samba en la red, Mac OS X amablemente arroja archivos "._filename" por todas partes. Así que me gusta poder limpiarlos con regularidad.

Para encontrar dichos archivos, utilizo ambos métodos de la sección anterior para buscar archivos con un nombre en particular:

Estamos encontrando una manera de generar todos los archivos en el directorio actual (recursivamente), y luego estamos canalizando la salida a grep, lo que garantiza que coincida con mi expresión regular. Las expresiones regulares solo dicen: "coincide con cualquier cosa que comience con un . literal seguido de un _ literal seguido de 0 o más de cualquier otra cosa." Ejecutarlo así para asegurarse de ver los archivos deseados.

Ahora, para hacer algo con todos los archivos que capturaste de ese comando, ajústalos con comillas inversas (``). Si quisiera eliminarlos todos:

Tengo el comando "rm" (para eliminar o eliminar archivos) con un interruptor "-f" (que significa forzar una eliminación sin pedir confirmación), ¡y se ejecutará para cada archivo devuelto por el comando dentro de las comillas posteriores!

Creo que sería irresponsable no mencionar aquí que debes tener mucho cuidado al usar el comando "rm". Si usas el comando "rm" con el interruptor "-f", asegúrate de saber exactamente lo que vas a eliminar, ¡y que realmente quieres que desaparezca! Si usas "-f", no tendrás una segunda oportunidad.


¿Cómo obtengo acceso desde la línea de comandos a mi servidor web?

Mencioné anteriormente en el artículo sobre la conexión a una computadora remota a través de SSH. Muchos de estos comandos son más útiles cuando se usan en tu servidor web, que probablemente ejecuta Linux, por lo que deberás poder conectarte a la línea de comandos. La forma de hacerlo es mediante el uso de un programa llamado SSH, que lo hace de forma segura.

En Mac OS X, o en Linux, puedes ejecutar SSH desde la aplicación Terminal:

Si estás en Windows, deberás usar un programa disponible gratuitamente llamado PuTTY.

Se te pedirá tu contraseña cuando te conectes.

Si aún no tienes acceso SSH a tu proveedor de alojamiento web, lo más probable es que puedas solicitarlo y lo configurarán para ti.


En resumen...

Como la mayoría de las cosas, "no sabes, lo que no sabes". Puede parecer difícil descubrir cómo usar la línea de comandos; ¡pero hay una gran cantidad de energía disponible para ti una vez que lo entiendes! ¡Con suerte, este artículo te ayudará a comenzar a explorar! ¿Alguna pregunta?

Advertisement
Did you find this post useful?
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.