Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Siguiendo con el tema Unix de “todo es un archivo”, programas como ls en realidad mandan sus
resultados a un archivo especial llamado standard output o salida estándar (a menudo
expresado como stdout) y sus mensajes de estado a otro archivo llamado standard error o error
estándar (stderr). Por defecto, tanto la salida estándar como el error estándar están enlazados a
la pantalla y no se guardan en un archivo en el disco. Además muchos programas toman la
entrada de una aplicación llamada standard input o entrada estándar (stdin) que está, por
defecto, asociada al teclado. La redirección I/O nos permite cambiar donde va la salida y de
donde viene la entrada. Normalmente, la salida va a la pantalla y la entrada viene del teclado,
pero con la redirección I/O, podemos cambiarlo.
[comandos] > [archivo destino] –> Para redirigir la salida estándar a otro
archivo en lugar de a la pantalla, usamos el operador de redirección “>” seguido del
nombre del archivo.
o Por ejemplo, podríamos decirle al shell que mande la salida del comando ls al
archivo ls-output.txt en lugar de a la pantalla: ls -l /usr/bin > ls-output.txt
Si los comandos que pongo, los directorios que ponga no existen, me
sale un mensaje de error, porque el programa ls no manda sus
mensajes de error a la salida estándar. En lugar de eso, como la
mayoría de los programas bien escritos de Unix, manda sus mensajes
de error al error estándar. Como sólo hemos redirigido la salida
estándar y no el error estándar, el mensaje de error todavía es enviado
a la pantalla
o Si alguna vez necesitamos realmente un archivo nuevo vacío o vaciar un
archivo podemos usar un truco como éste: > ls-output.txt
[comandos] >> [archivo destino] –> Hace lo mismo que >, solo que si el
archivo existe no lo sobrescribe, sino que agrega al final el resultado. Si no existe, crea
uno nuevo.
[comandos] [#]> [archivo destino] –>Un programa puede producir salidas en
una de varias cadenas de archivos numeradas. Aunque nos hemos referido a las tres
primeras de estas cadenas de archivos como entrada estándar, salida estándar y el
shell se refiere a ellas internamente como los descriptores de archivo 0, 1 y 2
respectivamente.
o 0 –> entrada estándar.
o 1 –> salida estándar.
o 2 –> error estándar.
Como el error estándar es el mismo que el descriptor de archivo
número 2, podemos redirigir el error estándar con esta notación:
ls -l /bin/usr 2> ls-error.txt
El sistema proporciona una forma de hacerlo redireccionando la salida
a un archivo especial llamado “dev/null”. Este archivo es un dispositivo
de sistema llamado un cubo de bits que acepta entradas y no hace
nada con ellas. Para suprimir los mensajes de error de un comando,
hacemos esto: ls -l /bin/usr 2> /dev/null
[comandos] > [nombre de archivo] 2>&1 –>Captura toda la salida de un
comando a un archivo. Redirige tanto la salida estándar como el error estándar al
mismo tiempo.
El orden es esencial. Ej: ls -l /bin/usr > ls-output.txt 2>&1
[comandos] &> [nombre de archivo] –> Es lo mismo que lo anterior, pero
mejor. Ej: ls -l /bin/usr &> ls-output.txt
o Podrías también añadir la salida estándar y el error estándar a un archivo
existente así: ls -l /bin/usr &>> ls-output.txt
Pipelines (Tuberías) –> La capacidad de los comandos de leer datos de la entrada
estándar y mandarlos a la salida estándar la utiliza una función del shell llamada
pipeline (tubería). Usando el operador pipe (tubo) “|” (la barra vertical), la salida
estándar de un comando puede ser canalizada hacia la entrada estándar de otro:
comando1 | comando2
Notación simbólica
o Se divide en tres partes: a quien afecta el cambio, que
operación se realizarán, y que permisos se establecerán
o Si no se especifica ningún carácter, se asume “all”. La
operación puede ser un “+” indicando que un permiso ha
de ser añadido, un “-” indicando que un permiso ha de ser
retirado, o un “=” indicando que sólo los permisos
especificados deben ser aplicados y todos los demás han
de ser eliminados.
umask –> Establece los permisos por defecto.
o Usa notación octal para expresar una máscara de bits que serán eliminados de
los atributos del modo de un archivo
o Lo que yo ponga son los permisos que se van a eliminar
o Cuando solo pongo umask, me salen los permisos por defecto, que por lo
general es 0002, lo cual es la representación de nuestra mascara.
o Umask [número] -> Cambia los permisos por defecto.
Ej: umask 0777
Al crear un archivo nadie tendrá permisos para nada (-----
-----)
su [-[l]] [user] –> Ejecuta un shell como otro usuario.
o El comando sudo permite a un administrador modificar un archivo de
configuración llamado /etc/sudoers, y definir comandos específicos que
usuarios particulares tienen permiso ejecutar bajo una identidad asumida.
o Si no especificamos el usuario, se asume el superusuario. Puede ser abreviada
como “-”, que es como se usa más a menudo.
Para arrancar una shell para el superusuario, haríamos esto:su –
De ahí nos pide la contraseña
Cuando terminemos, escribimos “exit” para volver al shell previo
o su -c 'comando' –>Ejecuta un único comando en lugar de comenzar un nuevo
comando interactivo. Ej: su -c 'ls -l /root/*'
Es importante incluir el comando entre comillas simples, ya que no
queremos que se realice una expansión en nuestro shell, ni tampoco
en el nuevo shell
sudo [programa o comando] –> Ejecuta un comando como otro usuario.
o Tiene algunas capacidades adicionales importantes que su.
o El administrador puede configurar sudo para permitir a los usuarios ordinarios
ejecutar comandos como un usuario diferente (normalmente el superusuario)
de una forma muy controlada.
o sudo no requiere la contraseña del superusuario. Para autenticarse usando
sudo, el usuario utiliza su propia contraseña.
o sudo no abre una nueva shell, ni carga el entorno de otro usuario. Esto
significa que los comandos no necesitan ser entrecomillados de forma
diferente a la que lo estarían si lo ejecutáramos sin usar sudo.
o -l –> Muestra los privilegios que están aceptados por sudo.
chown [propietario][:[grupo]] archivo…–> Cambia el propietario y el grupo
de un archivo o directorio.
o chown puede cambiar el propietario del archivo y/o el grupo del propietario
dependiendo del primer argumento del comando.