martes, 10 de julio de 2012

Creando y Removiendo enlaces simbolicos

Un enlace simbolico es un apuntador que contiene el nombre de la ruta hacia un archivo ó directorio. Los enlaces simbolicos se distinguen con la letra "l" en el campo de tipo de archivo al listarlos con el comando ls -l. 

Sintaxis                                     

ln -s origen destino

- origen: hace referencia al archivo al cual quieres crear el enlace.

- destino: hace referencia al nombre del enlace simbolico el cual apuntará al archivo origen.


Ejemplo:

johnny@debianJG:~/Documents/pruebas$ pwd
/home/johnny/Documents/pruebas
johnny@debianJG:~/Documents/pruebas$echo "Este es mi archivo" > /home/johnny/Desktop/hola.txt
johnny@debianJG:~/Documents/pruebas$ cat /home/johnny/Desktop/hola.txt
Este es mi archivo
johnny@debianJG:~/Documents/pruebas$ ln -s /home/johnny/Desktop/hola.txt mio
johnny@debianJG:~/Documents/pruebas$ ls -ltrh
total 48K
drwxr-xr-x 3 johnny johnny 4.0K Mar 11 12:32 carpeta1
drwxr-xr-x 3 johnny johnny 4.0K Mar 11 13:19 dir_carpeta
-rw-r--r-- 1 johnny johnny 1.6K Mar 13 23:03 neruda.txt
drwxr-xr-x 2 johnny johnny 4.0K Apr  4 17:57 abecedario
-rw-r--r-- 1 johnny johnny 1.6K Apr 11 01:10 neruda.txt.bkp
-rw-r--r-- 1 johnny johnny   24 Jul  9 23:00 archivo4.txt
drwxr-xr-x 2 johnny johnny 4.0K Jul  9 23:05 unidad#6.bkp2
drwxr-xr-x 2 johnny johnny 4.0K Jul  9 23:08 unidad#6.bkp
drwxr-xr-x 2 johnny johnny 4.0K Jul  9 23:22 bin
-rw-r--r-- 1 johnny johnny   24 Jul  9 23:30 archivo3.txt
drwxr-xr-x 2 johnny johnny 4.0K Jul  9 23:31 unidad#6
drwxr-xr-x 3 johnny johnny 4.0K Jul  9 23:42 newdir
lrwxrwxrwx 1 johnny johnny   29 Jul 10 00:29 mio -> /home/johnny/Desktop/hola.txt
johnny@debianJG:~/Documents/pruebas$ cat mio
Este es mi archivo

johnny@debianJG:~/Documents/pruebas$ ls -F
abecedario/  archivo3.txt  archivo4.txt  bin/  carpeta1/  dir_carpeta/  mio@  neruda.txt  neruda.txt.bkp  newdir/  unidad#6/  unidad#6.bkp/  unidad#6.bkp2/

johnny@debianJG:~/Documents/pruebas$


Removiendo enlaces simbolicos

Para remover o quitar un enlace simbolico se pueden usar los siguientes comandos:
- rm nombre_enlace
- unlink nombre_enlace

Ejemplo: eliminando el enlace anteriormente creado sería lo sicuiente

rm mio ó unlink mio.

lunes, 2 de julio de 2012

Comando "man"

Con el comando "man" podemos la documentacion realacionada a un comando ó archivo, alguna de las opciones utilies a utilizar en este comando son:

- f: muestra las secciones asociadas a un comando un archivo.
- s: para especificar la sección o pagina a visualizar.

- k: para especificar una busqueda en los manuales asociados a una palabra clave.

Ejemplos:


1)
johnny@debianJG:~$ man -f passwd
passwd (1)           - change user password
passwd (5)           - the password file
passwd (1ssl)        - compute password hashes

similar en solaris (man -l passwd)

Los campos especificados entre parentesis indican la sección o pagina a visualizar para obtener mayor informacion del comando u archivo.

Para mayor información sobre las secciones o pagina pueden consultar el man del man.
...
       The table below shows the section numbers of the manual followed by the types of pages they contain.

       1   Executable programs or shell commands
       2   System calls (functions provided by the kernel)
       3   Library calls (functions within program libraries)
       4   Special files (usually found in /dev)
       5   File formats and conventions eg /etc/passwd
       6   Games
       7   Miscellaneous  (including  macro  packages and conven‐
           tions), e.g. man(7), groff(7)
       8   System administration commands (usually only for root)
       9   Kernel routines [Non standard]
...


2)
man -s número comando  -> man -s 1 passwd 
man -s número archivo     -> man -s 5 passwd


3)
johnny@debianJG:~$ man -k passwd
chgpasswd (8)        - update group passwords in batch mode
chpasswd (8)         - update passwords in batch mode
exim4_passwd (5)     - Files in use by the Debian exim4 packages
exim4_passwd_client (5) - Files in use by the Debian exim4 packages
fgetpwent_r (3)      - get passwd file entry reentrantly
getpwent_r (3)       - get passwd file entry reentrantly
gpasswd (1)          - administer /etc/group and /etc/gshadow
grub-mkpasswd-pbkdf2 (1) - generate hashed password for GRUB
lppasswd (1)         - add, change, or delete digest passwords.
mkpasswd (1)         - Overfeatured front end to crypt(3)
pam_localuser (8)    - require users to be listed in /etc/passwd
passwd (1)           - change user password
passwd (1ssl)        - compute password hashes
passwd (5)           - the password file
passwd2des (3)       - RFS password encryption
SSL_CTX_set_default_passwd_cb (3ssl) - set passwd callback for encrypted PEM file handling
SSL_CTX_set_default_passwd_cb_userdata (3ssl) - set passwd callback for encrypted PEM file handling
update-passwd (8)    - safely update /etc/passwd, /etc/shadow and /etc/group
vnc4passwd (1)       - change a VNC password
vncpasswd (1)        - change a VNC password


Esta última es similar al utilizar el comando whatis -r passwd.

martes, 26 de junio de 2012

Descomprimir archivos .rar en Debian

Para poder descomprimir archivos .rar en Debian debemos tomar tener agregado en el archivos de repositorios /etc/apt/source.list la siguiente linea:

deb http://ftp.de.debian.org/debian squeeze main non-free

Una vez hecho esto es importante ejecutar el siguiente comando:

aptitude update ó apt-get update

Esto con el fin de que se actualice la lista de repositorio con los paquetes disponibles y nos tome en cuenta el repositorio agregado anteriormente.

Despues procedemos a instalar el paquete unrar:

aptitude install unrar ó apt-get install unrar


root@debianJG:/home/johnny/Downloads/rar# aptitude install unrar
Reading package lists...
Building dependency tree...
Reading state information...
Reading extended state information...
Initializing package states...
Reading task descriptions...
The following NEW packages will be installed:
  unrar
0 packages upgraded, 1 newly installed, 0 to remove and 177 not upgraded.
Need to get 101 kB of archives. After unpacking 246 kB will be used.
Writing extended state information...
Get:1 http://ftp.de.debian.org/debian/ squeeze/non-free unrar i386 1:3.9.10-1 [101 kB]
Fetched 101 kB in 1s (53.3 kB/s)
Selecting previously deselected package unrar.
(Reading database ... 123183 files and directories currently installed.)
Unpacking unrar (from .../unrar_1%3a3.9.10-1_i386.deb) ...
Processing triggers for man-db ...
Setting up unrar (1:3.9.10-1) ...
update-alternatives: using /usr/bin/unrar-nonfree to provide /usr/bin/unrar (unrar) in auto mode.
Reading package lists...
Building dependency tree...
Reading state information...
Reading extended state information...
Initializing package states...
Writing extended state information...
Reading task descriptions...


Una vez instalado el paquete ya podemos hacer uso del mismo.

Entre las opciones más comúnes a utilizar estan: "e" y "v".

  • e - Extract: Extrae el contenido del archivo .rar en el directorio actual
  • v - Verbose: Muestra el contenido del archivo .rar sin descomprimir
Ejemplo:

- unrar v archivo.rar
- unrar e archivo.rar

Para mayor información consultar man del comando.

jueves, 26 de abril de 2012

Trabajos programados en cola - comando "at"


El comando at lo utilizamos si queremos colococar en una cola un trabajo ó tarea para ser ejecutado en un tiempo especifico. La orden at a diferencia de las tareas del cron se ejecuta solo una vez y desaparece de la cola, mientras que las tareas del cron se ejecutan periodicamente en el horario que se le especifique.

Sintaxis

  • at [-V] [-q queue (cola)] [-f file (archivo)] [-mldv (opciones)] tiempo [fecha]
  • El tiempo puede ser: HH:MM se puede colocar el sufijo AM ó PM, midnight (12:00am), noon (12:00pm), or teatime (4:00pm)
  • La fecha se puede especificar de la siguiente manera: MMDDYY, MM/DD/YY, today, tomorrow. Nota: si se coloca solo la hora y no se especifica fecha, se asume como “today” que seria el dia actual.

Ordenes del at

  • atq: despliega los trabajos en cola.
  • atrm numero_trabajo: elimina un trabajo de la cola.

Archivos Generales

/etc/at.allow → Usuario permitidos
/etc/at.deny → Usuarios denegados


Ejemplo

* Creo un trabajo en la cola “c” a ejecutarse el dia de mañana a las 21:55.
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ at -q c 21:55 tomorrow
warning: commands will be executed using /bin/sh
at> free > /home/johnny/Documents/pruebas/carpeta1/carpeta2/free.txt
at> <EOT>
job 9 at Mon Apr 9 21:55:00 2012

* Muestro el trabajo creado.
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atq
9 Mon Apr 9 21:55:00 2012 c johnny

* Creo dos nuevos trabajos a ejecutarse el dia de hoy. Si no se especifica un numero de cola toma por defecto la cola “a”
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ at 21:57
warning: commands will be executed using /bin/sh
at> uptime > /home/johnny/Documents/pruebas/carpeta1/carpeta2/uptime.txt
at> <EOT>
job 10 at Sun Apr 8 21:57:00 2012
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atq
10 Sun Apr 8 21:57:00 2012 a johnny
9 Mon Apr 9 21:55:00 2012 c johnny

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ at 22:00
warning: commands will be executed using /bin/sh
at> date > /home/johnny/Documents/pruebas/carpeta1/carpeta2/date.txt
at> <EOT>
job 12 at Sun Apr 8 22:00:00 2012
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atq
10 Sun Apr 8 21:57:00 2012 a johnny
9 Mon Apr 9 21:55:00 2012 c johnny
12 Sun Apr 8 22:00:00 2012 a johnny

* Elimino de la cola el trabajo a ejecutarse el dia de Lunes 9 de Abril, trabajo #9.
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atrm 9
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atq
10 Sun Apr 8 21:57:00 2012 a johnny
12 Sun Apr 8 22:00:00 2012 a johnny

miércoles, 25 de abril de 2012

Administrador de procesos cron


El cron es un administrador de procesos que se encarga de ejecutar tareas periodicas en un tiempo especifico. Los procesos o tareas que deben ser ejecutados por el demonio cron, se encuentran en el fichero crontab de cada usuario. Estos son procesos que se ejecutan en segundo plano (demonios).


Sintaxis

  • Tiempo de ejecución
      * Minutos (0-59)
      * Horas (0-23)
      * Día del mes (1-31)
      * Meses (1-12) ó (jan, feb, mar, apr, may, jun, jul, aug,sep, oct, nov, dec)
      * Día de la Semana (1-7) ó (mon, tue,wed, thr,fri, sat,sun). El Domingo puede ser el 0 ó el 7.
  • Usuario de ejecución.
  • Comando a ejecutar. (PATH ABSOLUTO)

Se pueden utilizar las siguientes opciones como comodines:

  • Asterisco “*” → Todos
  • Guión “-” → Rango (defino rango o periodo)
  • Coma “,” → Selectivo (defino minutos, horas, meses, dias de la semana en especifico)
  • Intervalos “/” → Intervalos


Opciones a utilizar con el comando crontab

  • -l → Lista el contenido del crontrab
  • -r → elimina el crontab actual
  • -e → crea un nuevo crontab para el usuario en caso de no existir ó edita el crontab actual del usuario.


Archivos Generales

/etc/crontab → Se encuentra el archivo general del sistema
/var/spool/cron/crontabs → Se encuentra el archivo crontab de cada usuario

/etc/cron.allow → Usuario permitidos
/etc/cron.deny → Usuarios denegados

/etc/init.d/cron status → Verifico el estado del proceso cron. Puedo utilizar cualesquier de las siguientes opciones (status, stop, star, restart, reload)


Ejemplo:
A modo de ejemplo colocare la misma tarea a ejecutar, pero en diferentes horarios de modo de practicar la sintaxis del crontab.

  1. Ejecuta la tarea todos los dias, a cada hora, en el minuto 25.
min | hr | dia_mes | mes | dia_semana | usuario | Comando
25     *           *            *        *    cp /home/usuario/prueba/* /tmp/

  1. Ejecuta la siguiente tarea cada 5 minutos.
min | hr | dia_mes | mes | dia_semana | usuario | Comando
*/5 * * * * cp /home/usuario/prueba/* /tmp/

  1. Se ejecuta cada minuto durante los primero 15 minutos, entre las horas 2 y 4 todos los meses, siempre y cuando el dia sea Domingo.
min    |    hr    | dia_mes | mes | dia_semana | usuario | Comando
1-15     2-4          3,7         *          7                   cp /home/usuario/prueba/* /tmp/

Prioridad en los procesos con “nice” y “renice”


Utilizamos las ordenes:

  • nice: para ejecutar un proceso con una prioridad inicial. Su valor por defector es 10.
  • renice: para alterar la prioridad de un proceso ya iniciado.

Las prioridades pueden variar entre -20 y 19, siendo la prioridad negativa la mas alta.

Nota: un usuario no puede iniciar o alterar la prioridad de un proceso a prioridad negativa a menos que sea tenga permisos o sea root.

Sintaxis:

nice -n [prioridad negativa/positiva] orden
renice -n [prioridad negativa/positiva] orden


A continuacion se vera un ejemplo donde ejecutamos varias veces un proceso xclock con distintas prioridades:

- Inicia proceso con prioridad 0
johnny@debianJG:~$ xclock &
[3] 2853

- Inicia proceso con prioridad 10
johnny@debianJG:~$ nice xclock &
[4] 2856

- Inicia proceso con prioridad 5
johnny@debianJG:~$ nice -n 5 xclock &
[5] 2857

- Intenta iniciar proceso con prioridad negativa -5 y nos da un error por no tener permisos, deja prioridad 0.
johnny@debianJG:~$ nice -n -5 xclock &
[6] 2858
johnny@debianJG:~$ nice: cannot set niceness: Permission denied
johnny@debianJG:~$ top
top - 22:29:58 up 1:35, 2 users, load average: 0.11, 0.06, 0.01
Tasks: 157 total, 2 running, 155 sleeping, 0 stopped, 0 zombie
Cpu(s): 5.3%us, 1.2%sy, 0.0%ni, 91.7%id, 1.7%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 2853196k total, 1023116k used, 1830080k free, 264020k buffers
Swap: 1951736k total, 0k used, 1951736k free, 401024k cached

PID PPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2867 2450 johnny 20 0 2456 1116 832 R 4 0.0 0:00.04 top
2858 2450 johnny 20 0 7968 3012 2420 S 0 0.1 0:00.04 xclock
2857 2450 johnny 25 5 7968 3012 2420 S 0 0.1 0:00.04 xclock
2856 2450 johnny 30 10 7968 3012 2420 S 0 0.1 0:00.05 xclock
2853 2450 johnny 20 0 7968 3016 2420 S 0 0.1 0:00.06 xclock


Cambiamos la prioridad del proceso 2853a prioridad negativa -10, usando root.

root@debianJG:~# renice -n -10 2853
2853: old priority 0, new priority -10
johnny@debianJG:~$ top
top - 22:40:15 up 1:46, 2 users, load average: 0.10, 0.06, 0.01
Tasks: 159 total, 2 running, 157 sleeping, 0 stopped, 0 zombie
Cpu(s): 28.5%us, 0.7%sy, 0.0%ni, 70.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2853196k total, 1026396k used, 1826800k free, 264536k buffers
Swap: 1951736k total, 0k used, 1951736k free, 401356k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2858 johnny 20 0 7968 3012 2420 S 0 0.1 0:00.04 xclock
2857 johnny 25 5 7968 3012 2420 S 0 0.1 0:00.05 xclock
2856 johnny 30 10 7968 3012 2420 S 0 0.1 0:00.06 xclock
2853 johnny 10 -10 7968 3016 2420 S 0 0.1 0:00.06 xclock

Evitar sobreescribir archivos con redirecciones


A continuación explicare brevemente como evitar sobreescribir archivos existente cuando intentamos usar redirecciones en Debian squeeze. Esto puede variar dependiendo de la distribucion.

  • Usar el comando set -o noclobber para evitar que se que sobreescriba un archivo existente.
  • Si queremos quitar la proteccion ultilizamos >|
  • Si queremos que la proteccion se presente de forma permanente debemos incluir el comando set -o noclobber en el shell predeterminado del usuario. Ejemplo: .bashrc, .cshrc, entre otros.
Veamos los siguientes ejemplos:

johnny@debianJG:~/Documents/pruebas$ free > archivo1
johnny@debianJG:~/Documents/pruebas$ cat archivo1
total used free shared buffers cached
Mem: 2853196 1038132 1815064 0 269776 403900
-/+ buffers/cache: 364456 2488740
Swap: 1951736 0 1951736
johnny@debianJG:~/Documents/pruebas$ ls -l archivo1
-rw-r--r-- 1 johnny johnny 230 Apr 5 22:14 archivo1
johnny@debianJG:~/Documents/pruebas$ set -o noclobber
johnny@debianJG:~/Documents/pruebas$ uptime > archivo1
bash: archivo1: cannot overwrite existing file

johnny@debianJG:~/Documents/pruebas$ ls >| archivo1
johnny@debianJG:~/Documents/pruebas$ cat archivo1
!
archivo1
archivo2
archivo3
archivo4
-C
d
este>archivo
mi archivo
ooooo
-V

martes, 24 de abril de 2012

Redirecciones en Linux (Entradas, Salidas y Error estandar)


En linux se tiene 3 maneras estandar de mostrar los flujos de información de entrada y salida, estos son los siguientes:

  • Entrada estandar (stdin – Standard Input): generalmente asociada al teclado. Esta representada con el número 0.
  • Salida estandar (stdout – Standard Output): usada para mostrar la salida, generalmente la salida por el monitor. Esta representada con el número 1.
  • Salida estandar de error (stderr – Standard Error): usada para mostrar los errores de la salida estandar. Esta representada con el número 2.

Se utilizan los siguientes simbolos para redireccionar la entrada/salida estandar:

Mayor que “>”: Redirige la salida estandar, tambien se puede utilizar de la forma 1>, aunque si se omite el numero 1, el valor por defecto de la salida es 1.  

Menor que “<”: Redirige la entrada estandar.

Utilizar “>>” para redirigir la salida a un archivo ya existente sin sobreescribir su contenido.

Veamos algunos ejemplos para mayor entedimiento:

 
1) Redireccionando la salida estandar “>”
 
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ who
johnny tty7 2012-04-02 13:41 (:0)
johnny pts/0 2012-04-02 13:41 (:0.0)
johnny pts/1 2012-04-02 14:32 (:0.0)

- Redirecciono la salida estandar a un archivo: usuario_conect.txt
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$who > usuario_conect.txt

Nota: Si el archivo existe, se sobreescribe el contenido. Si queremos añadir la salida a un archivo ya existente utilizar >>.

- Listo el archivo
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ cat usuario_conect.txt
johnny tty7 2012-04-02 13:41 (:0)
johnny pts/0 2012-04-02 13:41 (:0.0)
johnny pts/1 2012-04-02 14:32 (:0.0)

- Añadiendo el resultado de la salida estandar al archivo usuario_conect.txt”

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ ls >> usuario_conect.txt
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ cat usuario_conect.txt
johnny tty7 2012-04-02 13:41 (:0)
johnny pts/0 2012-04-02 13:41 (:0.0)
johnny pts/1 2012-04-02 14:32 (:0.0)
archivo2
carpeta3
mi_lista
tmp.txt
tmp2.txt
tmpfile
usuario_conect.txt 



2) Redireccionando la entrada estandar “<”

Un ejemplo sencillo que podemos ver, es contar la cantidad de lineas que posee el archivo lineas.txt”

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2/carpeta3$ wc -l < lineas.txt
34



3) Redireccionando el error estandar “2>”

  • La redireccion de stdout no afectara a stderr o stdin. 
  • Los mensajes de error se muestran en stderr
  • Para redireccionar el error (stderr) a un archivo lo realizamos con 2>.
  • La redireccion de stderr no afectara a stdout ni a stdin.

Veamos algunos ejemplos:

- Voy a listar un archivo que no existe, de formar de producir un error, veamos lo que pasa.

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ ls dir
ls: cannot access dir: No such file or directory

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ ls dir > error .txt
ls: cannot access dir: No such file or directory

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ cat error .txt
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$

- Vemos que el archivo error, no contiene nada (La redireccion de stdout no afectara a stderr ni a stdin) 

- Ahora redireccionamos la salida de error al archivo error.txt

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ ls dir 2> error.txt
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ cat error.txt
ls: cannot access dir: No such file or directory 

- "Tambien podemos enviar añadir la salida de error a un archivo con 2>> ya existente sin necesidad de sobreescribirlo. Nota: si lo realizamos de la forma 2> y el archivo existe, se sobreescribe y si no existe lo genera."


johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ ls -l mi_casa 2>> error.txt
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ cat error.txt
ls: cannot access dir: No such file or directory
ls: cannot access mi_casa: No such file or directory


- Existe un archivo especial llamado /dev/null para deshacerse de datos indeseados.

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ ls -l dir 2> /dev/null
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$

- La sentencia anterior indica que si el archivo listado no existe, que no muestre el error y se deshaga del mismo.



4) Redireccionando tanto salida estandar (stdout) como error estandar (stderr) a un solo archivo “&> ó 2>&1”


- Con la forma &> podemos enviar tanto el stdout como el stderr a un solo archivo.

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ ls -l aa &> secuencia.txt 
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ cat secuencia.txt
ls: cannot access aa: No such file or directory
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ ls -l aa &>> secuencia.txt
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ cat secuencia.txt
ls: cannot access aa: No such file or directory
ls: cannot access aa: No such file or directory
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ ls -l &>> secuencia.txt
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ cat secuencia.txt
ls: cannot access aa: No such file or directory
ls: cannot access aa: No such file or directory
total 36
-rw-r--r-- 1 johnny johnny 0 Mar 11 12:32 archivo2
drwxrwxrwx 2 johnny johnny 4096 Apr 2 17:28 carpeta3
-rw-r--r-- 1 johnny johnny 102 Apr 2 17:58 error.txt
-rw-r--r-- 1 johnny johnny 2547 Mar 14 00:15 mi_lista
-rw-r--r-- 1 johnny johnny 566 Apr 2 18:06 registro.txt
-rw-r--r-- 1 johnny johnny 102 Apr 2 18:28 secuencia.txt
-rw-r--r-- 1 johnny johnny 482 Mar 14 00:41 tmp.txt
-rw-r--r-- 1 johnny johnny 346 Mar 14 00:39 tmp2.txt
-rw-r--r-- 1 johnny johnny 346 Mar 14 00:35 tmpfile
-rw-r--r-- 1 johnny johnny 211 Apr 2 17:12 usuario_conect.txt


- Una forma muy usada de listar tanto la salida estandar como la salida de un error a un solo archivo es la siguiente. 2>&1, la cual desvia la salida estándar de errores a la salida estándar, de esta manera podemos tener un archivo en donde se guarden tanto la salida exitosa como la de error de algun srcript en un solo archivo

 
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ ls -l > registro.txt
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ cat registro.txt
total 28
-rw-r--r-- 1 johnny johnny 0 Mar 11 12:32 archivo2
drwxrwxrwx 2 johnny johnny 4096 Apr 2 17:28 carpeta3
-rw-r--r-- 1 johnny johnny 102 Apr 2 17:58 error.txt
-rw-r--r-- 1 johnny johnny 2547 Mar 14 00:15 mi_lista
-rw-r--r-- 1 johnny johnny 0 Apr 2 18:00 registro.txt
-rw-r--r-- 1 johnny johnny 482 Mar 14 00:41 tmp.txt
-rw-r--r-- 1 johnny johnny 346 Mar 14 00:39 tmp2.txt
-rw-r--r-- 1 johnny johnny 346 Mar 14 00:35 tmpfile
-rw-r--r-- 1 johnny johnny 211 Apr 2 17:12 usuario_conect.txt

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ ls -l noexiste >> registro.txt 2>&1
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ cat registro.txt
total 28
-rw-r--r-- 1 johnny johnny 0 Mar 11 12:32 archivo2
drwxrwxrwx 2 johnny johnny 4096 Apr 2 17:28 carpeta3
-rw-r--r-- 1 johnny johnny 102 Apr 2 17:58 error.txt
-rw-r--r-- 1 johnny johnny 2547 Mar 14 00:15 mi_lista
-rw-r--r-- 1 johnny johnny 0 Apr 2 18:00 registro.txt
-rw-r--r-- 1 johnny johnny 482 Mar 14 00:41 tmp.txt
-rw-r--r-- 1 johnny johnny 346 Mar 14 00:39 tmp2.txt
-rw-r--r-- 1 johnny johnny 346 Mar 14 00:35 tmpfile
-rw-r--r-- 1 johnny johnny 211 Apr 2 17:12 usuario_conect.txt
ls: cannot access noexiste: No such file or directory