Está en la página 1de 27

walter, duran

Lineas de comando

Lineas de comando
Antes de empezar a cargar comandos en Linux, debemos entender como se utiliza
la Shell.
Multiples consolas estan disponibles, y proveen funciones similares. Entender
algunos conceptos basicos,como las variables del entorno, son imprescindibles para
dominar Linux.
Otra de las cosas que es imprescindible conocer, es como obtener ayuda por parte
de los comandos que intentamos utilizar.
Explorando las distintas consolas
Linux nos ofrece una gran variedad de opciones de Shell. Las mas utilizadas son las
siguientes:
Bash (GNU Bourne Again Shell) est basada en la Shell Bourne para Unix, pero
agrega funcionalidades a la misma. En Linux, Bash es la shell mas utilizada por
defecto para cuentas de usuario. Tambien puede ser nombrada como bsh.
Tcsh (C Shell) es una shell muy popular, pero sin embargo no es la shell por defecto
en distribuciones Linux, salvo excepciones. Es similar a Bash en muchos aspectos,
aunque existen diferencias.
Ksh (Korn shell) fue diseada para tomar las mejores funciones de las shells
anteriores, y extender las mismas.
zsh (The Z Shell) es otra opcion que toma lo mejor de Bash y Tcsh, aadiendo
funcionalidades.

Normalmente, la shell utilizada por defecto es Bash. Mas adelante veremos como
podemos cambiar la shell por defecto.
Utilizando la Shell
El modo de utilizar una shell es sencillo: Simplemente se tipean comandos,
posiblemente incluyendo opciones para los mismos, y el sistema los ejecuta.
Aquellas personas que hayan trabajado con sistemas operativos sin interfaz grfica,
o la linea de comandos de Windows, no tendrn mayor problema en comprender su
utilizacion.
E-Learning

1 / 27

walter, duran

La mayor parte de las ocasiones, los comandos utilizados en Linux son externos, es
decir, son programas separados de la Shell. Algunos comandos, sin embargo, son
propios de la shell, por lo que conocerlos y diferenciarlos es importante. Ademas,
existen "trucos" que podemos realizar en la shell para trabajar de forma mas
amigable.
Inicializando la consola
Normalmente, al loguearnos en Linux a traves de la interfaz de solo texto,
automaticamente somos dirigidos hacia nuestra shell por defecto.

En cambio, si utilizamos una interfaz grfica de usuario (GUI), tendremos que


iniciar la shell de forma manual. Algunas GUI proveen una opcion en el menu para
iniciar una terminal, xterm, Konsole, o similar, que nos habilitan a correr comandos.

E-Learning

2 / 27

walter, duran

Comandos Bsicos

Utilizando comandos internos y externos


Los comandos internos son aquellos que se encuentran "construidos" dentro de la
shell. Muchas shells ofrecen comandos similares, pero en otros casos existen
diferencias, por lo que es buena idea consultar el manual de la shell, mediante el
comando man (el cual veremos mas adelante)
cd (change directory): Este comando nos permite cambiar el directorio en el cual
nos encontramos posicionados. Por ejemplo, el comando:
cd /home/cristian
nos posicionar en la carpeta cristian, dentro de home (usualmente, el home
directory). Adicionalmente, podemos usar el caracter ~ como un atajo a nuestro
home directory, por lo que el comando:
cd ~
nos posicionar en /home/cristian.

pwd: Este comando imprimir en pantalla la ubicacion del directorio en el que nos
encontremos en ese momento. Asi, siguiendo el ejempo anterior, el comando:
pwd
Nos dar como resultado:
/home/cristian

echo: Este comando mostrar por pantalla el texto que nosotros le indiquemos. Por
ejemplo:
echo Hola
Mostrar por pantalla "Hola".
Este comando es muy util en scripting para revisar variables, informar errores, etc.

E-Learning

3 / 27

walter, duran

exec: Este comando nos permite correr un programa externo, reemplazando la


shell, lo que significa que cuando el programa termine la ejecucin, la shell tambien
lo har.

time: Este comando nos puede indicar cuanto tiempo demoran ciertos procesos en
ejecutarse. Por ejemplo, el comando:
time pwd
Nos indicar el tiempo que tarda el sistema en ejecutar el comando pwd.
Normalmente, tres tiempos son mostroados:
- Tiempo total de ejecucion
- Tiempo en CPU del usuario
- Tiempo en CPU del sistema
set: Este comando provee una variedad de opciones relacionadas con la linea de
comandos, a la hora de asignar valores a operaciones o variables, segun sea el caso.

logout: Este comando termina la sesin en la terminal, pero no la cierra o finaliza.


exit: Este comando finaliza la sesion y tambien la consola.

ls: Este comando nos permite listar el contenido de la carpeta en la que nos
encontramos. Por ejemplo:
ls /home/cristian
nos listar los archivos en nuestro home directory.
mkdir: Este comando nos permite crear un directorio con el nombre que le
indiquemos. Por ejemplo:
mkdir /home/cristian/musica
Crear un directorio llamado musica en /home/cristian. Si ya estamos en
/home/cristian, solo es necesario tipear:
E-Learning

4 / 27

walter, duran

mkdir musica
y la carpeta se crear

rm: Este comando nos permitir borrar el archivo o carpeta que le indiquemos. Por
ejemplo:
rm /home/cristian/musica
borrar la carpeta musica. En caso de que existan archivos dentro de la carpeta, se
debe agregar el parametro -r.
cp: Este comando nos permite copiar archivos. por ejemplo, si quiero copiar el
archivo CV desde /home/ a /home/cristian, el comando es:
cp /home/CV /home/cristian
Para copiar directorios enteros, se agrega el parametro -r

mv: Este comando nos permitir mover archivos, directorios, o renombrarlos


renombrar directorios:
mv /home/cristian/musica /home/cristian/musica_nacional
cambiar el nombre de la carpeta musica a musica_nacional
mover directorios:
mv /home/cristian/musica /home/musica
mover la carpeta musica al directorio home.
Cuando un comando no es reconocido por el sistema como un comando interno, la
linea de comandos chequea el path para encontrar un programa con ese nombre
para ejecutarlo.
Tambien podemos correr comandos que no estan en el directorio donde nos
encontramos, cargando la ruta completa donde se encuentra el mismo. Por ejemplo:
./myprog
Correr el programa myprog en el directorio actual, pero por otra parte:
E-Learning

5 / 27

walter, duran

/home/cristian/otroprograma
correr el programa "otroprograma", ubicado en /home/cristian

find: Busca el archivo o carpeta que le indiques:


$ find / -name pepino
El comando anterior buscara en todos los sitios las carpetas y archivos que se
llamen pepino. Si tuviramos la seguridad de que se encuentra en /var por ejemplo,
se lo indicaramos:
$ find /var -name pepino
Si no estamos muy seguros del nombre podemos indicrselo con comodines.
Supongamos que el nombre de lo que buscamos contiene pepi, en la misma
carpeta de antes:
$ find /var -name *pepi*
Tiene otras opciones. Por ejemplo podemos decirle que encuentre los
archivos/carpetas de ms de 1500 KB:
$ find / -size +1500
O los archivos/carpetas contienen el nombre pepi y tienen menos de 1000 KB:
$ find / -name *pepi* -size -1000

ps (process status): estado de los procesos. Nos muestra lo que queramos saber de
los procesos que estn corriendo en nuestro sistema. Cada proceso est
identificado con un nmero llamado PID. Si hacemos
$ ps -A
nos mostrar un listado de todos los procesos, su PID a la izquierda y su nombre a
la derecha. Si queremos ms informacin:
$ ps aux

kill: matar. Elimina el proceso que le indiquemos con su PID:


E-Learning

6 / 27

walter, duran

$ kill <PID>
En ocasiones el proceso no muere del todo, pero se le puede forzar al sistema
para que lo mate con seguridad del siguiente modo:
$ kill -9 <PID>

sudo
super-user do: hacer como superusuario. La cuenta de usuario en Ubuntu es
relativamente normal, y cada vez que se haga algo importante y de riesgo para el
sistema, hay que hacerlo mediante el prefijo sudo y escribiendo despus la
contrasea.
Por ejemplo, para hacer una copia de seguridad del fichero xorg.conf que est
localizado en la carpeta /etc/X11; ah ningn usuario puede hacer modificaciones o
borrar nada si no es el administrador o tiene derechos como tal. Esto se consigue
gracias a sudo.
$ sudo cp /etc/X11/xorg.conf /home/xorg.conf.backup
Aqu copiamos el archivo en la carpeta /home cambiandole en nombre.

passwd
password: contrasea. Con este comando podremos cambiar la contrasea de
nuestra cuenta. Primero nos pedir la contrasea actual como medida de seguridad.
Despus nos pedir que introduzcamos dos veces seguidas la nueva contrasea.
$ passwd

su
super-user: superusuario. Mediante su podremos loguearnos como superusuario.
Tras escribirlo nos pedir la contrasea de root y estaremos como administrador.
Podremos hacer todo lo que queramos.
$ su
Este comando tambin nos permite hacer login con otra cuenta distinta. Por
E-Learning

7 / 27

walter, duran

ejemplo, imaginemos que tenemos otra cuenta, adems de root y la nuestra,


llamada invitado. Para hacer login como tal bastara con poner:
$ su invitado
y despus escribir la contrasea de esa cuenta.
sudo passwd
No es un comando propiamente dicho, pero es interesante que lo conozcis. Gracias
a la unin de estos dos comandos podemos cambiar la contrasea de root (la del
super-usuario).
$ sudo passwd
man
manual: manual. Es otro de los comandos de gran potencia en linux. Normalmente
cada programa o comando viene con un archivo de ayuda muy completo sobre su
uso y sus argumentos. Cuando desconocemos cmo se usa y qu argumentos tiene
un comando o aplicacin tan slo tenis que escribir en consola:
$ man nombre
En ocasiones la informacin que nos ofrece man puede llegar a ser excesiva. Casi
todos los comandos y aplicaciones aceptan el argumento help para que muestre
cierta ayuda ms resumida. Por ejemplo con aptitude:
$ aptitude --help
Todos estos comandos tienen muchos ms argumentos, como tambien existen
muchos otros que no estn aqu listados. Son simplemente los ms usados o
necesarios.

chown
El comando chown te permite modificar a los usuarios o grupos dueos de un
archivo o carpeta en el sistema de archivos.
$chown (usuario) (archivo o carpeta)
ej: $chown sa_pirata /home/Document/carpeta

E-Learning

8 / 27

walter, duran

Aqu va a cambiar el propietario de "carpeta" por el usuario "sa_pirata"


otr ej: $chown -R sa_pirata /carpeta/otra-carpeta
En este ultimo ejemplo va a cambiar el propietario de la carpeta sub-carpeta y
archivos que haya en ella

chmod
Es un comando parecido al chown pero este sirve para cambiar los permisos de
lectura modificacion y ejecucion de un archivo o carpeta (read, write, execute) al
usuario (user), grupo (group) u otros usuarios (other)
sintaxis:
$chmod (usuario grupo u otro) - + (permiso) (archivo o directorio) //es dificil de
entender asi por eso miren mas abajo...
hay dos maneras de cambiar los permisos
1. la manera escrita:
tengamos por ejemplo un archivo llamado "archivo1"
-rw-rw-r-- 1 usuario usuario 0 set 21 07:09 archivo1
primero el"-rw-rw-r--" vamos a desglozar... el primer guion de izq a derecha nos
dice que es, si hay un guion es un archivo y si en cambio aparece una "d" es porque
es un directorio... luego las letras se dividen en tres grupos de a tres letras, el
primero "rw-" que identifica los permisos del usuario, el segundo "rw-" nos indica
los permisos de grupo y el ultimo "r--" nos indica los permisos de otros... para los
menos perspicaces la "r" de read(leer en ingles), la segunda "w" write (escribir en
ingles) y la ultima "x" execute (ejecutar en ingles)
Ahora si queremos modificar los permisos de manera escrita se hace de la siguiente
manera:
$chmod u-r archivo1
esto har que el usuario ("u" de usuario) no pueda leer el archivo... los permisos
quedarian asi
--w-rw-r-- 1 usuario usuario 0 set 21 07:09 archivo1
O si queremos agregar un permiso, por ejemplo agregaremos el permiso de
E-Learning

9 / 27

walter, duran

ejecucion a todos
$chmod ugo+x archivo1
ahora todos tendran permiso de ejecucion y los permisos quedarian asi
-rwxrwxr-x 1 usuario usuario 0 set 21 07:09 archivo1
esa es la manera de sacar o agregar privilegios
2. la otra manera es la numerica (a mi parecer tambien mas sencilla)
0 (cero)= desactiva todos los permisos de quien corresponda
r=1
w=2
x=4
y para establecer el permiso hay que hacer la sumatoria de cada grupo de permisos
por ejemplo:
si a un archivo llamado "archivo" unicamente le queremos dar permisos de lectura
escritura y ejecucion al usuario y no al grupo o a otro entonces tendriamos que
sumar 1+2+4(permisos de usuario) 0+0+0 (permisos de grupo) 0+0+0 (permisos
de otro) = 7 0 0
$chmod 700 archivo
los permisos quedaran en "-rwx------"
o si le quisiseramos dar todos los permisos al usuario, y luego al grupo le damos el
de lectura y ejecucion y a otro le damos unicamente el de ejecucion entonces
tendriamos que sumar 1+2+4(permisos de usuario) 1+0+4 (permisos de grupo)
0+0+4 (permisos de otro) = 7 5 4
$chmod 754 archivo
y los permisos quedan "-rwxr-x--x"
es recomendable usar sudo para cambiar los permisos en ubuntu

El comando grep

El comando grep es uno de los ms tiles en Linux. Bien utilizado nos ahorra mucho
tiempo a la hora de buscar en archivos y documentos. Puede que al principio no le
des mucha importancia, pero cuando lo usas con soltura se vuelve imprescindible.
E-Learning

10 / 27

walter, duran

Qu hace el comando grep? Algo muy simple, busca determinada palabra o frase
entre los archivos de texto. Si el termino buscado aparece varias veces en un mismo
archivo, nos muestra varias lineas de resultado, una por cada coincidencia.
Para entender su funcionamiento, nada mejor que un ejemplo:
grep -r curso /home/steven/Documentos/*
Con ese comando, buscamos la palabra curso en cualquier fichero del directorio
Documentos. Esto incluye las carpetas que existan dentro de Documentos (hemos
indicado esto al escribir -r). Si deseamos buscar en un fichero concreto, sustituimos
* por el nombre del fichero.
Hay un detalle importante, el comando anterior diferencia entre maysculas y
minsculas. Est buscando la palabra curso, que no es igual que Curso. Por norma
general, nos resulta ms interesante que no haga esta distincin. Para que busque
el trmino, independientemente de maysculas/minsculas:
grep -ir curso /home/steven/Documentos/*
Si el termino a buscar contiene ms de una palabra, se debe indicar entre comillas.
En el siguiente ejemplo buscamos Curso Linux dentro del fichero notas.txt:
grep -i "curso linux" /home/steven/Documentos/notas.txt
Al incluir -i no hace distincin entre maysculas o minsculas. Para ms
informacin sobre el comando grep, teclea man grep en tu terminal

E-Learning

11 / 27

walter, duran

Trucos y atajos de la linea de comando

Muchas veces, los comandos pueden ser tediosos o complicados de tipear en la


consola. Para resolver esa situacion, la linea de comandos incluye herramientas que
nos pueden ayudar a agilizar nuestras actividades.
Completar comandos: Si tipeamos una parte de un comando, podemos presionar
la tecla Tab, para que la consola intente completar el resto del comando o del
nombre de archivo. Si solo un comando o nombre coincide con lo tipeado hasta el
momento, la shell completa la totalidad del mismo.
Si, por ejemplo, tenemos los archivos "balance_febrero" y "balance_marzo", la linea
de comandos completar hasta "balance_", permitiendonos mostrar las posibles
opciones a seleccionar.
Historial: Otra herramienta valiosa es el historial. Este guarda un registro de cada
comando tipeado, por lo que, si hemos tipeado un comando, simplemente mediante
las teclas Arriba y Abajo del teclado, podemos navegar por los ultimos comandos
ejecutados en la consola.
Otra opcion, es utilizar Ctrl + P y/o Ctrl+N, que exploran el historial de dos en dos
registros.
Si necesitamos encontrar un comando, podemos utilizar Ctrl + R para buscar en el
historial, tipeando una parte del comando en forma reversa, es decir, hacia atrs. El
comando Ctrl + S realiza una funcion similar, pero hacia adelante segn la posicion
en el historial donde nos encontremos. Para terminar la busqueda, usamos la
combinacion de teclas Ctrl + G
una vez encontrado el comando, podemos modificarlo de la siguiente manera:
Ctrl+A / Ctrl+E mover el cursor al inicio o final de linea, respectivamente.
Ctrl+Izquierda / Ctrl+Derecha mover el cursor por palabra
Ctrl+K borrar todos los caracteres desde el cursor hasta el final de la linea. Ctrl +
X borrar los caracteres desde el cursor al inicio de la linea.
Ctrl + T intercambiar el caracter marcado por el cursor por su anterior inmediato
Esc + U cambiar toda la linea desde el cursor al final a mayusculas. Esc + L har
lo opuesto, convirtiendo a minuscula.
Para finalizar, el comando history nos mostrar el historial completo de comandos
(normalmente, los ultimos 500). Para borrar el historial, debemos aadir el
parmetro -c
E-Learning

12 / 27

walter, duran

Manual: el comando man nos mostrar el manual de la consola, con estos y


muchos mas comandos que podemos utilizar.

E-Learning

13 / 27

walter, duran

Streams, redirecciones y pipes

Streams, redirecciones y pipes


A continuacion, veremos algunas de las herramientas mas utiles que podemos
utilizar en Linux.
Linux trata la entrada y salida de la consola como un stream, es decir, informacion
que puede ser manipulada. Normalmente, la entrada de datos proviene del teclado
y la salida de los mismos se dirige a la pantalla.
Sin embargo, podemos redireccionar tanto la entrada como salida de informacion,
para provenir o dirigirse hacia otras fuentes, por ejemplo, archivos.
Tambien, llegado el caso, podemos utilizar los pipes para redireccionar la salida de
un comando como la entrada de otro.
Para comprender como funciona este proceso, primero tenemos que ser capaces de
comprender los distintos tipos de streams de entrada y salida. En este caso,
evaluaremos los tres mas importantes:
stdin: Los programas pueden aceptar parametros de entrada a traves del teclado,
via standard input, o stdin.
stdout: En este caso, los programas mostraran la salida de informacion a traves del
standard output, o stdout, lo cual normalmente se produce mostrando el resultado
por pantalla.
stderr: Este stream tiene el objetivo de entregar informacion de alta prioridad,
como mensajes de error. Normalmente, stderr es enviado al mismo medio de salida
que el stdout, pero esto puede ser manejado redireccionando sdterr a un archivo,
dejando stdout en pantalla para interactuar con el programa.
Redireccionando entradas y salidas
Para redireccionar entradas o salidas de programas, utilizaremos simbolos a
continuacion del comando, incluyendo las opciones que el mismo lleve. Por ejemplo,
para redireccionar la salida del comando echo:
echo Hola > bienvenida.txt
generar que la salida del comando echo sea guardada en el arvhivo bienvenida.txt.

E-Learning

14 / 27

walter, duran

Operador de redireccin Efecto


> Crea un nuevo archivo conteniendo stdout. Si el archivo a ser creado ya existe, se
sobreescribe
>> Agrega stdout al archivo existente. Si el archivo especificado no existe, es
creado.
2> Crea un nuevo archivo conteniendo stderr. Si el archivo a ser creado ya existe,
se sobreescribe
2>> Agrega el stderr a un archivo existente. Si el archivo especificado no existe, es
creado.
&> Crea un nuevo archivo, conteniendo stdout y stderr. Si el archivo a ser creado
ya existe, se sobreescribe
< Envia el contenido del archivo especificado para ser utilizado con stdin.
<< Toma el contenido de las siguientes lineas ingresadas como stdin
<> Utiliza el archivo especificado tanto para stdin como stdout.
Un operador que nos puede ser util en scripts, es <<, ya que a continuacion del
mismo, no especificamos un archivo, sino una palabra que marca el final del input.
Por ejemplo, si ingresamos:
script1 << EOF
Causara que script1 acepte el input hasta que enviemos una linea con EOF
Utilizando pipes
Los programas pueden operar utilizando el output de otros programas. Por ejemplo,
podemos utilizar un comando para filtrar texto, para manipular la salida de texto
generada por otro programa.
Si bien podemos utilizar operadores de redireccion, necesitariamos crear si o si un
archivo en el sistema. Para evitar esto, utilizaremos pipes (data pipes, o pipelines),
que redireccionaran el stdout del primer programa para que sea el stdin del
segundo programa. Para realizar esto, por ejemplo:
programa1 | programa2

E-Learning

15 / 27

walter, duran

E-Learning

16 / 27

walter, duran

Generando comandos

Algunas veces, necesitaremos construir nuestros propios comandos para poder


realizar acciones mas especificas.
Por ejemplo, si necesitamos remover todos los archivos en un directorio que
terminen en ~ (por ejemplo ,archivos de backup). El comando usual para borrar
archivos (rm), no provee una opcion para buscar y borrar todos los archivos en un
directorio que cumplan un criterio especifico.
Un comando que podemos utilizar para realizar la parte de la busqueda del trabajo,
es el comando find, que mostrar todos los archivos que cumplan con el criterio
especificado. Si podemos combinar la salida del comando find con la entrada del
comando rm, la tarea puede ser realizada.
Este es el proposito del comando xargs.
El comando xargs construye un comando desde su stdin. La sintaxis basica del
comando es la siguiente:
xargs [opciones] [comando [argumentos]]
Donde:
El comando es el comando a ejecutar
Los argumentos es la lista de argumentos que queremos pasar al comando
las opciones son opciones para el comando xargs, no son pasadas al comando.
Cuando corremos el comando xargs, este ejecutar el comando una vez por cada
argumento que pasemos.
Resolviendo el ejemplo anterior, podemos borrar todos los archivos que terminen el
el caracter ~ usando un pipe para pasar la salida del comando find a xargs, que
llama al comando rm
find ./ -name "*~" | xargs rm

E-Learning

17 / 27

walter, duran

Procesando texto mediante filtros

Existen multiples comandos para manipular texto, que cumplen tareas de diversos
tipos, como combinar archivos, transformar los datos en archivos, formatear texto,
mostrar textos, resumir informacion, etc.

Combinando archivos con cat


El comando cat (concatenate), permite unir un numero arbitrario de archivos y
enviar el resultado a un output. Por ejemplo, podemos combinar dos archivos:
cat archivo1.txt archivo2.txt > concatenado.txt
Ademas, cat es utilizado para mostrar el contenido de archivos cortos, por ejemplo:
cat archivo1.txt
mostrar el contenido del archivo1.txt.
Si bien es una manera de revisar archivos cortos, para revisar archivos mas largos,
es mejor utilizar otros comandos, como more o less.
Opciones:
-E /--show-ends : Permite mostrar donde terminar la linea, mediante el caracter $
al final de la misma.
-n /--number : Permite numerar las lineas
-b/--number-nonblank: Permite numerar solo las lineas que contengan texto.
-s/--squeeze-blank comprime multiples renglones en blanco a un solo renglon en
blanco.
-T/--show-tabs : mostrar caracteres especiales representandolos como ^I
-v/--show-nonprinting: mostrar caracteres especiales usando ^
El comando tac es similar a cat, pero realizar la concatenacin en orden reverso.

Uniendo archivos con join


el comando join combina dos archivos. Por ejemplo, consideremos los siguientes
dos archivos:
E-Learning

18 / 27

walter, duran

Lista1.txt
555-2397 Beckett, Barry
555-5116 Carter, Gertrude
555-7929 Jones, Theresa
555-9871 Orwell, Samuel
Lista2.txt
555-2397 unlisted
555-5116 listed
555-7929 listed
555-9871 unlisted
Podriamos mostrar el contenido de ambos archivos usando join:
join lista1.txt lista2.txt
555-2397 Beckett, Barry unlisted

555-5116 Carter, Gertrude listed


555-7929 Jones, Theresa listed
555-9871 Orwell, Samuel unlisted
Por defecto, join usa el primer campo para unir ambos archivos. Podemos
especificar otros campos usando las opciones -1 y -2, para especificar a partir de
que campo se unen el primer o segundo archivo. Por ejemplo:
join -1 3 -2 2 cameras.txt lenses.txt
usar el comando join a partir del tercer campo del archivo cameras.txt y el
segundo campo del archivo lenses.txt

E-Learning

19 / 27

walter, duran

Fusionando lineas con paste


El comando paste permite fusionar archivos linea por linea, separando las lineas
unidas con tabulaciones. Por ejemplo, continuando el ejemplo anterior:
paste Lista1.txt Lista2.txt
555-2397 Beckett, Barry
555-5116 Carter, Gertrude

unlisted
listed

555-7929 Jones, Theresa

listed

555-9871 Orwell, Samuel

unlisted

Para que funcione, la cantidad de lineas debe ser igual en ambos archivos.

Convirtiendo tabs a espacios con expand


Convierte tabuladores a espacios, til en entornos con diversos sitemas operativos,
por ejemplo, se sustituye cada tabulador por nueve espacios:
# expand -t 9 texto.txt

Mostrando archivos en octal con od


Muestra el contenido de un archivo en otro formato, por ejemplo, en hexadecimal
con una anchura de ocho bytes:
# od -A x -w 8 archivo.txt

Ordenando archivos con sort


Ordena las lneas de texto:
# sort lista.txt
-f/--ignore-case ignorar si las palabras estan en mayuscula o minuscula
-M/--month-sort ordenar las palabras segun las tres primeras letras del mes
(JAN-DEC)
E-Learning

20 / 27

walter, duran

-n/--numeric-sort: ordenar el contenido del archivo segun el indice numerico, de


menor a mayor

Dividiendo archivos con split


Divide un archivo en varios trozos, como por ejemplo en trozos de 50Mb:
# split -b 50m archivo.iso

Formateando parrafos con fmt


Limita el ancho de caracteres por cada lnea:
# fmt -700 texto.txt

Numerando lineas con nl


Muestra el contenido de un archivo con cada lnea numerada:
# nl archivo.txt

E-Learning

21 / 27

walter, duran

Editores de texto: Vi

Edicion de archivos con Vi


Vi fue el primer editor de texto en Linux. Diseado para ser pequeo y simple, est
presente en gran parte de las distribuciones, por lo que es importante comprender
como se utiliza.
Para esto, primero tendremos que comprender los modos que Vi posee. Estos son:
Modo de comando: En este modo se aceptan comandos, que son normalmente
ingresados como letras. Por ejemplo, i y a se utilizan para ingresar al modo de
insercin.
Modo de insercin: en este modo es posible escribir, se utilizan todas las teclas a
excepcin de Esc, que nos devuelve al modo de comando.
Modo ex: este modo permite manipular archivos (incluyendo guardar el archivo
actual, correr programas externos, etc). A partir del modo de comando,
simplemente ingresando : seguido de la orden que queremos dar.
Con unos pocos comandos bsicos se puede ya trabajar en vi editando y salvando
un texto:
Iniciando vi
Para comenzar a usar vi, teclear

vi nuevo_fichero

Este comando inicia el editor y, como el fichero no existe todava, lo crea para ser
editado. El editor est ahora en modo de comandos esperando por un comando.

vi +5 nombre_fichero
vi + nombre_fichero

//Comienza la edicin en la lnea 5

//Comienza la edicin en la ltima lnea

Moviendo el cursor
Las siguientes teclas controlar el movimiento del cursor.

k
j
h
l

arriba
abajo
izquierda
derecha

Cuando se carga vi con un nuevo fichero, el cursor est en la esquina superior


izquierda de la pantalla, y no puede ser movido con las teclas de cursor.
Modo de entrada de texto (aadir, insertar)
E-Learning

22 / 27

walter, duran

a aade texto a partir del carcter en que est situado el


cursor.
A aade texto al final de la lnea actual.
i inserta texto a partir de la posicin del cursor
I inserta texto al principio de la lnea actual.
o inserta una lnea debajo de la posicin del cursor
O inserta una lnea encima de la posicin del cursor
:r fich permite insertar el fichero fich tras la lnea actual

Borrando y cambiando texto


Los tres comandos ms utilizados para alterar el texto son

x borra el carcter en el cursor


nx borra n caracteres hacia la derecha, incluido el que est
sobre el cursor.
nX borra n caracteres hacia la izquierda.
r sustituye el carcter en el cursor
dd borra la lnea en la que est el cursor
ndd borra n lneas hacia abajo incluyendo la que contiene el
cursor.

Estos tres comandos son ejecutados en el modo de comandos, y vuelven al modo de


comandos despus de ejecutarse.
Deshaciendo cambios
Hay veces que se realizan cambios y nos damos cuenta inmediatamente que hemos
cometido un error. El editor vi facilita mecanismos para deshacer acciones de
comandos previos.
El comando u deshace el comando previo.
El comando U deshace todos los cambios realizados en la lnea actual.
Guardando cambios y permaneciendo en vi
Es muy recomendable guardar los cambios que se van realizando de una forma
regular. Para ello se utiliza

:w

Si decides que no quieres sobreescribir el fichero que ests editando, sino que
quieres guardar los cambios como un fichero nuevo, aade al comando :w el
nombre del nuevo fichero,

:w nuevo_fichero2

Abandonando vi
Para dejar vi se utiliza,

ZZ Guarda los cambios en el fichero original, y vuelve al


intrprete de comandos

E-Learning

23 / 27

walter, duran

:wq Igual que ZZ


:q! Abandona el editor, no guarda los cambios, y vuelve al
intrprete de comandos
Comandos adicionales para posicionamiento del cursor
Adems de las teclas h, j, k, l existen cuatro ms:

b
e
0
$

mueve
mueve
mueve
mueve

el
el
el
el

cursor
cursor
cursor
cursor

al
al
al
al

comienzo
final de
comienzo
final de

de
la
de
la

la palabra anterior
palabra siguiente
la lnea (cero)
lnea

Scroll de pantalla
Los comandos para avanzar una pantalla arriba y abajo (12 lneas) son

ctrl-d una pantalla abajo


ctrl-u una pantalla arriba

Para ficheros muy largos, se puede ir a una lnea del texto

3000G va a la lnea nmero 3000

Para posicionar el curso en la ltima lnea del fichero, teclea

Para posicionar el cursor al comienzo del fichero, teclea

1G

El siguiente comando muestra el nmero de lnea actual

ctrl-g

Bsqueda
Otro mtodo de posicionarse dentro de un fichero es buscando una cadena de
caracteres. En el modo de comandos, cualquier cadena de caracteres precedida por
/ significa el comando de bsqueda hacia adelante. El cursor se posiciona en la
primera ocurrencia de dicha cadena.
El comando n busca hacia adelante la siguiente ocurrencia.
Para buscar hacia atrs, se utiliza el comando ?
Borrar texto
Ya se vio anteriormente el comando dd para borrar la lnea actual.
El comando dw borra la palabra actual. Ntese que el comando de borrado
comienza por d, seguido por el mbito de aplicacin (d para una lnea, w para una
palabra (word en ingls)).
E-Learning

24 / 27

walter, duran

Quitar y poner
Cuando se borra algo, es almacenado en un buffer temporal. El contenido de este
buffer puede ser accedido y 'puesto' o pegado en cualquier sitio del texto.
Para recuperar el ltimo texto borrado, se usa el comando p
nyw guarda en la memoria intermedia n palabras contadas desde la posicin del
cursor.
y$ guanda en la memoria intermedia desde la posicin del cursor hasta el final de la
lnea.
yy guarda en la memoria intermedia la lnea entera en la que se encuentra el cursor.
yn guarda en la memoria intermedia n+1 lneas desde la lnea actual.

E-Learning

25 / 27

walter, duran

Ejercicios prcticos

Ejercicios Prcticos
Crear un documento de texto en el host (NO en la mquina virtual) para escribir los comandos y
respuestas utilizadas en el ejercicio, llamado "EjercicioTerminal-NombreApellido". En
NombreApellido, completar con el nombre y apellido del alumno.
Para TODOS los puntos del ejercicio, se deben guardar en el documento los comandos utilizados y la
respuesta recibida por parte de la terminal.
1) Una vez iniciado Debian, abrir una terminal. Averiguar en que directorio nos encontramos.
2) Cambiar de directorio hacia el /
3) Desde el /, crear una carpeta llamada "Notas" en el home directory.
4) Cambiar de directorio al home directory, utilizando el atajo de consola.
5) Listar todas las carpetas del home directory, para verificar que efectivamente "Notas" se haya
creado correctamente.
6) Crear una carpeta llamada "Instaladores" en el home directory.
7) Crear un archivo llamado "ListadoEnero.txt" dentro de la carpeta "Notas", sin ingresar a la
carpeta.
8) Listar el contenido de "Notas" para verificar que el archivo se encuentre all.
9) Ingresar a "Instaladores" y crear un archivo llamado "LinksDescarga.txt".
10) Renombrar la carpeta "Notas" a "NotasVarias".
11) Crear dentro de la carpeta "Instaladores" un archivo de texto llamado "ListadoFebrero.txt" y
luego,moverlo hacia la carpeta "NotasVarias"
12) Crear una carpeta llamada "Backup" dentro del home directory.
13) Copiar las carpetas "Instaladores" y "NotasVarias" dentro de una nueva carpeta llamada
"Enero2014", ubicada dentro de "Backup".
14) Localizar todos los archivos que dentro de su nombre contengan la palabra "Listado" dentro del
home directory.
15) Localizar todos los archivos con extensin .txt dentro del home directory.
16) Borrar el archivo "LinksDescarga.txt".
17) Borrar la carpeta "Instaladores"
18) Restaurar la carpeta "instaladores" desde la carpeta "Backup",copiandola al home directory.
E-Learning

26 / 27

walter, duran

Una vez finalizados los ejercicios, publicar el archivo "EjercicioTerminal-NombreApellido" en el foro


"Linea de comandos", en la seccin "Ejercicios", para su correccin

E-Learning

27 / 27

También podría gustarte