Está en la página 1de 8

Taller de sistemas operativos

Comandos básicos: cal, who, date, exit, logout, ^D

DIRECTORIOS
pwd ¿Dónde estoy? escribe el camino desde la raíz hasta el directorio actual.

cd dir cambia el directorio actual a dir.


cd cambia el directorio actual al directorio de entrada ($HOME)
cd .. cambia al directorio anterior
mkdir: crea un directorio

FICHEROS
ls ¿Qué hay? muestra los nombres de los objetos accesibles en nuestro entorno. Estos nombres
están ordenados. La mayoría de los objetos serán ficheros, pero también hay otros tipos de
objetos.
ls -l nos muestra más información de esos objetos
-rw-r--r-- 1 a0007 a0007 186 Sep 31 16:33 fichero
-rw-r--r-- 1 a0007 a0007 4795 Sep 31 16:34 indice
-rw-r--r-- 1 a0007 a0007 133440 Sep 31 16:32 nudo
-rw-r--r-- 1 a0007 a0007 3038 Sep 31 16:33 presenta
El primer carácter de cada línea nos indica el tipo de objeto. En este caso es un guion o signo
menos (-), lo que significa que los cuatro objetos son ficheros. Los nueve caracteres siguientes
indican los permisos asociados a los objetos. Su dueño puede leerlos (r) y escribir en ellos (w),
y el resto de los usuarios solo puede leerlos (r). El segundo campo nos indica cuantos nombres
(enlaces) tiene un objeto. Los cuatro ficheros del ejemplo tienen un único nombre. El tercer
campo nos presenta el dueño del objeto. El cuarto campo nos presenta grupo asociado al
objeto. El quinto campo nos presenta el tamaño del objeto medido en caracteres. Los campos
sexto, séptimo y octavo nos indican la fecha y hora de la última modificación del fichero. Si esto
sucedió hace más de seis meses se utiliza el formato: mes, día y año. Por último, en el noveno
campo aparece el nombre del objeto.
ls -a muestra también los ficheros cuyo nombre empieza por punto
ls -a muestra también los ficheros que empiezan por punto + sus características
ls -i o ls -li muestran un número de i-nodo tal que es único para cada fichero (dentro de cada
partición ).

cat muestra el contenido de un fichero

head fich muestra las primeras 10 líneas de un fichero


head -n fich muestra las primeras n líneas de un fichero
tail fich muestra las ultimas 10 líneas de un fichero
tail -n fich muestra las ultimas n líneas de un fichero
tail +n muestras las últimas líneas a partir de la línea n

grep (cadena de caracteres) fich muestra el contenido de ese fichero con cierta cadena de
caracteres. Nota: en caso de que la cadena de caracteres tenga algún espacio de denotara
entre comillas simples (‘ ‘)
El comando pr -t -m se utiliza para formatear y mostrar varios archivos en columnas,
manteniendo la alineación de las columnas entre los archivos.
Guardar una copia de la salida: Puedes utilizar tee para guardar una copia de la salida de un
comando en un archivo. Por ejemplo: ls -l | tee archivo.txt
echo (cadena de caracteres): imprime la cadena
echo *: imprime todos los ficheros de un directorio (cualquier cadena de caracteres)
echo *a*: imprime ficheros con a
echo hola > fich1: escribe hola en fich1
echo adiós > fich1: elimina todo el contenido de fich 1 y escribe adiós
echo hola >> fich1: escribe hola al final del texto
cat fich1
hola
adiós
cat fich2 > fich1: elimina el fich1 y escribe el contenido de fich2

SCRIPT/BASH
bash: interprete de comandos
Ejemplo:
cat pipro
head -2 dias
tail -2 dias
bash pipro
lunes
martes
sábado
domingo
&& AND
|| OR
sleep n: espere programa n segundos
FIN/END: termina acción
ps nos muestra el estado de los procesos asociados al terminal en el que estamos trabajando.
exit salir de bash

VARIABLES EN BASH
Instanciamos variables, ejemplo:
echo $v1 $v2 $v3
v1=hola
v2=adios
v3=hasta la vista (necesario comillas)
v3="hasta la vista”
echo $v1 $v3 $v2: se muestran las variables
export v4="nos vemos" exportamos variables fijas y constantes
$PATH: s una variable especial que especifica las rutas de directorio en las cuales el sistema
operativo busca los ejecutables de los comandos cuando se ingresan en la línea de comandos.
Es decir, $PATH indica las ubicaciones donde se encuentran los programas que puedes ejecutar
desde cualquier directorio sin necesidad de especificar la ruta completa.
EDITOR VI
u: deshacer, si es par no hace nada
vi fich: entramos en modo vi dentro de un fichero
:q!: salir del modo vi sin guardar
:wq: salir habiendo guardado
x: borramos un carácter del texto
i: modo inserción
MOVER
h: mueve el cursor hacia atrás un carácter. No sale de la línea actual.
J: mueve el cursor a la línea siguiente, a ser posible a la misma columna.
K: mueve el cursor a la línea anterior, a ser posible a la misma columna.
l: mueve el cursor adelante un carácter. No sale de la línea actual.
w: mueve el cursor hacia adelante una palabra. El comando viene de Word
INSERCIÓN
I: inserta caracteres al comienzo de la línea
i: inserta caracteres inmediatamente antes del cursor.
a: añade caracteres inmediatamente después del cursor.
A: añade caracteres al final de la línea.
O: abre una línea antes (encima) de la que estaba el cursor y queda en modo inserción.
o: abre una línea después (debajo) de la que estaba el cursor y queda en modo inserción.
BORRADO
x borra el carácter que está bajo el cursor
X borra el carácter situado antes del cursor.
dd borra la línea sobre la que se encuentra el cursor.
dw borra (el resto de) la palabra situada bajo el cursor
J junta las líneas actual y siguiente. Dicho de otra forma, borra el cambio entre líneas.
DU
Con du vemos los directorios situados bajo el directorio que ponemos como parámetro. El
numero indica los bloques (de 1024 octetos) utilizados. Con du -a vemos los nombres de todos
los objetos (ficheros y directorios) bajo el directorio que ponemos como parámetro. b) Algo
parecido se obtiene con find y con ls -lR

METACARACTERES
echo a*: enseña los ficheros que empiecen por a (pudiendo ser esta cualquier cadena de
caracteres)
echo *1: enseña los ficheros que terminan por 1
echo a[2-4]: enseña ficheros que empiezan por a seguidos de un número entre 2 y 4 (ambos
incluidos)
echo a[42]: enseña ficheros que empiezan por a seguidos de un número entre 2 o 4
echo ??*: enseña ficheros de dos caracteres
echo ’??*’: muestra el valor literal, ??*
echo $? Los comandos devuelven (responden) 0 indicando bien, o resultado frecuente. En
otros casos devuelven un valor entero entre 1 y 255
(") quita significado especial a todo (carácter) salvo a $ \ ‘ y al siguiente “ .
COMENTARIO
#: todo lo posterior a este comando carece de valor alguno y se usa como comentario
EDICIÓN DE i-nodos DE FICHEROS
rm f6: quita el nombre (enlace) f6 al fichero correspondiente. Si el nombre eliminado es el
ultimo o único que tenía el fichero, se borra quedando disponible su inodo y bloques de
contenido para otros ficheros. No es exacto decir que rm borra ficheros. No lo hace siempre,
pero como la mayoría de los ficheros tienen solo un nombre, casi siempre rm borra el fichero.
ln f1 f3: añade el nombre (enlace) f3 al fichero f1. Un nombre no es una copia, no es un fichero
nuevo. Sigue habiendo los mismos ficheros que antes. Cualquier cambio que se haga al fichero
a través de un nombre aparece a través del otro (u otros) nombre (o nombres). El primer
nombre y sucesivos nombres añadidos mediante ln son indistinguibles. El nombre del comando
viene de link.
mv f4 f5: cambia el nombre del fichero f4 y pasa a ser f5 . El nombre del comando viene de
move.
cp f1 f2 copia el fichero f1 creando un nuevo fichero de nombre f2 y cuyo contenido es una
copia del contenido de f1. Si el fichero f2 ya existía, borra su contenido y pone como contenido
una copia del contenido de f1.

MAN
man (comando): instrucciones de tal comando

FILTROS
tac fich: muestra inversamente las líneas (las de abajo hacia arriba)
rev fich: da la inversa a todo el texto
sort fich: muestra las líneas en orden alfabético
sort -r fich: muestra las líneas alfabéticamente al revés
uniq fich: Elimina las líneas repetidas consecutivas.
uniq -c fich: Escribe cuántas veces se repite de forma consecutiva cada línea.
uniq -d fich: Solo escribe las líneas repetidas consecutivas. Solo las escribe una vez.
cut -c1-3 fich: Cortan todos los caracteres menos los tres primeros
cut -c2- fich: cortan el primer carácter
cut -c4- fich: cortan los tres primeros caracteres
cut -c1-10,21- selecciona los caracteres 1 a 10 y del 21 al ´ultimo de cada línea de la entrada
estándar. El intervalo abierto 21- indica ‘hasta el final de cada línea.
cut -d: -f1,5-7 fich selecciona los campos 1, 5, 6 y 7 de cada linea del fichero fich , tomando :
como delimitador de campos.
wc nos informa del tamaño de un fichero contando sus líneas, palabras y caracteres.
-c: número de caracteres
-l: número de líneas
tr: cambia unos caracteres por otros
cat dias | tr aeiou AEIOU: intercambian vocales minúsculas por mayúsculas
tr a-t A-T < fich: de la a a-t a A-T mayúsculas
tr ’\n’ = < fich: todas las líneas en una misma y un igual(=) separando
tr -c ’a-t\012’ - < fich: de la a-t se sustituye por (-)
\012 representa un solo carácter, el cambio de línea. También puede representarse por \n Las
comillas se ponen para que bash no intervenga en lo que escribimos.
tr -d eiou < fich eiou por espacio
VISUALIZACIÓN
nl fich: numera líneas en fichero
paste fich1 fich2: despliega en columnas las líneas de fich1 y fich2
comm: compara conjuntos, espera que la entrada pueda verse como líneas en las que la
información está autocontenida. En estos casos cada línea es como una ficha, como una tupla
en una tabla de una base de datos. Al ordenar las líneas el fichero no debe perder el sentido.
En la columna 1a presenta las líneas que solo están en el primer fichero. Si los ficheros
representan conjuntos: conjunto primero menos conjunto segundo.
En la columna 2a presenta las líneas que solo están en el segundo fichero. Conjunto segundo
menos conjunto primero.
En la columna 3a presenta las líneas que están en ambos ficheros. Intersección de conjuntos
join: El comando recorre ambos ficheros, y cuando encuentra la misma clave en ambos
ficheros, escribe el producto cartesiano de los restos de línea del fichero primero con los restos
de línea del fichero segundo.
El producto cartesiano de dos conjuntos es el conjunto de todas las combinaciones de
elementos del primer conjunto con elementos del segundo conjunto. El producto cartesiano de
los conjuntos {1, 2, 3, 4, 5, 6, 7, sota, caballo, rey} y {oros, copas, espadas, bastos} resulta ser el
conjunto ‘baraja española de 40 cartas’.
pr: se utiliza para formatear y presentar archivos de texto para su impresión

MAKE
make: escribe en la pantalla (en la salida estándar) los comandos que va a ejecutar antes de
ejecutarlos, facilita el proceso de compilación.
./: ejecuta el programa

SED
Es un editor no interactivo. Es útil si se va realizar varias veces modificaciones similares sobre
uno o varios ficheros.
sed -f fichero toma los comandos de edición del fichero nombrado a continuación de -f .
Presentaremos ejemplos con las funciones: escribir o imprimir (p), borrar (d), substituir (s) y
leer (r) .
sed -e ’3,5p’ lista las líneas 3 a 5.
La opción -n suprime la escritura en la salida estándar cuando no se indique explícitamente
sed -e ’4,6d’ -e ’10,$d’ borra las líneas 4 a 6 y 10 en adelante.
sed -e ’3d’ fich elimina la tercera línea
sed -e ’3!d’ fich elimina todas menos la tercera línea
sed -e ’/es/!d’ fich eliminan todas las líneas menos las que contienen “es”
sed -e ’/^$/,/FIN/p’ lista los grupos de líneas comprendidos entre una línea vacía y una línea
que contenga FIN .
En las expresiones regulares el carácter ^ representa el comienzo de línea. Algo situado antes
del primer carácter de una línea. El carácter $ representa el fin de línea. Algo situado después
del último carácter de una línea.
^$ representa en las expresiones regulares una línea vacía
sed ’s/mate /matematicas /’ substituye (en la salida estándar) las apariciones de ‘mate’ por
‘matemáticas’. Substituye la primera aparición en cada la línea.
El carácter ( / ) que aparece delimitando los parámetros de la sustitución puede cambiarse por
cualquier otro.
sed -e ’s/es/ES/’ fich sustituye es por ES
sed -e ’/DESDE/,/HASTA/!s/no/creo que no/g’ substituye todas las apariciones de no por creo
que no salvo en los a modo de párrafos encerrados por líneas que contienen DESDE y
líneas que contienen HASTA .
sed ’/aqui/r fich’ añade el fichero fich a continuación de cada línea en que haya un una
secuencia de caracteres aquí .
sed -e ’s/[ao]/-/’ fich sustituye la primera repetición de a y la o por -
sed -e ’s/[ao]/-/g’ fich sustituye todas las repeticiones de la a y la o por –
sed -e ’/[ao]/!s/e/E/g’ fich sustituye e por E en la línea con s
sed -e ’/[ao]/s/e/E/g’ fich sustituye e por E en todas las líneas sin s
sed -e ’s/.//’ fich quita la primera letra dtggbnm,.-e todas las líneas
sed -e ’s/\(.\)\(.*\)/\2\1/’ fich pone la primera letra en último lugar
sed -e ’s/\(...\)\(.*\)/\2\1/’ fich pone las primeras tres letras al final
sed -e ’s/\(.*\)\(..\)/\2\1/’ fich pone las dos ultimas letras al principio
sed -e ’2,6s/\(.*\)\(..\)/\2\1/’ fich pone las dos últimas letras al principio, en las líneas de las 2
a la 6
sed -e ’5,7p’ fich: repite dos veces las líneas de la 5 a la 7
sed -e ’3,5r fich2’ fich1: de la línea 3 a la 5 se va intercalando el contenido de fich2 con las
líneas
sed -e ’3,5a hola’ fich1: de la línea 3 a la 5 se va intercalando hola con las líneas
sed -e ’3,5a \ \ hola’ fich1: de la línea 3 a la 5 se va intercalando hola y dos espacios con las
líneas

SENTENCIAS
( sentencia1 ;
expresiónBooleana ;
sentencia2 ) {
sentencias }
Este for , a diferencia del comando del lenguaje pascal del mismo nombre, no tiene un
incremento automático. Para recorrer diez valores consecutivos tenemos que nombrar los diez
valores. Tenemos a cambio posibilidad de poner esos valores en cualquier orden arbitrario. Por
ejemplo, podemos poner: for j in 1 3 2 4 .
Se puede suprimir in $* al final de la primera línea de for . Cuando solo tenemos for variable ,
se supone (se añade) in $
$* se substituye por todos los parámetros. Suponemos que los parámetros son nombres de
fichero. Con cada parámetro ( for i in $* ), escribimos el nombre del parámetro/fichero ( echo
$i ) y cambiamos el nombre del fichero añadiéndole .v ( mv $i $i.v ).

if expresiónBooleana then
listaComandos
else
listaComandos
fi
if va seguido de una expresión booleana, tiene una rama then , una rama else y está terminado
por fi (la palabra del comienzo al revés). Si la expresión booleana es cierta, se ejecuta la rama
then . En caso contrario, se ejecuta la rama else. Una versión reducida de if carece de rama
else .
El comando break sale de la estructura for o while más interior de las que le incluyen.
Normalmente estará dentro de una estructura if .1
EJEMPLO:
if [ -r a ] ; then
echo legible else
echo no legible
fi
• [ -r a ]: Es una expresión condicional que verifica si el archivo "a" es legible. El flag -r
comprueba si el archivo tiene permisos de lectura. Si el archivo es legible, la condición
es verdadera y se ejecuta el código dentro del bloque then.
• echo legible: Imprime "legible" en la salida estándar (pantalla) si la condición [ -r a ] es
verdadera.
• else: Si la condición [ -r a ] es falsa (el archivo "a" no es legible), se ejecuta el código
dentro del bloque else.
• echo no legible: Imprime "no legible" en la salida estándar si la condición [ -r a ] es
falsa.
AWK
se parece, un poco, a sed . La unidad de datos es el registro , que normalmente coincide con la
línea .
awk ’{print; print}’ fich: imprime cada línea dos veces
awk ’/es/{print; print}’ fich y awk ’/es/ ; /es/’ fich: imprime líneas con es dos veces
awk ’NR > 3’ fich: muestra a partir de la línea 3
awk ’NR>3 {print $0,$0}’ días: muestra a partir de la línea 3 en dos columnas lo mismo
awk ’NR>3 {print $0,$0} ; END {print "leidas", NR, "lineas"}’ fich: al final muestra “n lineas
leídas”
awk ’{print $1, "+", $2, " ", $1 $2}’ fich: muestra los campos divididos por un + y después los
pone juntos
awk ’{printf ("%9s %9s %9s\n", $3, $2, $1) }’ muestra en columnas los campos pero separados
por un espacio
awk ’{print substr($1,1,4)}’ fich muestra las 4 primeras letras de las líneas
awk ’{print substr($1,3,4)}’ fich muestra las 3 letras a partir del campo 3 de cada línea
awk ’{print substr($1,3)}’ fich quita las dos primeras letras
awk ’{print length($1), $1}’ fich pone a la izquierda de las líneas cuantos caracteres tienen
awk ’{print index($1,"e"),$1}’ fich muestra la primera posición del carácter ‘e’ en cada una de
las líneas

TEST
test expresión devuelve 0 si la expresión es cierta
-r f da cierto cuando f existe y se puede leer. “... se puede ...” equivale a “... el usuario que
ejecuta el programa puede ...”
-w f: f (existe y) se puede escribir en ´el.
-x f: f (existe y) tiene bit x . En el caso de que f sea un fichero, es ejecutable.
-f f: f (existe y) es un fichero normal.
-d d: d (existe y) es un directorio.
-c f: f (existe y) es un dispositivo de caracteres.
-u f: f (existe y) tiene bit s de usuario. (Al final de esta lista comentamos el bit s.)
-t: da cierto cuando la salida estándar va a un terminal

TAR Y GZIP
El comando tar tiene varias opciones y argumentos que se pueden utilizar para realizar
diferentes acciones. Algunas de las acciones comunes son:
• Crear un archivo tar: Puedes crear un archivo tar con el contenido de uno o varios
archivos o directorios utilizando el siguiente comando
tar -cvf archivo.tar archivo1 archivo2 directorio1
• Esto creará un archivo llamado archivo.tar que contendrá los archivos y directorios
especificados.
• Extraer el contenido de un archivo tar: Para extraer el contenido de un archivo tar,
puedes utilizar el siguiente comando:
tar -xvf archivo.tar
• Esto extraerá los archivos y directorios contenidos en el archivo archivo.tar.
• Comprimir archivos con gzip: Puedes combinar el comando tar con el programa de
compresión gzip para crear archivos tar comprimidos. Por ejemplo:
tar -cvzf archivo.tar.gz archivo1 archivo2 directorio1
• Esto creará un archivo tar llamado archivo.tar.gz que estará comprimido con gzip.
• Extraer contenido de un archivo tar comprimido: Si tienes un archivo tar comprimido,
puedes extraer su contenido utilizando el siguiente comando:
tar -xvzf archivo.tar.gz
Esto descomprimirá y extraerá los archivos y directorios del archivo archivo.tar.gz.
PERMISOS

También podría gustarte