Showing posts with label comandos básicos. Show all posts
Showing posts with label comandos básicos. Show all posts

Saturday, January 16, 2016

History: registro de comandos.

A veces olvido los comandos que he usado. Cuando esto pasa, escribo:

$ history

Con esto veo los comandos ejecutados por el usuario actual. Si quiero saber el usuario conectado, hago:

$ whoami
(como en who am I?)

A veces opero como root; entonces para ver los comandos ejecutados como root, hago esto:

$ su root
(ingreso password)
# history
(recordemos que el #, signo numeral, hash o hashtag, representa a root)


Y ellos aparecen. Si nuestro historial de comandos es extenso, apenas veremos los comandos recientes en panatalla; dependiendo de la Terminal desde la cual ejecutamos esto, a veces el scrolling con el mouse o la barra de scrolling vertical no funcionan; entonces nos apoyamos de otro comando: less, capaz de recibir el input de history  por medio de una pipeline (se dice "paip-lain"; hemos mencionado esto antes a grandes rasgos y te invitamos volver a leer esa entrada para aprender/recordar) y procesarlo de forma navegable. Recordemos el asunto del I/O:

input | output

entrada | salida



El asunto suena complejo, pero es tan simple como escribir esto:


$ history | less
y listo. Sin complicarnos. Vas a poder navegar a lo largo de todos los comandos (enumerados) que has escrito.

El mejor ejemplo que podemos usar, es aplicar la pipeline a tu PC. Adelante y hasta luego :)


EDITADO, enero/17, 00:44 horas, San Salvador: el colega Carlos Egüez mencionaba hace una hora en nuestro grupo, algo que he olvidado incluir:

Control + R en el prompt regular de Terminal: busca interactivamente un comando y muestra resultados a lo "auto completar".

Seguido de
$ history | less

el comando "history" enumera los resultados; una vez has identificado el comando que vas a reutilizar, es posible hacer esto:

$ !n 
donde n es el numeral que identifica al comando deseado. Por ejemplo, un fragmento de mis comandos:

486  screenfetch
 487  scrot
 488  clear

$ !486
es lo mismo que gatillar:

$ screenfetch.

Gracias Carlos por el feedback :D es exactamente esto para lo cual debe de existir la comunidad.

Less: leer output con calma.

Te aconsejamos wikear los conceptos "input" y "output", o "entrada" y "salida" respectivamente. Para que la PC haga algo, hay que ordenarle por medio de comandos, clicks, enter, etc. cada vez que lo hacemos, le damos un input; esta analiza/procesa/opera/transforma/computa/se coge al input y usualmente luego,  te muestra/vomita/escupe/caga la respuesta en la cara: esto es el output.

Imaginemos que queremos leer un documento, tarea, reporte, chat sexual travieso o cualquier cosa que tengamos guardada en la PC. Como lo vimos antes, podemos usar

$ cat nombre_del_asunto

$ cat toma el input, busca el archivo; si lo encuentra, te lo muestra; caso contrario te saca el dedo y dice que no lo encuentra. En ambos casos hay input-output. Digamos que todo va bien; el resultado se mira a grandes rasgos: 

output output output output output output output output output output output output output output output output output output output output output output output output output output output output output output output output output output output output output output y listo.

Esto va muy bien si el documento es breve y tenemos un display con suficiente espacio vertical, y si hemos maximizado la ventana de Terminal. Cuando no es este el caso, veremos solamente el final del documento: 

$ cat derechos_universales_de_los_ortos_peludos

maldita sea, una idea incompleta... output output output output output output output output output output output output output output output output output output output output output output output output output output output output output output output este es apenas el culo de todo el documento... la cagaste, jaja.

Cuando esto sucede, mandamos a la mierda a $cat y usamos 

$ less 

quien permite navegar con las flechas (prefiero esto:  jode menos las manos y evita quemar tiempo innecesario al despegar una mano del teclado para usar el mouse) del teclado.

De nuevo:
$ less

Toma tu input (el nombre de un archivo de texto, script, incluso el output de otro comando... pero eso no lo veremos ahora) y te da el output de forma navegable; la Terminal cambia al "modo visual"; este "modo visual" es tomado de VI (se dice "vi ai", "uve i" un editor de texto legendario, usado por algunos programadores profesionales aun). Para salir de este modo, al igual que para salir de VI, presionamos "q" como en quit; y listo. Hay mucho para hablar al respecto de less; esto nos basta por el momento; te recomendamos #RTFM (read the fucking manual) para mayor info:

$ man less
$ less --help
((por cierto, ambos comandos mostrados arriba usan el "modo visual" de VI: "q" para salir)

Y listo.

Por cuestiones de eficiencia y practicidad, en lugar de poner un ejemplo, te invito a realizar este ejercicio: localizar las licencias GNU-GPL en el filesystem de tu distro para comparar el uso de cat y less; vas a notar la diferencia,
$ less es un comando muy flexible. La flexibidad es poder. Hasta luego :)

Sunday, December 27, 2015

cat: leer y crear archivos de texto de forma simple


$ whatis cat 
cat (1)              - concatenate files and print on the standard output

Cat, comando de usuario - concatená archivos e imprimilos en salida estándar (en texto, pues).


$ cat /etc/fstab 
muestra las unidades que son montadas automáticamente al arranque del sistema operativo.

$ cat archivo.txt
muestra el contenido del archivo de texto que has indicado. Ahora, recordá que en sistemas UNIX, un documento puede o no tener extensión. Un .png pudiera no terminar en ello, así como un .txt pudiera incluso terminar en .gif. Es el sistema quién escanea el archivo y determina su tipo de extensión. Puse el .txt para ejemplificar; y lo puse usando una ruta relativa: el directorio presente.  O sea, no importa dónde estés en el filesystem, vos podrás visualizar un archivo usando cat, siempre que incluyás la ruta correcta, relativa o absoluta, dependiendo del caso:

$ cat ../home/chepito/documentos/folder1/archivo20
y si ya estás en el folder1, sólo tendrías que hacer:

$ cat archivo20

Cat también puede servir para crear un archivo de texto nuevo, usando redirección de salida de corriente (output stream redirection). No vamos a hablar mucho de esto, sólo te digo que podés usar cat para crear un archivo nuevo de texto, así:

$ cat > archivo_de_texto_nuevo

y cat entrará en "modo interactivo"; en lugar del PS1 (el nombre de tu cursor en Terminal), vas a ver el " > " :

$ cat > archivo_de_texto
>

Y aquí podrás escribir texto, apretando enter para crear una nueva línea:

$ cat > archivo_de_texto
> primera línea para probar cat en modo interactivo
> segunda línea de prueba
> tercera línea, blah blah blah... 
> [ para finalizar, das enter, y luego "Ctrl D" ]

Y cuando hayás terminado, das enter una vez más, y en la línea en blanco apretás Ctrl + D. Esto sale del modo interactivo y guarda cambios. Ahora, mirá los cambios que lograste: 

$ cat  archivo_de_texto
 primera línea para probar cat en modo interactivo
 segunda línea de prueba
 tercera línea, blah blah blah... 
$

Digamos que querés agregar otra línea; entonces vas a usar

$ cat >> archivo_de_texto
> esta línea será agregada al final del documento.
> [ Ctrl D ] 

Uso Ctrl + D para salir y ahora:

$ cat  archivo_de_texto
 primera línea para probar cat en modo interactivo
 segunda línea de prueba
 tercera línea, blah blah blah... 
 esta línea será agregada al final del documento.
$

Recordá: 

$ cat > archivo
te permite crear y agregar líneas de texto a un archivo, sin tener que accesar a un editor. 

$ cat >> arhchivo 
añadirá nuevas líneas a un archivo ya existente, así haya sido creado por cat o por otro editor (gedit, leafpad, vim, nano...). Si por error hacés " " en lugar de " >> " a un archivo, vas a sobrescribir en lugar de agregar... o sea, vas a mandar a la mierda lo que había antes. Si necesitás editar una línea en particular, mejor usá un editor de GUI o de CLI (gedit, leafpad, nano, scratch editor, vim, emacs, etc.) para navegar hacia la línea deseada.

Resumen: 
¿Para qué me sirve cat? para mostrar el contenido de un archivo de texto en terminal, sin tener que usar herramientas externas, gráficas ni tener que salir de terminal. Esto significa: ahorro de recursos de procesamiento, y tu tiempo. Es usado a menudo para leer rápidamente archivos de configuraciones del filesystem, cuando son cortos. ¿Funciona con largos? Sí, pero no es tan cómodo a menos que tu Terminal tenga soporte de navegación vertical (para scrollear hacia arriba); o a menos que lo usés con una pipe y less; pero eso es otro asunto que no tocaré hoy y no tiene sentido. 

¿Tengo que usarlo? No. Pero existe y podrías beneficiarte de él; sin embargo, a veces podrás preferir un editor completo (así sea de CLI o GUI) como cuando estás leyendo scripts de programación, porque los editores dedicados tienen "resaltador de sintaxis", colorizan palabras claves, strings, booleanos, etc. 


Thursday, December 24, 2015

RECOMENDACIÓN ANTES DE CORRER UN COMANDO

Usá

$ whatis nombre_del_comando
$ man nombre_del_comando
$ nombre_del_comando --help
$ nombre_del_comando -h

por seguridad y para conocer un poco de ese comando antes de ejecutarlo.

De nada. Felices fiestas :D

Tuesday, September 22, 2015

mkdir

mkdir se lee "make directory" (se pronuncia algo así: méik diréc-ttri) y sirve para hacer directorios (carpetas o ficheros) en el Sistema de Ficheros de Linux. Su uso es muy simple. Desde tu Terminal:

  1. $ pwd
  2. $ mkdir testfolder
  3. $ ls
  4. $ mkdir testfolder/otrotestfolder
  5. $ ls
  6. $ ls testfolder/
  7. $ mkdir testfolder/otrotestfolder/foldercito
  8. $ ls
  9. $ ls testfolder
  10. $ ls testfolder/otrotestfolder
  11. $ mkdir testfolder/otrotestfoldermas
  12. $ ls testfolder 
  13. mkdir /mini-root
  14. mkdir /mini-root/root-junior
  15. ls / /home

Recordá que si vas a crear un subdirectorio (un directorio adentro de otro directorio), debés de definir la ruta relativa, como mostramos en los pasos 7, 11 y 14 del ejemplo anterior. Como podés ver en los pasos 13 y 14, podés crear un directorio(s) desde otra locación distinta, siempre y cuando usés una ruta absoluta.

En el paso 15 sólo estamos listando dos directorios distintos. Te invito a que pensés en cinco directorios y que los listés todos de forma simultánea.

Hemos usado mkdir  usamos una vez ya, en este artículo para crear un folder donde descargar Screenfetch. Es importante para realizar tareas administrativas vía CLI y también para organizar tus archivos sin recurrir a la GUI. 

Eso es todo por ahora :) 

Thursday, September 10, 2015

man

Esta es la continuación de los otros dos artículos de la CLI y el sistema de Ficheros.  En esos dos artículos, vimos cómo entender el sistema de ficheros (el filesystem) y cómo navegar en él. Pero eso no es todo. Uno de los comandos más útiels pero subestimados por los amigos de "todoenlatrompa.com", es el comando

man

 $ man comando

Se lee "manual pages" manual para el comando especificado y su uso. Por ejemplo:

$ man pwd
$ man ls
$ man cd
$ man exit
$ man man


¿Para qué me sirve?  Para cuando se te olvida cómo usar un comando o cuando necesitás argumentos o parámetros adicionales para un comando y no recordás cómo usarlos. Por ejemplo, dijimos antes que el comando ls te muestra el contenido de un directorio; pero no te muestra archivos o directorios ocultos. Pero al leer 

$ man ls 

Aprenerás que, existe la opción -l "no ignora elementos comenzando con . (el punto a la izquierda de un archivo o carpeta, significa que ese elemento está "oculto"; si navegás a la GUI, no lo verás. Hay muchos archivos y directorios ocultos por motivos de seguridad, o porque son de configuración y no hace falta que se le muestren al usuario así por así)".


$ ls -a

$ man ls
también nos enseña que

$ ls --author
va a  mostrarnos el autor de cada archivo/carpeta listada en el directorio donde estás.

Entre otras cosas, man nos muestra un número (arriba a la derecha) el tipo de comando que se está corriendo. Te lo recomiendo mucho. Cuando usás man, el prompt ($) desaparece. Esto es porque en esencia, tenés frente a vos a un documento de texto insertado en tu Terminal (por eso los Unixeros te piden  que leás las "man pages")

Apretá "h" para ver las instrucciones/opciones. man usa las mismas instrucciones del comando less, que no veremos hoy por practicidad. Las otras  opciones se ejecutan cuando usás las opciones listadas en la ayuda.  Apretá "q" para salir de la página man en la qu estás; el prompt reaparecerá en el borde inferior de tu Terminal.

Espero que lo usés mucho. Es tu primera fuente de conocimiento y entrenamiento; debe de ser tu ley el leer las man pages antes de preguntarle al prójimo. Te va a ahorrar regaños en los foros y grupos ;)


todoenlatrompa.com: chiste usado para referirse a las personas que todo lo quieren servido y masticado para no tener que hacer su tarea; se deriva del salvadoreñismo: "este maje todo lo quiere en la trompa" = "este bobo todo lo quiere en la boca". El dominio de hecho, existe y tiene un sitio web, aunque no parece tener mayor actualizaciones ni contenido disponibles al público.

CLI y Sistema de Ficheros II


$ pwd

Este es facilito. Se lee "print working directory": imprimir (en pantalla, no en papel) el directorio actual.

$ pwd
muestra/el/directorio/en/el/que/estás/actualmente 

 

$ ls

se lee "list directory", listar directorio:
muestra/los/archivos/o/sub/directorios/del/directorio/especificado

Escribí el siguiente comando en tu Terminal:
$ ls .

El " . " (punto) representa al directorio actual; es decir, el directorio en el que te encontrás. Y esto es algo fascinante si lo pensás: ¿cómo se marca usualmente una posición en un mapa o plano cartesiano? con un punto. Algo tan simple como eso :)

Ahora, seguí uno a uno, los siguientes:

$ ls /
$ ls /etc
$ ls /usr

¿Qué  te dice esto? Que podés navegar por tu PC sin tener que dar click como loco. Pero listar los directorios y  archivos no es suficiente. A veces necesitás moverte; para eso usamos:

 

$ cd 

"Change directory" o cambiar directorio. Hacé esto:

$ pwd

Y ahora, detenidamente hacé esto:

$ cd / 
$ pwd
¿Qué pasó? Te moviste del directorio home (si es que estabas en home), al Root Directory. Ahora escribí:

$ cd - 
$ pwd

Como pudiste notar, " cd - " te regresa al directorio donde estabas inicialmente (no un nivel más o menos, sino al directorio en el que estabas antes).  Hay otros usos de cd:

$ cd .. 
cambia al directorio padre (el directorio que contiene al directorio en el que estás).

$ cd ../..
cambia a dos directorios superiores.

$ cd ../../.. 
cambia tres directorios superiores, y así, hasta que de tanto " .. " vas a llegar al directorio / .

Ejercicio:

(¿Pensaste que no habría ejercicio? Sin repetición no hay aprendizaje duradero. NOTA: a menos que sepás lo que estás haciendo, no vayás a usar otros comandos que aun no hayamos mostrado; esto es por seguridad y  para evitar modificar o agregar cosas a archivos/directorios de forma indebida).  

• Listá el contenido del Root Directory.
• Navegá a /usr
• Imprimí el directorio /usr
• Sin desplazarte a otro lugar, imprimí el directorio /home
• Sin desplazarte a ningún lugar, listá el contenido del directorio /etc
• Navegá a /usr/share/man
• Navegá un nivel hacia atrás
• Listá el contenido de ese nivel donde estás ahora.
• Navegá de vuelta a tu home directory.
• Cerrá tu Terminal.

CLI y Sistema de Ficheros: Dolores de Cabeza para Principiantes.

En palabras de un antiguo samurai: "parecerá difícil al inicio, pero todo es difícil al inicio."

Nos han solicitado que elaboremos una guía un poco "menos técnica" que la que Jimmy compartió hace un rato ya acerca de los comandos básicos así como el asunto del Sistema de Ficheros de Linux. Este es un intento por lograrlo y nos esforzamos por ser lo menos "techy" posible.

La Terminal intimida a mucha gente. Si se la mostrás a un hermano mayor o un papá o tío que haya visto una de las primeras PCs y que no sea un adepto a la informática, a lo mejor te cuente lo complicado que era usar una PC antes;  si sos lo suficientemente viejo tal vez recordás un poco de DOS. Es comprensible; se trata de una pantalla oscura con una rayita que parpadea esperando que le digás qué hacer. Y si no sabés qué palabras usar para decirle qué hacer y escribís cualquier cosa que se te ocurra como "ACM1PT", de seguro te va a escupir un mensaje diciendo algo como "command not recognized" o "comando no reconocido" y es de esperarse que no haga nada y que por lo tanto la PC parezca un alien.

Tal vez por eso es intimidante y la gente le evita; o tal vez porque no quieren tomar el tiempo para aprender a usarla. Pero el problema entonces no es la Terminal, sino nuestro escaso conocimiento acerca del "idioma" que ella "escucha" y "habla". ¿Cómo se arregla este predicamento? De dos formas: huyendo, como la mayoría hace; o aprendiendo a comunicarte en el lenguaje que la Terminal entiende. A todos nos frustró al inicio; pero de nuevo, "todo es difícil al inicio".

Si vas a hacerle frente al problema, armarte de valor y ánimos es sólo una porcioncita de lo que debés de hacer. Se necesita disciplina, orden, dedicación, tiempo, y estar dispuesto a equivocarte una y otra vez. Casi nunca son las felicitaciones las que te hacen aprender para cambiar y mejorar, son tus equivocaciones y cómo vos las tomás. Recordá esto y aplicalo en todo aspecto de tu vida.
 
Es justo y necesario, nuestro deber y salvación aprender los siguientes comandos a usar en Linux. La GUI (Graphical User Interface) no es más que una síntesis o representación visual (en forma de iconos y ventanas) de toda instrucción que tu PC ejecuta. Estas instrucciones pueden ser ingresadas en forma de texto, cosa que con un poco de práctica es más rápida y fácil que dar clicks aquí y allá de un lado a otro de tu pantalla (ahorrándote tiempo, divagación y esfuerzos).

Así como das clicks en tus ventanas para moverte de un lugar a otro en tu PC y lograr que ella haga algo por vos, así también podés desplazarte por tu PC desde una simple ventanita escribiendo texto. 
Vamos a aprender a navegar en tu Terminal con estos comandos básicos. Ellos son como el "AEIOU" de Linux. 

"Pero yo no necesito ni quiero aprender comandos."

Es cierto que para poder hablar no se necesita escribir y que mucha gente vive sin llegar a escribir ni leer nada; pero es cierto que esto les priva de muchas libertades y conocimiento importante para crecer como personas. Algo así sucede con los comandos de la Terminal.

 

Yo sólo quiero ver videos, revisar mi correo y redes sociales.


Bueno, entonces tal vez este no es el lugar para vos y te pediremos que dejés de leer los artículos relacionados a Comandos y Terminal. Lo cierto es que para los usuarios de Linux que deseamos aprovechar el potencial de estos sistemas operativos, la CLI y los comandos son vitales.

¿Qué carajos tienen que ver la Terminal con el Sistema de Ficheros?

Todo. Por ahora digamos que la Terminal es una mezcla de Timón y el Sistema de Ficheros es un Mapa de Navegación. O digamos que tu Terminal es una Caja de Herramientas y tu Sistema de Ficheros es los planos de un Automóvil. Tal vez esta última analogía no la comprendás aún, pero lo harás cuando aprendás comandos avanzado. Si seguiste leyendo, esperamos que esta guía te ayude. Abrí tu Terminal y comencemos. 

Probablemente es lo primero que vas a ver junto a tu nombre o el nombre que le diste a tu PC cuando instalaste tu distro. Es el "command prompt" o símbolo de sistema. La "señal" que indica estar lista para que ingresés comandos. Cuando veás el prompt en mis tutoriales, deberás escribir los comandos que a su derecha.

Es el mismo símbolo o prompt, pero como "root" o superusuario. A menos que necesités hacer labores de mantenimiento o corrás una distro especializada, vas a ver este prompt muy poco.

 /

Como punto de partida, si alguna ves al símbolo de barra diagonal (símbolo de fracción, pleca, etc.) solito, es que representa al directorio "inicio" o "de partida", llamado Directorio Raíz. O sea, vas a entender que estamos hablando del Root Directory.  Es el nivel primero en el sistema de ficheros y respecto a él, situamos a todos los demás directorios y archivos (aquí no usamos la palabra "raíz" como algo bajo tierra sino como el INICIO, o seal el origen, nacimiento, punto de partida).

Es como si fuera la calle principal de una ciudad y la cual se toma como punto de referencia para poder tomar otras calles y conducirte a tu destino. En dibujitos:


Esta es la representación gráfica de la estructura de directorios de Linux. Recordá que un sistema operativo basado en Linux está organizado en compartimientos llamados conocidos como carpetas/folders/ficheros. En los siguientes niveles ves otros folders/carpetas/nombres. Si partimos de / (el Root Directory) y queremos ubicar al folder "Miguel" dentro del  sistema operativo, vamos a escribir

/home/miguel

que sitúa a Miguel dentro del folder "home", que está dentro del folder o Directorio Root. O sea, podemos decir que Miguel está dos directorios abajo en relación al Root Directory. No estamos diciendo que Miguel tenga menos superpoderes o un Ki menor al del Root Directory por estar "dos niveles abajo", porque no estamos comparando; simplemente estamos situando a Miguel en relación al Root Directory.

Partiendo del directorio Raíz, si queremos representar al fólder public_html, vamos a hacerlo así:

/home/francis/public_html

Como ves, seguimos usando / varias veces; y es que cuando la / se usa después del nombre de un folder, simboliza un "nivel"; o sea, nos sirve para hacer divisiones entre un directorio y otro o un directorio con un archivo. La primera barra a la izquierda simboliza el directorio raíz; las siguientes indican un directorio más "abajo".
  
Notá que escribí 
/home/miguel

y no

/home/Miguel

o

/Home/Miguel

¿Por qué? Porque así es como fueron definidos estos dos directorios y la sintaxis usada en la Terminal es sensible a capitalización. Si no tenés idea qué significa esto, deberías de hacer click en "sensible a capitalización"; he hipervinculado un artículo de la Todopoderosa Wikipedia que te lo explica.


Ya con esta explicación breve, en nuestra Terminal abierta, vamos a escribir este primer comando:

$ exit

¿Qué pasó? Yo sé qué pasó. Seguí la segunda parte para aprender más :)

Thursday, August 13, 2015

Terminal para novatos.

Este es un ejercicio para enseñarte algunos cuatro comandos básicos y cómo combinarlos para navegar en tu FileSystem. Asumimos que ya sabés ingresar a tu terminal y sabés cómo se usa.

Sólo vas a escribir el comando —lo que va después de $ . Después de cada comando, vas a presionar enter. En este artículo, lo que sigue después de cada $ comando, es el output o resultado que te damos como ejemplo y obviamente el output será distinto según el contenido de tu directorio /home local.  Recordatorio: lo que vas a escribir es

~ $ pwd
/resultado/acá

~ $ ls
algo.acá      archivo
directorio   directorio2

~ $ mkdir deprueba


~ $ ls
algo.acá      archivo
deprueba    directorio   directorio2

~ $ cd deprueba
~ deprueba $

~ deprueba $ pwd
/resultado/acá/deprueba

~ deprueba $ ls
~ deprueba $

~ deprueba $ cd ..

~ $ pwd
algo.acá      archivo
deprueba    directorio   directorio2

~ $ clear

Los comandos que usamos son pwd, ls, mkdir, cd, clear. Examiná cada comando. Escribí ahora:

$ whatis ls

$ whatis pwd
$ whatis mkdir

$ whatis cd
$ whatis clear
$ whatis whatis

Espero que hagás tus propias deducciones lógicas. No vamos a darte toda la información; porque es parte del ejercicio y proque tu aprendizaje es tu propia responsabilidad.


Hasta luego :)

Entradas populares.