n
nodo siguiente en la ordenación temática
p
nodo previo en la ordenación temática
m
elegir item de menú, ir hacia ese nodo
f
seguir una referencia cruzada
u
a nodo superior
l d
nodo anterior visitado (last) a nodo directorio
q
salir de info
1..5
elegir item 1 .. 5 del menú de nodo
muestra el contenido digitado.
*rear del mismo modo el archi(o %'01', haciendo cat > LEAME
con este contenido+ Este es el archivo LEAME.
g
mover a un nodo indicando su nombre; puede darse el nombre de archivo, así
Recuerde que UNIX diferencia entre mayúsculas y minúsculas. El archivo LEAME tendrá este contenido.
(nombre-archivo)nombre-nodo s
buscar una cadena de caracteres, elegir el nodo de la siguiente ocurrencia
Introducción al "shell"
cat LEAME
para (erificar el contenido. Comandos en el sistema UNIX.
El intérprete de comandos o "shell" actúa entre el sistema operativo y el operador. Provee al usuario una interfaz hacia e l sistema operativo. El usuario dialoga con el intérprete de comandos, y éste transfiere las órdenes al sistema operativo, que las ejecuta sobre la máquina. Crear dos archivos de prueba. *on el comando cat puede crearse un archi(o aceptando e l teclado como entrada estándar y direccionando la salida estándar hacia un archi(o+ cat >nota
'n UNIX, los comandos son programas e&ecutables separados. 'l shell es un int2rprete de comandos+ puede epandir y cambiar la manera en $ue act3an los comandos, admite el uso de comodines y la interconeión o entubamiento de comandos. Estructura de comandos. %a estructura general de un comando es la siguiente+ nombre opciones argumentos
digitar las siguientes l)neas, tal cual están, terminando cada l)nea dando
nombre es
'nter-! finali"ar con *trl/-. /igitar con cuidado+ una (e" pasados al
forma en $ue act3a el comando! (an precedidas por el signo - 4menos5.
renglón siguiente, no puede (ol(erse atrás para corregir.
%osargumentos son com3nmente nombres de archi(os o nombres de login de
El shell es un intérprete de comandos.
el nombre del comando. %as opciones o banderas controlan la
usuarios.
Es también un lenguaje de programación. Los programas escritos con el shell se llaman scripts.
pr -l23 nota pr -l23 LEAME
/igitar *trl/- para finali"ar el ingreso. cat nota
da formato y muestra el archi(o indicado en páginas de 67 l)neas de largo para $ue $uepa en la pantalla.
pr -d -l23 LEAME
general, para hacer uso del contenido de una (ariable, se escribe $nombrevariable.
muestra el archi(o LEAME a doble espacio, largo de página 67. pr -d -o15 -l23 LEAME
's una costumbre muy arraigada en UNIX usar may3sculas para los nombres
doble espacio, margen i"$uierdo de 89 e spacios, largo de página 67.
de (ariable, as) como es una regla usar min3sculas para los comandos. %as pr -l23 nota LEAME | more
opciones pueden ser may3sculas y min3sculas! la opción a no es lo mismo
muestra los dos archi(os uno tras otro, pero los pagina separados.
$ue 0.
cat nota LEAME
concatena los archi(os! los presenta uno tras otro.
%as (ariables de ambiente pueden ser usadas como nombres de comando o como argumentos de un comando.
cat nota LEAME | pr -l23
concatena los archi(os y luego les da formato a los dos &untos.
XYZ="cat nota" $XYZ
Expansiones de la línea de comando.
la (ariable X<= contiene un comando, y al s er in(ocado su contenido, el %os comodines son caracteres $ue sustituyen cadenas de caracteres. *
secuencia de caracteres cualesquiera, 0 o más.
?
caracter cualquiera, uno y uno sólo; debe aparear un caracter.
comando es e&ecutado.
echo hola $MUESTRA chicos
[...] sustituye los caracteres indicados individualmente.
la (ariable puede usarse en la form ación de cadenas.
Variables de ambiente.
echo hola${MUESTRA}chicos
%as (ariables de ambiente son cadenas de caracteres de la forma
la (ariable puede embeberse en una cadena! las lla(es delimitan el nombre de la (ariable.
nombre=valor nombre es
env
cual$uier cadena de caracteres $ue no incluya : ni espacio
4;b5! valor es cual$uier cadena! puede incluir el espacio si el (alor está entre comillas.
muestra las (ariables de ambiente definidas. 1uchas s on fi&adas en el ingreso del usuario al sistema 4(ariables de login5! y otras son propias del shell 4(ariables del shell5. echo $LOGNAME
MUESTRA="hola chicos"
asigna "hola
chicos" a
muestra el nombre de login del usuario.
la (ariable MUESTRA.
echo $HOSTNAME echo $MUESTRA
muestra el nombre de la má$uina.
muestra en pantalla el contenido de la (ariable MUESTRA. Para ehibir el contenido de una (ariable de ambiente se escribe echo
$nombre-variable .
'n
echo $NOEXISTE
%as (ariables no definidas no muestran nada cuando son referenciadas.
ingrese comando: MUESTRA=hola ingrese comando: echo $MUESTRA
Entrecomillado de argumentos en la línea de comandos. %os espacios separan argumentos. 'l entrecomillado obliga a tratar una cadena con espacios como si fuera un solo argumento. *uando se usan comillas dobles 4# #5 el shell interpret a las (ariables de ambiente inclu)das, actuando seg3n su contenido+ MUESTRA="Mi nombre de login es $LOGNAME" echo $MUESTRA
Cuando se usan comillas simples (' ') el shell no interpreta las variables de ambiente, tratando sus nombres como cadenas:
hola
ingrese comando:
la (ariable 1U'S>?0 cambió pero el indicador no cambió! ingrese comando: PS1='$' $
repone el indicador de comandos. Entrada estándar y salida estándar. %os comandos leen como entrada una secuencia de caracteres 4flu&o de
MUESTRA='La variable $LOGNAME contiene su nombre de login' echo $MUESTRA
entrada o #input stream#5, y escriben a la salida otra secuencia de caracteres 4flu&o de salida o #output stream#5. 'stas secuencias no tienen estructura interna alguna, y se les llama entrada estándar y salida estándar.
%as comillas simples permiten usar comillas dobles+ echo '"hola chicos"'
PS1.
cat nota > nota2
redirige la salida estándar a un archi(o $ue crea o sobreescribe, en (e" de a la pantalla. mail juan < nota
0un$ue generalmente los omitimos, en los e&emplos de esta sección mostraremos el indicador de comandos y la salida de e&ecución.
toma la entrada estándar de un archi(o en (e" del teclado. pr < nota > nueva.nota
La variable símbolo de indicador de comandos nivel 1 PS1 (Prompt Symbol level 1) es un valor de ambiente que puede no aparecer en la salida de env: $ echo $PS1 $
el archi(o nota es la entrada, el archi(o nue(a.nota es la salida. cat nueva.nota
muestra el archi(o donde se grabó la salida con formato.
responde con el indicador de comandos actual, :. $ PS1=hola:
%os s)mbolos y - redirigen entrada y salida estándar+
hola: < nombre_entrada
redirige la entrada estándar
> nombre_salida
redirige la salida estándar
carga un nue(o indicador de comandos! el sistema responde con el nue(o indicador de comandos, hola+. hola: MUESTRA="ingrese comando:" hola: PS1=$MUESTRA
MUESTRA=/etc/passwd
cut -c1-8 < /etc/passwd
'l operador A hace $ue la salida del comando precedente sea la entrada del comando siguiente, creando un entubamiento o interconeión de
muestra columnas 8 a D.
comandos. ls -l | cut -c56-
cat nota LEAME | pr > salida
corta el listado de archi(os desde donde empie"a el nombre al final. sort < /etc/passwd | cut -f1 -d: | more
hace $ue la concatenacion de los archi(os not a y %'01' sea ser(ida al comando pr, cuya salida está redirigida a un archi(o. cat - LEAME < nota | pr > salida
ordena las l)neas, corta el primer campo y presenta los nombres de usuarios habilitados en el sistema. env | cut -f1 -d= | sort
tiene el mismo efecto. Notar la posicion de redireccion .
muestra nombres de (ariables de ambiente ordenadas! el separador es E. %os operadores y - redirigen, A conecta comandos.
Valores de retorno de los comandos. %os comandos de(uel(en un código de retorno F si el comando termina
Filtros.
correctamente, o un n3mero entre 8 y 699 seg3n la ra"ón de falla. 'l código
1uchos comandos están pensados para ser interconectados, pasando
de retorno del 3ltimo comando $ ueda en una (ariable llamada BB, $ue se
simplemente la entrada hacia la salida, por lo $ue se les llama habitualmente
interroga como :.
filtros.
cat noexiste
echo 'hola chicos' | tr l p tr traduce
ERROR=$?
caracteres y produce Bhopa chicosB.
echo $? echo $ERROR
echo 'hola chicos' | tr lo pa
produce Bhapa chicasB.
guarda el código de error! la asignación termina bien, por lo $ue en : $ueda F, pero en ERROR $uedó el n3mero de error de la operación fallida. : es una
Campos y delimitadores. Un campo es una cadena de caracteres separada por un caracter delimitador.
B(ariable de shellB mantenida internamente por el propio int2rprete. Htras (ariables de shell son+
'l archi(o CetcCpass@d tiene en cada l)nea una serie de campos separados por dos puntos 4+5 . more /etc/passwd
#
número de argumentos en el comando para la shell actual
$
número de proceso para el shell actual
muestra el contenido de CetcCpass@d. cut -f1 -d: < /etc/passwd
'stas (ariables se interrogan como $# y $$.
cut -f1,3,5 -d: < /etc/passwd
muestra los campos pedidos usando el delimitador + 4dos puntos5.
El operador grave.
'l acento gra(e 4`5 asigna a una (ariable de ambiente la salida estándar de un
el comando exit o con *trl/-.
comando. 'l largo de la (ariable es limitado, pero usualmente - 986F en S?J.
Puede crearse un archi(o de comandos haciendo
MUESTRA=`echo $LOGNAME` cat > datos.usuario echo $MUESTRA
y escribiendo las siguientes l)neas. Pueden omitirse los comentarios 4de K en escribe el nombre de login del usuario. wc /etc/passw
cuenta l)neas, palabras y caracteres.
'l comando wc 4@ord count5 acepta opciones l para l)neas, @ para palabras y c para caracteres.
adelante5 echo Salida del comando datos.usuario echo Fecha: `date `
# fecha y hora
echo Usuario: $LOGNAME
# nombre de login del usuario
ps
# procesos corriendo del usuario
echo Shell actual: $$
# número de proceso para el shell actual
TOTALPALABRAS=`cat * | wc -w`
finali"ar con *trl/-. %os K indican comentario.
echo $TOTALPALABRAS
Para con(ertir el archi(o en e&ecutable para e l usuario, hacer
cuenta las palabras en todos los archi(os del directorio. >ambi2n
chmod u+x datos.usuario
echo `cat * | wc -w`
erificar con ls
echo Total de palabras en el directorio: `cat * | wc -w`
e&ecutarse con
-l.
%os comandos ingresados en el archi(o pueden
sh datos.usuario
'l acento gra(e permite e&ecutar un comando dentro de otro, encerrando el
'ste comando in(oca una nue(a instancia de s hell $ue no es la del ingreso al
comando anidado entre acentos gra(es.
sistema.
Secuencias de comandos. 'l shell es tambi2n un lengua&e de programación. Pueden escribirse (arios comandos en una misma l)nea separándolos con ! 4punto y coma5. date ; echo Hola ; echo $LOGNAME MUESTRA=`date ; echo Hola ; echo $LOGNAME`;echo $MUESTRA
Redirección del shell.
0gregar una l)nea más haciendo cat datos.usuario - >> masdatos.usuario
y escribiendo cat noexiste
# intenta mostrar un archivo inexistente
Linali"ar con *trl/-.
'l shell $ue atiende los comandos del usuario es el login shell! arranca cuando el usuario ingresa al sistema y termina cuando sale. 'scribir sh como comando in(oca una segunda instancia del shell, $ue pue de terminarse con
echo "Archivo de errores del usuario" > errores.usuario
coloca una l)nea descripti(a en el archi(o errores. usuario.
cat errores.usuario
}
(erifica su contenido. *ompilar el contenido de este archi(o con el comando cc hola.c -o hola
sh salida.usuario 2>>errores.usuario
lee los comandos del archi(o masdatos.usuario en la entrada estándar,
'sto crea el archi(o de salida hola, e&ecutable en UNIX mediante el comando
redirige la salida estándar al archi(o salida.usuario y re dirige la salida del error estándar al archi(o errores.usuario. cat salida.usuario cat errores.usuario
./hola
Imprime, como es de suponer, la frase #Oola mundo#. Un e&emplo más interesante, con uso de llamadas a la biblioteca del sistema, es el e&emplo siguiente, una (ersión muy m)nima del comando cat, $ue llamaremoscati.
Fin. Morrar con el comando rm los archi(os auiliares! conser(ar para referencia los archi(os nota, LEAME, datos.usuario , masdatos.usuario y e(entualmente
*ontenido del archi(o cati.c+
otros $ue le interesen. Preguntas y Ejercicios. Ficha Referencia: Introducción al Shell
/* cati: cat versión mínima */ # define LARGO 1024
UNIX y 'l sistema operati(o UNIX suele (enir acompaado de un compilador para
lengua&e *. 'scribiendo programas en lengua&e * es posible crear comandos
/* define valor de variable LARGO */
main() { char bufer[LARGO]; int n;
/* declara un arreglo de caracteres */ /* para contar caracteres leídos */
indistinguibles de los propios de UNIX. *omo e&emplo, puede crearse el siguiente archi(o, usando un editor de teto sencillo como el ae, o el
/* llamada al sistema para leer caracteres desde la entrada estándar (0), hacia el arreglo bufer, en cantidad igual al
comando cat si se tiene f2 en la propia digitación.
tamaño del arreglo bufer */ n = read(0, bufer, sizeof bufer);
*ontenido del archi(o hola.c+
/* primera lectura */
/* repite mientras haya caracteres leídos, es decir, n>0 */ while (n > 0) { /* llamada al sistema para escribir caracteres en salida
/* hola.c: programa de saludo */
estándar (1), en cantidad n, extrayendo desde arreglo bufer */ write(1, bufer, n);
#include main()
n = read(0, bufer, sizeof bufer);
{
} printf("Hola, mundo\n");
/* siguientes lecturas */
Para el nombre de archi(o se puede usar prácticamente cual$uier caracter, incluso caracteres no (isibles. %os caracteres $
; \ & ! * | causan
tiene el mismo efecto $ue cd.
confusión
y no con(iene usarlos. Se aconse&a usar solamente letras, n3meros, punto,
Nombres de directorios.
guión y subraya. UNIX diferencia may3sculas y min3sculas+ e l
Un directorio puede contener otros directorios as) como archi(os ordinarios,
archi(o NOTA.TXT es distinto del archi(o nota.txt y tambi2n de Nota.txt. No
lo $ue genera una &erar$u)a o árbol de directorios. 'l directorio superior o
se distingue entre nombre de archi(o y etensión+ nota.nueva.txt es un
directorio ra)" se denomina C.
nombre de archi(o (álido, yLCK..modem tambi2n. cd /
Un archi(o $ue comien"a por un punto no es (isible+ touch .noseve
pwd
el directorio actual es el directorio ra)".
ls cd ls -a
(uel(e al directorio propio del usuario. ls
no lo muestra, pero s) ls
-a.
rm .noseve
lo borra como a cual$uier archi(o. Directorio propio. Directorio actual.
'l caracter C se usa tambi2n para separar los componentes de un nombre de archi(o completo+
/export/home/usuario1/nota.
%a porción /export/home/usuario es la ruta, nota es el nombre del archi(o. Si
0l ingresar al sistema cada usuario entra en su directorio propio, un
se omite la ruta, se asume $ue el archi(o se encuentra en el directorio actual.
directorio pri(ado $ue no es tocado por el sistema ni por los otros usuarios.
Un nombre tal como
'l directorio en el cual se encuentra posicionado el usuario en un momento dado se denomina su directorio actual.
textos/libro/capitulo.1
indica $ue su ruta comien"a a partir del directorio
actual. Ser)a lo mismo escribir ./textos/libro/capitulo.1 ya $ue el punto
cd /usr/bin
designa el directorio actual. /os puntos seguidos designan el directorio de
pwd
ni(el superior al actual. Si el dire ctorio actual es /home/usuario1
cambia al directorio CusrCbin! el directorio actual e s CusrCbin. cd
ls ../usuario2
muestra el contenido de los archi(os en /home/usuario2
pwd
de(uel(e al usuario a su directorio propio, $ue es ahora el directorio actual. echo $HOME
nuestra el nombre del directorio propio. OH1' es una (ariable de ambiente $ue contiene el nombre del directorio propio del usuario. cd $HOME
'l caracter C separa directorios inclu)dos como parte de un nombre de archi(o o directorio. ls dir1
es un direccionamiento relati(o! ls /home/esteban/dir1
/floppy
para montar una unidad de disquete
/home
objetos relacionados con los usuarios
/lib
bibliotecas de desarrollo y material de apoyo
/lost+found
archivos perdidos
/mnt
punto de montaje de dispositivos externos
/proc
archivos de control de procesos
/root
directorio propio para el supervisor (root)
/sbin
archivos ejecutables de administración
/tmp
archivos temporales
/usr
ejecutables, documentación, referencia
Preguntas y Ejercicios. Ficha Referencia: Siste!a de "rchi#os
Manejo de Archivos 'n los e&emplos siguientes se asume al usuario ubicado en su directorio personal, el cual contiene los archi(os nota y LEAME. 'l resultado de cada e&emplo debe comprobarse mediante comandos tales como pwd,ls, cat o more. Copia de archivos. cp nota nota.copia
./X11R6
sistema X-Windows
./bin
más ejecutables
copia el archi(o nota en nota.copia. Si el directorio propio del usuario
./doc
documentos de paquetes de software
es /home/usuario1,
./include
encabezados .h de bibliotecas en C
./info
archivos de info, información de UNIX (GNU)
hace lo mismo indicando las rutas. Si el archi(o destino eiste lo sobreescribe
./lib
más bibliotecas en C
y reali"a la copia sin comentario ni ad(ertencia.
./local
ejecutables instalados por el administrador
./man
subdirectorios de páginas del manual
./sbin
más archivos ejecutables de administración
./share
compartidos
./src
(source) código fuente del kernel
/var
cp ./nota /home/usuario1/nota.copia
mkdir dir1 cp nota dir1
si el destino es un directorio, el archi(o se copia en ese directorio.
archivos de log, auxiliares, archivos que crecen cp nota LEAME dir1
./backup
respaldo de algunos archivos del sistema
./catman
páginas man ya formateadas
./lib
información propia de programas
./lock
control de bloqueos
./log
archivos de registro de mensajes (log) del sistema
touch dir2/arch2 dir2/arch3
./spool
colas de impresión, intermedios de correo y
ls dir2
otros
./run
pueden copiarse (arios archi(os hacia un directorio.
mkdir dir2
información de procesos (PIDs) cp dir2/* .
copia todos los archi(os en dir2 hacia el directorio actual.
mv dir1 dirnuevo
Para copiar un directorio es preciso usar la opción r, de #recursi(o#+
cambia de nombre archi(os o directorios.
cp -r dir1 dir3 ls -l dir3
copia el directorio dir1 y todo el contenido en el dir3.
rm -r dirnuevo
elimina dirnuevo y todos sus archi(os. Enlaces "hard".
rmdir dir3
fracasa por$ue dir3 no está (ac)o. rm -r dir3
Un enlace #hard# 4hard lin5 es una nue(a referencia a un mismo archi(o! consiste en una nue(a entrada de directorio $ue apunta a un ar chi(o ya eistente y apuntado desde otra entrada de directorio. 'l contenido se encuentra en un solo lado, pero el archi(o puede ser accedido desde (arios
con la opción -r, #recursi(o#, se puede borrar completamente un directorio y
lugares, e(entualmente con diferentes nombres.
todo su contenido, sean estos archi(os o subdirectorios. echo 'Hola todos de nuevo!' > adios ln adios adios.ln0 rm -r dir1/* dir2
borra todos los archi(os ba&o dir1 y dir2! borra tambi2n el directorio dir2 pero no el dir1.
ln crea un segundo nombre referido al mismo archi(o! no se hace copia, crea un enlace 4lin5. erificar $ue ls -l adios*
muestra un conteo de 6 en la columna de enlaces. 0l crear el enlace con el rm arch? nota.copia
borra del directorio actual los archi(os arch1, arch2, .., y nota.copia.
comando ln, obser(ar $ue el archi(o eistente (a en primer lugar, luego uno o más nombres de enlaces a crear.
Mover, cambiar de nombre. ln adios adios.ln1 echo "Hola todos" > hola cat hola
ln adios adios.ln2 ls -l adios*
mv hola saludo
muestra el conteo de enlaces hard en estos archi(os. cat saludo mv cambia
el nombre del archi(o hola por el de saludo. mkdir dir2 ln adios dir2/adios
mv saludo dir1/saludo.1
mue(e hacia otro directorio cambiando el nombre.
hace aparecer en dir2 un enlace llamado adios hacia el archi(o adios del directorio actual. Un enlace hard puede hacer aparecer un mismo archi(o en
más de un directorio, con igual o distinto nombre! el contenido está en un solo lado, no está repetido.
muestra el contenido de dir2, enla"ado desde dir2ls. pwd
indica el directorio con nombre del enlace, pero rm adios* /bin/pwd ls -l dir2/adios
muestra el directorio (erdadero, no el enlace simbólico! pwd indica la ruta por *uando se borra un archi(o con (arios enlaces, sólo se borra el enlace. 'l
la $ue se llegó al directorio, /bin/pwd indica la ruta de acceso al (erdadero
archi(o es realmente borrado sólo cuando desaparece el 3ltimo enlace.
directorio. *on(iene usar /bin/pwd para e(itar ser engaado por enlaces
ln dir2 dir2ln
da error! no se puede crear un enlace hard para un directorio. Enlaces simbólicos. Un enlace simbólico 4symbolic lin5 es un archi(o $ue apunta a otro archi(o o directorio. 'l archi(o de enlace simbólico contiene solamente la ruta del otro archi(o o directorio. ln -s nota nota.ls0
crea nota.ls0 como enlace simbólico.
simbólicos a directorios. 'l comando pwd es interno del shell, /bin/pwd es un programa aparte.
cd .. mv dir2 DIR2
cambia el nombre del directorio real! e l enlace simbólico sigue apuntando a dir2, por lo $ue cd dir2ls
da error, ya $ue no eiste el ob&eto real. mv DIR2 dir2
ln -s dir2 dir2ls
repone el nombre original al $ue apunta el enlace. crea dir2ls como enlace simbólico hacia un directorio. rmdir dir2ls ls -l
da error por$ue no es un directorio sino un enlace. muestra la letra l en el tipo de archi(o para indicar $ue es un enlace simbólico. ls dir2
rm dir2ls
borra el enlace. Un enlace simbólico se borr a con rm, y no con rmdir, puesto $ue el enlace simbólico es un archi(o y no un directorio, a3n cuando s ea un
ls dir2ls
muestran el mismo contenido de archi(os. ls -l dir2ls
muestra $ue es un enlace simbólico e indica hacia donde apunta.
enlace simbólico hacia un directorio. ls dir2
cuando se borra un enlace simbólico, sólo se borra un archi(o puntero, y no el ob&eto real. Opciones del comando ls.
cd dir2ls ls -1 ls -l
muestra un item por l)nea. *uando ls se usa en interconeiones, la salida
Cambio de dueño y grupo.
de ls presenta un item por l)nea por defecto. ls -C
chown usuario1 nota
cambia el dueo del archi(o nota ad&udicándoselo a usuario1.
fuer"a el despliegue encolumnado. ls -a
chown usuario1 arch1 arch2
cambia el dueo de la lista de archi(os indicada. No puede re(ertirse, ya $ue
muestra todos los archi(os, incluyendo los $ue comien"an con punto,
el usuario actual de&ó de ser dueo de esos archi(os. Si el archi(o tiene
normalmente no mostrados. 'l directorio corriente . y el directorio
permiso de lectura, es posible copiarlo para disponer de una copia propia. 'l
padre .. son entidades reales.
cambio de dueo no está permitido a usuarios comunes, sino reser(ado al super(isor para e(itar $ue a un usuario se le ad&udi$uen archi(os sin su
ls -F /bin
consentimiento.
ls -F chgrp tecnicos nota
agrega sufi&o $ue indica el tipo de archi(o+ C directorio, V e&ecutable, W enlace simbólico.
cambia de grupo el archi(o notas, ad&udicándoselo al grupo tecnicos. 'l dueo debe pertenecer al grupo tecnicos. chgrp tecnicos arch1 arch2
ls -R
muestra recursi(amente todos los archi(os, subdirectorios y archi(os dentro de subdirectorios. Para (er un listado más largo, ls -CR /etc | more
cambia el grupo de la lista de archi(os. Modos de permisos. %os permisos de archi(os y d irectorios se cambian con el comando chmod. Pueden epresarse de dos maneras+ simbólica y absoluta.
ln -s dir2 dir2ls
'n la forma simbólica, se usa la siguiente sintais+ ln nota nota.ln0 ls -l
listado largo, muestra atributos de los archi(os+ tipo de archi(o 4primer caracter5, permisos 4 caracteres5, enlaces hard 4en archi(os5, dueo, grupo,
[ugoa...][[+-=][rwxstugo...]
tamao en bytes, fecha y hora, nombre. -rw-r--r-- 1 esteban other 138 Apr 5 19:34 LEAME drwxr-xr-x 2 esteban other 138 Apr 5 19:34 dir2
+
agrega permiso a los existentes
lrw-r--r-- 1 esteban other 138 Apr 5 19:34 dir2ls ->./dir2
-
quita permiso de los existentes
-rw-rw-rw- 1 esteban other 138 Apr 5 19:34 nota
=
únicos permisos asignados al archivo
r
lectura
'l s)mbolo -> indica #apunta hacia# para enlaces simbólicos.
w
escritura
x
ejecución, o acceso si es directorio
s
usa el id del dueño o grupo del archivo al ejecutar
t
fijar "sticky bit" a un directorio: sólo dueños pueden borrar
u
usuario (dueño)
g
grupo
o
otros
a
todos (dueño, grupo y otros)
'&emplos de permisos en notación absoluta+ 0777
0755
0764
0640
0710
chmod 0764 arch1
cambia los permisos como en el e&emplo anterior. Listado de permisos de los directorios. ls -l
muestra los permisos y otros atributos. '&emplos de permisos en notación simbólica+ u+r
g+w-r
ug+r
ugo+w-rx
u+rwx,g+r-wx,o-rwx
Para obtener información del directorio dir1 ubicado en el directorio actual, ls -l
chmod u+rwx,g+rw-x,o+r-wx arch1
lista todos los archi(os, entre los $ue aparece dir1!
chmod u=rwx,g=rw,o=r arch1 ls -l dir1
cambian los permisos de los archi(os indicados.
lista el contenido del directorio dir1. ls -ld dir1
'n modo absoluto se usa un código de J d)gitos octales F..Y, en la forma
trata la entrada dir1 como archi(o, sin listar su contenido, y dando sus
Nnnn.
atributos como directorio.
N,
primer d)gito+
ls -ld .
muestra atributos del directorio actual. 4 fijar ID del dueño al ejecutar 2 fijar ID del grupo al ejecutar 1 fijar "sticky bit" a un directorio nnn,
7 d)gitos+ permisos del usuario, grupo y otros, con el código
4 lectura
Cambio de permisos. chmod u-w nota
$uita permisos de escritura al dueo. chmod u+w nota
concede permisos de escritura al dueo. 2 escritura 1 ejecución, o acceso si es directorio
chmod u-w+x nota chmod u-wx+r nota
cambian (arios permisos del dueo al mismo tiempo.
chmod u+w nota
fi&a #sticy bit#+ a pesar de tener el directorio permisos totales para todos,
chmod g+w nota
sólo pueden borrarse los archi(os propios del usuario, no los a&enos.
chmod o+w nota
concede permiso de escritura solo al usuario, al grupo o a otros.
chmod 1777 dirtodos
reali"a lo mismo.
chmod u+rw-x,g+r-wx,o+r-wx nota
fi&a todos los permisos en una sola operación. %os permisos $ue no se mencionen $uedan como est2n. chmod 0644 nota
reali"a lo mismo en notación absoluta.
%os permisos s 4setuid, setgid5 hacen $ue un archi(o e&ecutable e&ecute con permisos del usuario dueo o del grupo dueo del archi(o, cual$uiera sea el usuario y grupo de $uien lo in(oca. 'l permiso setgid sobre un directorio hace $ue los archi(os y subdirectorios creados en 2l pertene"can al grupo del directorio, y no al grupo primario del usuario, como es normal! esto es 3til para los grupos de traba&o. 'l permiso t 4sticy bit5 se aplica a directorios con
'l comando chmod admite las opciones -v verboso, describe los permisos cambiados -f no da error sobre permisos que no pueden cambiarse
permisos totales! limita la operación de borrado al dueo del archi(o o subdirectorio. %os modos S y >, $ue pueden aparecer en ls
-l,
indican
modos sin sentido+ setuid o setgid sobre archi(os no e&ecutables, sticy bit sobre directorio sin permisos para todos.
-R recursivo, cambia permisos de directorios y sus archivos
basename, dirname chmod -v u+rwx,g+rw-x,o+r-wx arch1
echo $EDITOR
chmod -v 764 arch1
muestra la (ariable de ambiente $ue contiene el nombre del editor por
chmod -v 444 arch1
defecto. Si no aparece nada, iniciali"arla+
chmod u=rw,go=r arch1
fi&a permisos en r@rr. chmod u=rwx,u+s arch1 e &ecutará
arch8 con permiso del dueo de arch8.
chmod -vR a+r dir1
which vi
para obtener la ()a hacia el editor vi. EDITOR=/usr/bin/vi echo $EDITOR
muestra el nombre del editor a usar por defecto.
da permiso de lectura a todos los directorios ba&o dir8, anunciando en forma (erbosa lo hecho.
MIEDITOR=`basename $EDITOR` echo "Mi editor es $MIEDITOR"
chmod ugo+rwx dirtodos
muestra el nombre del archi(o sin ruta! basename $uita la ruta a un nombre
chmod a+t dirtodos
de archi(o calificado con ruta. DIREDITOR=`dirname $EDITOR`
dirname separa
la ruta del nombre completo.
echo "Mi editor es $MIEDITOR en el directorio $DIREDITOR"
muestra el uso en comandos de (ariables de ambiente. echo "Mi editor es "`basename $EDITOR`" en "`dirname $EDITOR`
muestra el uso del operador gra(e para e&ecutar comandos dentro de otros
cat - < `tty`
produce el mismo efecto. %uego probar $ cat - > `tty`
puede eplicarse el comportamiento El comando mesg.
comandos. ls -l `tty`
Archivos de dispositivos.
Si otros usuarios pueden leer y escribir en este dispositi(o, tambi2n pueden
'l sistema de archi(os de UNIX pro(ee una interface estándar entre los
(er lo $ue se está haciendo o a3n escribir directamente en el terminal
dispositi(os de hard@are y e l sistema operati(o $ue act3a igual $ue un
redirigiendo su salida. 'sto se usa en los comandos wall 4@rite all, escribir a
archi(o com3n+ todas las operaciones de entrada y salida se hacen
todos5 y write 4escribir mensa&es entre usuarios5.
escribiendo y leyendo sobre un archi(o. No se trata de un archi(o com3n en disco! act3a como una ruta hacia un canal de entradaCsalida del hard@are. 0s) como se redirige la salida de un comando hacia un archi(o, puede redirigirse tambi2n hacia un disco, una cinta o un módem con sólo mencionar el nombre del dispositi(o correspondiente.
mesg
muestra si está habilitada o no la recepción de mensa&es. mesg y
cambia permisos de grupo y otros en el dispositi(o, aceptando mensa&es. tty mesg n
de(uel(e el nombre del dispositi(o asociado al ter minal, por e&emplo /dev/tty1. >omando ese mismo nombre ls -l /dev/tty1
obtenemos un listado de atributos del #archi(o# controlador de este
recha"a mensa&es. erificar con ls -l `tty`
$ue muestra los permisos $ue regulan la terminal del usuario.
dispositi(o, algo as) como crw-rw-rw- 1 usuario1 otros .... /dev/tty1
ls -l /dev/tty?
muestra los permisos de las terminales principales! 'l primer caracter indica el tipo de dispositi(o+ c si es orientado a caracteres, b si es orientado a blo$ues. >erminales, impresoras y modems son orientados a caracter, discos y cintas son orientados a blo$ue.
ls -l /dev/tty??
muestra una cantidad de tipos de terminal disponibles. Otros dispositivos.
cat - < /dev/tty1
para escuchar en la propia sesión de terminal! escribir (arias l)neas y finali"ar con *trl/.
cat /etc/passwd cat /etc/passwd > /dev/null
10j
edita el archi(o arch8 en la primera ocurrencia de la palabra #Oabia#. Cambio de modo.
en modo comando a(an"a 8F l)neas! 5Y
comando a texto: teclas de inserción i I a A o O, o
copia 9 l)neas y las retiene para luego pegar. Ejemplos de manejo.
tecla de sobreescritura R.
texto a comando:
%os siguientes e&emplos de mane&o asumen $ue el editor se encuentra en modo comando.
tecla ESC. flechas
mueven el cursor (si el terminal lo permite)
comando a última línea: teclas : / ? h j k l
mueven el cursor (igual que las flechas)
itextoESC
inserta la palabra "texto" y vuelve a comando
tecla ENTER (al finalizar el comando), o
x
borra el caracter sobre el cursor
tecla ESC (interrumpe el comando).
dw
borra una palabra
dd
borra una línea
última línea a comando:
3dd
borra las 3 líneas siguientes
u
deshace último cambio
*onfundir un modo con otro la de mayor dificultades para el mane&o de (i.
ZZ
graba cambios y sale de vi
Puede acti(arse un indicador de modo e scribiendo
:q!ENTER
sale de vi sin grabar cambios
:set showmode
'sto hace aparecer una leyenda $ue indica si se está en modo comando o
/expresión ENTER
busca la expresión indicada
3Y
copia 3 líneas para luego pegar
:6r arch3
inserta debajo de la líne 6 el archivo arch3
inserción. Movimiento del cursor: Modo Comando.
flechas
mover en distintas direcciones
min3sculas. Confundir un comando en minúscula digitando uno en mayúscula
h o BS
una posición hacia la izquierda
suele tener co nsecuencias catastróficas. Se aconse&a evitar sistemáticamente
l o SP
una posición hacia la derecha
el uso de la traba de mayúsculas! mantener el teclado en min3sculas.
k o -
una línea hacia arriba
'l editor vi, al igual $ue todo UNIX, diferencia may3sculas y
j o +
una línea hacia abajo
$
fin de línea
1uchos comandos aceptan un n3mero multiplicador antes del comando. %a
0
principio de línea
acción es id2ntica a in(ocar el comando tantas (e ces como indica el
1G
comienzo del archivo
multiplicador. '&emplos+
G
fin del archivo
Números multiplicadores.
[:cntrl:]
de control
[:digit:]
dígitos
[:graph:]
gráficos
[:lower:]
minúsculas
[:print:]
imprimibles
[:punct:]
de puntuación
[:space:]
espacios
[:upper:] [:xdigit:]
mayúsculas dígitos hexadecimales
%as epresiones regulares se aprenden me&or con los e&emplos y el uso.
Exp.Reg.
aparea con
a.b
ab aab abb aSb aKb ...
a..b
ab aaab abbb aJ:b ...
[abc]
a b c 4cadenas de un caracter5
[aA]
a 0 4cadenas de un caracter5
[aA][bB]
ab 0b aM 0M 4cadenas de dos caracteres5
[0123456789]
F867J9ZYD
Construcción de Expresiones Regulares.
[0-9]
F867J9ZYD
Una 'presión ?egular se contruye con uno o más operadores $ue indican,
[A-Za-z]
0 M * ... = a b c ... "
[0-9][0-9][0-9]
FFF FF8 .. FF F8F .. F8 8FF ..
[0-9]*
cadena[(ac)a F 8 FF 867 J9Z ...
[0-9][0-9]*
F 8 FF 867 J9Z ...
^.*$
cual$uier l)nea completa
Por ejemplo, [[:alnum:]] significa [0-9A-Za-z], pero esta última expresión depende de la secuencia de codificación ASCII, en cambio la primera es portable, no pierde su significado bajo distintas codificaciones. En los nombres de categorías, los paréntesis rectos forman parte del nombre de la categoría, no pueden ser omitidos.
cada uno, el caracter a buscar. %os operadores más comunes y aceptados son los siguientes+
Operador Significado c
un caracter no especial concuerda consigo mismo
\c
elimina significado especial de un caracter c! el ; escapa el significado especial
^
indica ubicado al comien"o de la l)nea 4cadena nula al principio de l)nea5
$
indica ubicado al final de la l)nea 4cadena nula al final de l)nea5
.
4punto5 un caracter indi(idual cual$uiera
[...]
uno cual$uiera de los caracteres ...! acepta inter(alos del tipo a", F, 0= 4lista5
[^...]
un caracter distinto de ... ! acepta inter(alos del tipo a", F, 0=
r*
F, 8 o más ocurrencias de la '? r 4repetición5
r1r2
la '? r1 seguida de la '? r2 4concatenación5
'n el editor vi, las epresiones regulares permiten reali"ar b3s$uedas tales como+ /^Desde
busca l)neas $ue empiecen con la cadena Desde /final$
busca l)neas $ue termine con la cadena final /\$25
busca l)neas $ue contengan $25! ; escapa el : Ejemplos de Expresiones Regulares Básicas.
nombres de archi(o del directorio actual.
'l patrón V se coloca al final! aparea cual$uier cadena, y permite e&ecutar comandosN cuando ninguna de las opciones anteriores fue satisfecha.
*rear y probar el siguiente script.
*rear el siguiente script+
# listapal.sh: lista de palabras
# diasemana.sh: nombres de los días de la semana
#
#
muestra palabras de una lista interna
invocar con número del 0 al 6; 0 es domingo
#
case $1 in
LISTA="silla mesa banco cuadro armario" for I in $LISTA
0) 1)
echo Domingo;; echo Lunes;;
do
2)
echo Martes;;
3)
echo Miércoles;;
done
4)
echo Jueves;;
# fin listapal.sh
5)
echo Viernes;;
6)
echo Sábado;;
echo $I
'n el siguiente script, el comando expr calcula epresiones aritm2ticas! notar su sintais.
In(ocarlo como
# contarch.sh #
*) echo Debe indicar un número de 0 a 6;; esac
muestra nombres y cuenta archivos en el directorio actual
diasemana.sh N
#
donde N es cual$uier n3mero de F a Z, otro n3mero, o una cadena
CUENTA=0
cual$uiera. erificar el comportamiento.
for ARCH in * do echo $ARCH CUENTA=`expr $CUENTA + 1`
*rear el archi(o estacion.sh con estas l)neas+ # agrega 1 a CUENTA
done echo Hay $CUENTA archivos en el directorio `pwd` # fin contarch.sh
# estacion.sh # indica la estación del año aproximada según el mes #
case
case $1 in diciembre|enero|febrero) echo Verano;; marzo|abril|mayo)
'ste comando implementa alternati(as o #casos#! elige entre m3ltiples
echo Otoño;;
secuencias de comandos la secuencia a e&ecutar. %a elección se reali"a
junio|julio|agosto)
encontrando el primer patrón con el $ue aparea una cadena de caracteres.
setiembre|octubre |noviembre)
Su sintais es
echo Invierno;; echo Primavera;; *) echo estacion.sh: debe invocarse como
case $CADENA in patrón1 ) comandos1 ;;
patrón2)
echo estacion.sh mes echo con el nombre del mes en minúscula;; esac # fin estacion.sh
comandos2 ;;
... *) ;; comandosN esac
'l (alor :8 es el parámetro recibido en la l)nea de comando. %a o pción V5 aparea con cual$uier cadena, por lo $ue act3a como #en otro caso#! es 3til para dar instrucciones sobre el uso del comando. 'n las opciones, A act3a como H?! pueden usarse tambi2n comodines V y . In(ocar el script+
# si ya existe emite un mensaje
echo "
if [ -f $1 ]
echo -n "¿Es correcto?(sN):"; read RESP
then
if [ "$RESP" = "s" -o $RESP = "S" ]
echo El archivo $1 ya existe
Cédula de Identidad: $CEDULA"
then
else
echo "Fin de ingreso."
touch $1 echo Fue creado el archivo $1 fi
else echo "Debe ingresar sus datos nuevamente." fi
echo # fin nvoarch.sh
Para comprobar su acción, bash nvoarch.sh nuevo1 ls -l nuevo1
Parámetros. 'l siguiente programa muestra los parámetros $ue recibe al ser in(ocado+
crea el archi(o! ls comprueba $ue eiste! bash nvoarch.sh nuevo1
da mensa&e indicando $ue el archi(o ya e iste. Htros operadores aceptados por test son -a 40N/5 y -o 4H?5.
# ecopars.sh # muestra los parámetros recibidos echo Cantidad de parámetros: $# for VAR in $* do echo $VAR
# rwsi.sh
done
# indica si un archivo tiene permiso de lectura y escritura
# fin ecopars.sh
ARCH=$1 if [ -r $ARCH -a -w $ARCH ] then echo El archivo $ARCH se puede leer y escribir
ecopars.sh Enero Febrero Marzo
muestra la cantidad y los parámetros recibidos. %a (ariable :V contiene la lista de parámetros, y :K la cantidad.
else echo Al archivo $ARCH le falta algún permiso fi ls -l $ARCH
/entro del script, los parámetros recibidos pueden referenciarse con :8, :6,
# fin rwsi.sh
:7, ..., :, siendo :F el nombre del propio programa. /ebido a $ue se los reconoce por su ubicación, se llaman parámetros posicionales. 'l siguiente programa se in(oca con tres parámetros y muestra sus (alores+
read 'ste comando tiene como propósito solicitar información al usuario. Su
# mostrar3.sh
e&ecución captura las digitaciones del usuario, hasta obtener un caracter
# se invoca con 3 parámetros y los muestra
nue(a l)nea 4techa 'nter5. 'l e&emplo siguiente obtiene datos del usuario, los
echo parámetros recibidos: echo $1; echo $2; echo $3
repite en pantalla, solicita confirmación y emite un me nsa&e en consecuencia.
echo nombre del programa: $0
echo # fin mostrar3.sh
# yo.sh: captura datos del usuario # clear echo "Datos del usuario." echo -n "Nombre y apellido: "; read NOMBRE echo -n "Cédula de identidad: "; read CEDULA
*ómo se podr)a (erificar la in(ocación con 7 parámetros , y emitir un mensa&e de error en caso contrario 4cuando el usuario ingresa menos de 7 parámetros5
echo echo "Ha ingresado los siguientes datos:" echo "
Nombre y apellido: $NOMBRE"
Depuración.
Se llama depuración 4#debug#5 de un programa al proceso de (erificar su funcionamiento en todos los casos posibles y corregir sus errores 4#bugs#, #pulgas#! del ingl2s, literalmente, #chinche#! por etensión, insecto pe$ueo5.
Cuando se está escribiendo un script, puede convenir invocarlo de forma especial para generar información de c omandos ejecutados y errores, para ayudar en la depuración. Las salidas se imprimen en el error estándar, por lo que pueden direccionarse a un archivo sin mezclarse con la salida del comando. bash -x ecopars.sh
imprime cada comando en la salida; bash -v ecopars.sh
invoca el script obteniendo una salida verbosa con información sobre cada comando ejecutado. bash -xv ecopars.sh 2>ecopars.err
reúne las dos fuentes de información y direcciona el error estándar a un archivo. Ejercicios Progra!ación del Shell
b &)traer del archivo
acceso.log las
líneas correspondientes al
usuario jperez del mes de mayo del a-o 1883. 9a fecha figura en el formato "1!:: 1* ?ayo 1883"@ el primer número es la hora. c &)traer del archivo
acceso.log las
6.
líneas que correspondan al
Eeali$ar las tareas indicadas# si es posible@ si no lo es# indicar los motivos.
usuario jperez o al usuario elopez.
7resentar el archivo /etc/passwd ordenado según los siguientes criteriosG a ordenado por nombre de login de usuario.
3.
b ordenado por número de usuario.
&n el archivo NoMBreS.tXT un mismo nombre puede estar en mayúsculas y minúsculas# me$cladas de diferentes maneras. 5enerar una lista de nombres en minúscula con los 3 nombres que aparecen menos veces# sin importar como estn escritos.
c ordenado por número de grupo y dentro de cada grupo por número de usuario. d ordenado por número de grupo y dentro de cada grupo por campo de comentario. 7.
4.
Cn archivo palabras.txt contiene palabras distintas una por línea. &)trar todas las palabras que empiecen y terminen con vocal# en minúscula o mayúscula.
&ncontrar las * palabras ms frecuentes en el te)to
historia1.txt# e indicar
la cantidad de veces que fue usada cada una. DndicaciónG transformar primero todas las palabras a minúscula.
Programación del Shell 5.
Csar el archivo /etc/passwd o el comando ypcat
passwd si el sistema usa JD+#
para resolver las siguientes preguntas. &n estos archivos pueden haber
Estructura de archivos.
&structura del archivo /etc/passdG
comentarios# líneas empe$adas por H# que deben eliminarse de la búsqueda. #nombre:contraseña:UID:GID:comentarios:dir_propio:shell
Eecordar que el caracter H es interpretado por el shell.
jperez:Xdio0IKLLP:1130:103:Juan Pérez:/home/jperez:/bin/bash
&structura del archivo /etc/groupG
a eliminar los comentarios. b e)traer una línea que muestre directorio propio y shell del usuario c listar los usuarios que usan el shell /bin/bash.
elopez. #grupo:GID:lista_usuarios docentes:103:victor,german,fernando
d listar los usuarios que no usan el shell /bin/bash.
&structura del archivo /etc/hostsG
e contar la cantidad de usuarios. #número_IP nombre_máquina alias
#!/bin/bash # ligass: lista archivos que son enlace simbólico o tienen enlaces hard
12. Cn script de respaldo produce# entre otros mensa(es# líneas del tipo "Total bytes written 18804023"
# simbólicos: en ls -l se busca que empiece con l
5uarda su salida en el archivo
if [ ! -d $1 ]
script total.cinta que sume los bytes grabados e indique el total en bytes#
then echo Error: ligas: $1 no es un directorio exit
respaldo.error.
&scribir un
?b y 5b. Frear un archivo respaldo.error de prueba# con un contenido tal como
fi echo Archivos que son enlace simbólico:
Total bytes written 1800 Total bytes written 1000
ls -l | grep "^l" | cut -56 echo
#
# hard: se busca 3 espacios y distinto de 1 como contador de enlaces echo Archivos que tienen enlace hard:
# total.cinta: cantidad de bytes grabados en cinta #
ls -l | grep -v "^d" | cut -c11 - | grep -v "^ 1" | cut -c46 -
TOTAL=0 LISTA=`cat respaldo.error | tr -dc "[0-9] "`
*11. &scribir
un programa
saludo que#
según la hora# escriba el saludo
correspondiente al nombre de pila del usuario. &n el archivo /etc/passd los
for NUM in $LISTA do TOTAL=`expr $TOTAL + $NUM`
usuarios deben estar ingresados con nombre y apellido separados por
done
blanco. 9os saludos corresponden a las siguientes horasG Iuenos días# de
TOTALMB=`expr $TOTAL \/ 1000000`
:*G:: hasta 12G*8@ Iuenas tardes# de 1!G:: hasta 18G*8@ Iuenas noches 2:G:: hasta :%G*8. &(emplo de mensa(eG Iuenos días# Muan. A efectos de pruebas# se recibirn la hora y el nombre de login como parmetros# de(ando comentados los comandos donde se e)trae la hora real y se toma el usuario real. #!/bin/bash # saludo.cmd # script en UNIX que saludo al usuario por su nombre NOMBRE=`cat /etc/passwd | grep "^$LOGNAME" | \ cut -d: -f5 | cut -d' ' -f1` # si el usuario no tiene ingresado un nombre, toma "Nadie" NOMBRE=${NOMBRE:-Nadie} HORA=`date | cut -c12-13 | tr -d ' '` if expr "$HORA" \<= 5 > /dev/null then echo 'Buenas noches, '$NOMBRE elif expr "$HORA" \<= 12 > /dev/null then echo 'Buenos dias, '$NOMBRE elif expr "$HORA" \<= 19 > /dev/null then echo 'Buenas tardes, '$NOMBRE elif expr "$HORA" \<= 24 > /dev/null then echo 'Buenas noches, '$NOMBRE fi
echo "Total General de bytes respaldados: "$TOTAL echo "Total General de MB respaldados: "$TOTALMB TOTALGB=`expr $TOTALMB \/ 1000` echo "Total General de GB respaldados: "$TOTALGB
-a -m -n -p -r -s -v
toda la información máquina, tipo de hardware nombre de máquina en la red tipo de procesador edición (release) del sistema operativo nombre del sistema operativo versión del sistema operativo
wc wc [OPCIONES] ARCHIVO ...
cuenta líneas, palabras y caracteres de los archivos indicados o de la entrada estándar. Si son varios los archivos, imprime una línea por cada uno y un total. -c -w -l
sólo caracteres sólo palabras sólo líneas man pwd | wc -l wc /etc/passwd /etc/group
whatis whatis [OPCIONES] NOMBRE ...
muestra una descripción corta de los c omandos similares a nombre. -r interpreta cada nombre como una expresión regular -w interpreta cada nombre como conteniendo caracteres comodines whatis man whatis -w man*
which which PROGRAMA ...
indica la ruta completa de PROGRAMA, si éste está accesible a través de la variable PATH.. who who [OPCIONES] [am i]
Quién está en el sistema. Muestra nombre de login, línea de terminal, hora de ingreso, nombre de máquina remota o display X. am i -H -u
máquina y nombre de login del usuario invocante muestra encabezado de columnas tiempo inactivo; "old" es >24 horas; "." activo reciente
-w -m
si el usuario recibe (+) o no (-) mensajes igual que 'who am i'
whoami whoami
Muestra identificador del usuario efectivo actual. Si se ha usado su para adoptar otro usuario, whoami muestra el nombre asociado con el usuario adoptado.