¿Que es una shell? Pues no es nada mas que un interprete de comandos que funciona a traves de terminal. Se puede diferenciar usando bash sobre Qterminal, por ejemplo.
echo $BASH muestra la shell que estas usando la mas usual es bsh (bourne shell). el cmd chsh puede ayudar a cambiar la shell,siendo root puede cambiarle la shell a cualquier usuario. un usuario normal solo puede cambiar la shell de su cuenta.
usando more shells en /etc/ nos encontramos
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/bin/zsh
/usr/bin/zsh
/usr/bin/tmux
/usr/bin/screen
vease que sh,bash,rbash,dash,zsh son de la carpeta bin
.
se pueden definir variables como $BASH usando linux=3 y luego
echo $linux en consola. Vease que linux distingue entre mayusculas y minusculas. existen variables predefinidas por
la shell como $DISPLAY,$HOME,$LOGNAME,$MAIL,$USER,
$TERM,etc. Para verlas todas hay que usar printenv
o set,o set -o, o echo
printenv muestra todas las variables
set muestra todas las variables
echo $HOME - Muestra el valor de $HOME
printenv HOME - lo mismo que echo $HOME
para cambiarle el valor a una variable durante el uso
de un programa una vez:
printenv HOME: /root
HOME=/kalo printenv HOME
esto a su vez sin cambiar el valor original /root
VARIABLE $PATH
cuando se usa who,linux busca.en los directorios por el programa usando PATH. con echo $PATH se puede saber cuales son;
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/system/xbin:/system/bin
se puede agregar o modificar un directorio usando PATH=$PATH:/usr/share/doc ...por ejemplo,pero este cambio sera solo temporal. para hacerlo definitivo hay que modificar .bash_profile.
CONTROL DE TAREAS EN EL SHELL
jobs - mira las tareas actuales
& - manda un proceso a background,al fondo,2do plano
. se hizo para no tener que esperar a que termine un
proceso en 1er plano para iniciar otro.
suspend - suspender una concha
nohup ./my-shell-script.sh &
con nohup se evita que la orden sea asesinada cuando
hagamos logout de nuestro usuario
at -f backup.sh 10 am tomorrow
ejecuta el script mañana a las 10am
watch -n 60 df -h
ejecuta cada 60segundos df -h,-n y --interval va con
los segundos para que la orden se ejecute periodica%
fg %ntarea- traer proceso al primer plano
bg - traer proceso al 2do plano
nano linux
con CTRL+Z puedes suspender la tarea del primer plano
REDIRECCION ENTRADA/SALIDA
cmd < infile le damos al comando como entrada el archivo infile
cmd > file ...crear/sobreescribir archivo
cdm >> file ...adjuntar
se puede escribir archivos de error mientras se ejecuta un programa...esto es una derivacion de la entrada en caso de fallar
nano 2> errorfile
la entrada y la entrada de error en diferentes
archivos: nano > outfile 2> errorfile
nano >& en un mismo archivo
nano &> en un mismo archivo
no queremos la salida standard,stderr,,solo si hay salida de errores
cat file.txt > /dev/null
./shell-script.sh > /dev/null
si no queremos ver la salida de errores
cat invalid-file-name.txt 2> /dev/null
./shell-script.sh 2> /dev/null
Ejecutar procesos paralelos
command1 ; command2 ; command3
Parar el resto de procesos si el anterior falla:
command1 && command2 && command3
para ejecutar comandos y parar la ejecucion tan pronto como uno finaliza: command1 || command2 || command3
una coma interpreta literalmente: echo '$HOME'
dos comas los interpreta como comandos echo "$HOME"
`` y $() se interpretan como comandos
pero $() es mejor porque puede anidar $(expr $(date +%Y) + 1)
usando \ se puede hacer una expresion literal:
echo a\* * deja de ser un comodin y es un asterisco
echo "\$HOME" $ se vuelve solo el signo dolar
linux tiene su propio historial y tiene los siguientes comandos.
!! corre el comando anterior
history - muestra el historial
history -C - borra el historial
history N - muestra el comando N usado
!N - reejecuta el comando N
!-N - reejecuta el comando -N?
!$ - ejecuta el parametro del comando anterior
ls asdf* asdf1 asdf2 asdf3
rm !$ ..lo que es igual a rm asdf*
PROCESOS
son programas,comandos o ejecutables. los procesos
demonio son los que estan permanentemente en el sistema. siempre se esta
ejecutando y esperando queel usuario haga uso de el. generalmente estos
ultimos terminan en d(como crond,httpd,cupsd) todo proceso posee un
PID.(process identifier) y todo proceso tiene un padre,excepto el
primero que tiene PID 1 el primer proceso se llama init en distros que
usan SysV, o systemd en la mayoria de las distros recientes.
ps
permite ver los procesos del sistema. de modo predeterminado,solo
muestra los iniciados desde la consola. los cmd kill y kill mandan
señales a los procesos. kill espera un n de proceso como
argumento,mientras que killall espera un comando. por default ambos
envian la señal 15
gnome-system-monitor es un administrador grafico que funciona con gnome y kde top permite ver los procesos desde la consola
CODIGO DE RETORNO
todo
comando en linux devuelve un codigo al terminar su ejecucion. 0 cuando
ha terminado correctamente,diferente de 0 en caso contrario. dependiendo
de la razon da un codigo u otro. se usa la.variable $!
ls zergfluf
$!
Fuente: Linux Pocket Guide
No hay comentarios.:
Publicar un comentario