Podemos clasificar las utilidades por consola de linux acorde a su función, y analizarlas de forma sistematica. Aprovecharemos las capacidades de ejecución de notebooks de bash para ilustrar los comandos, pero debe tenerse en cuenta que la linea inicial de cada bloque %%bash
no esta asociada con su ejecución en una consola linux al igual que el uso de !
al inicio de linea. Ambos casos son la forma de indicarle al notebook que debe ejecutar en modo bash en la consola linux.
Podemos imprimir mensajes en la consola (e incluso a archivos) con ayuda de echo
y printf
, teniendo mayor control este último.
La indicación de comentarios en bash (texto que no posee efecto en ejecución) se logra indicando el simbolo # a partir de la parte de la linea que se desee interpretar como un comentario.
In [1]:
%%bash
# Esto es un comentario y por tanto no ejecuta nada
echo "Esto no es un comentario" # pero esto si es un comentario
In [2]:
%%bash
apt --help
In [3]:
man apt
man
genera una nueva instancia en la visualización de la consola y muestra información más detallada que --help
normalmente.
Partiendo de una distribución Debian/Ubuntu tenemos las siguientes utilidades: apt
y dpkg
.
La instrucción apt
(cuya descripción y opciones se muestra en la celda superior) soporta los argumentos -y
para confirmación de instalación, -q
para proceso silencioso y -f
para forzado, entre otros.
Algunas funciones de gestión de paquetes aún no se encuentran en apt
por lo que aún debe usarse su predecesor apt-get
y en combinación con apt-cache
.
In [4]:
!apt search jupyter
In [5]:
!apt show ipython
Si el paquede .deb
ya lo tenemos descargado, podemos usar la instrucción dpkg
como dpkg -i NOMBREPAQUETE.deb
.
Todas estas funciones, si requieren afectar el sistema, requieren de permisos de administrador. Para ello accedemos como sudo -i
y a continuación la contraseña, o su NOMBREADMIN
y luego la contraseña del usuario administrador.
Si se requiere de un proceso de compilación, dependerá de los directorios afectados la necesidad de ser administrador, y se procede normalmente como:
./configure
make
make install
Sin embargo, se recomienda leer el archivo README
o INSTALL
que encontrará normalmente para detallar las opciones especificas del make
.
Para la gestión de archivos y directorios podemos encontrar las siguientes utilidades.
Podemos consultar el directorio actual por medio de la instrucción pwd
y hacer cambio de directorio con la instrucción cd
. La ruta de un directorio o archivo puede indicarse de forma absoluta (indicación desde el raíz) o de forma relativa (desde el directorio actual). Cuando indicamos la ruta absoluta, la ruta siempre debe iniciar por /
, mientras que la ruta relativa inicia directamente con el nombre de archivo o directorio que se encuentra en el directorio actual o con .
para hacer redundancia en el directorio actual o ..
para salirse un directorio. Tambien puede indicarse el directorio home del usuario actual como ~
, y para la instrucción cd
en particular, la omisión de la ruta lleva a este directorio.
In [6]:
%%bash
pwd # Muestra directorio actual
cd .. # Se sale un directorio
pwd # Muestra directorio actual (superior al anterior en este caso)
Podemos hacer consulta de los archivos y directorios existentes por medio de la utilidad ls
, la cual posee argumentos que permiten controlar el nivel de información que obtenemos sobre estos.
In [7]:
%%bash
echo "listar archivos"
ls
echo "listar archivos, incluyendo archivos ocultos"
ls -a
echo "listar archivos, incluyendo archivos ocultos e indicando propiedades"
ls -al
echo "listar archivos, incluyendo archivos ocultos e indicando propiedades con indicación de peso con prefijos"
ls -alh
Las primeras columnas de los listados con propiedades se corresponden a los permisos de los archivos. La primera columna corresponde a si es un directorio d
o un archivo regular -
. Las siguientes columnas en grupos de 3 asocian a los permisos del usuario propietario, usuarios del grupo y resto de usuarios, siendo la primera columna del grupo para indicar lectura r
, la segunda escritura w
y la última ejecución x
. La carencia de dichas propiedades se designa con -
.
Para crear archivos o actualizar la huella de tiempo se puede usar la instrucción touch
seguida del nombre del archivo. Si se usa para la creación de un archivo, este será por defecto un archivo de texto plano.
El contenido de un archivo de texto plano se puede poblar con ayuda de los simbolos >
y >>
que se encargar de direccionar las salidas de la consola hacia el archivo deseado. Si desea sobreescribir los archivos use la primera opción, pero si los desea continuar use la segunda opción.
In [8]:
%%bash
touch prueba.txt
ls -lh *txt
ls > prueba.txt # Se redirige la salida de ls al archivo prueba.txt, el cual se sobre escribe
ls -lh *txt
Para la lectura de los archivos es posible usar distintas utilidades según se requiera una forma interactiva o estatica, o un conjunto de lineas especificas. Así, tenemos utilidades como head
, tail
, more
y less
.
In [9]:
!more prueba.txt
In [10]:
%%bash
echo "Primeras dos lineas"
head -n 2 prueba.txt
echo "ultimas dos lineas"
tail -n 2 prueba.txt
Si deseamos realizar una copia del archivo, usamos la instrucción cp
. Para cambiar su ubicación o renombrar se usa la instrucción mv
(renombrar es lo mismo que cambiar la locación del archivo).
In [11]:
%%bash
cp prueba.txt prueba2.txt # Se hace una copia de prueba.txt en prueba2.txt
mv prueba.txt prueba3.txt # Se cambia el nombre de prueba.txt a prueba3.txt
ls prueba*.txt # Se valida la existencia de los archivos con patron 'prueba' al inicio y extensión '.txt'.
Si deseamos eliminar de manera permanente el archivo prueba3.txt
, usamos la instrucción rm
. Tanto para copiar como para borrar de debe usar el argumento -R
si se desea la acción sobre directorios.
In [12]:
%%bash
rm prueba3.txt
ls prueba*.txt
Para crar un directorio se usa la instrucción mkdir
.
In [13]:
%%bash
mkdir -p directorio_prueba # El argumento '-p' es para no generar error si ya existe el directorio y lo conserva
ls -d */ # De esta manera se listan solo directorios
Se desea crear un enlace simbolico del archivo prueba2.txt en el directorio nuevo, esto con el fin de tener un acceso rapido desde dicha ubicacion. Para este fin se usa la instrucción ln
.
In [14]:
%%bash
ln -fs prueba2.txt directorio_prueba/prueba.txt # El argumento 'f' remueve el enlace si ya existe.
# El argumento 's' es para indicar un enlace simbolico.
ls -oh directorio_prueba/
Es posible tambien concatenar archivos de texto plano, por medio de cat
. El resultado de la concatenación se redirige a la salida estandar de la consola.
In [15]:
!cat prueba2.txt prueba2.txt
In [16]:
%%bash
echo "Buscar texto en un archivo"
grep Jupyter prueba2.txt
echo "Buscar texto en salida de consola"
ls -l | grep prueba
echo "Buscar archivo en un directorio"
find . -iname "Jupyter*"
Podemos gestionar los procesos del sistema con las utilidades ps
, top
y kill
. Las dos primeras permiten realizar observación de los procesos en ejecución en el sistema y ciertos argumentos para definir el detalle de la información de estos. Mediante kill
y el identificador del proceso podemos elminar este.
In [17]:
%%bash
ps -u $USER
Los permisos permiten no solo el acceso a los archivos por parte de los usuarios, sino la posibilidad de restringir el tipo de operaciones sobre los archivos.
Permiso | Valor | Letra |
---|---|---|
Lectura | 4 | r |
Escritura | 2 | w |
Ejecución | 1 | x |
Los permisos se pueden habilitar mediante +
seguido de la letra asociada al permiso y el nombre del archivo, o mediante la indicación de la suma de valores de los permisos y en orden acorde a usuario propietario, usuarios del grupo y resto de usuarios.
In [26]:
%%bash
rm -f ejecutar_prueba.sh
echo "echo hola" > ejecutar_prueba.sh # Creamos un archivo para ejecución
echo "Propiedades del archivo"
ls -oh *sh # Validamos permisos de ejecución. Por defecto los permisos son solo lectura.
echo "Se ejecuta el archivo"
./ejecutar_prueba.sh # Ejecutamos y se genera error de permisos.
echo "Se puede obviar el error por parte del propietario mediante sh (bash/dash/zsh/..)"
bash ejecutar_prueba.sh
echo "Se cambian permisos y ejecuta nuevamente"
chmod 755 ejecutar_prueba.sh # Se otorga permiso de ejecución
./ejecutar_prueba.sh # Al ejecutar nuevamente se genera la salida esperada
In [19]:
%%bash
dig www.google.com
Tambien es posible realizar descargas por medio de la consola con la instrucción wget
.
In [20]:
!wget -O comandoslinux.jpg https://tanaceto.files.wordpress.com/2007/11/fwunixref_es.jpg
In [21]:
!ls *jpg
Consulte con las opciones de ayuda de la consola, el uso de las instrucciones tar
, gzip
, file-roller
(ubuntu), zip
, unzip
, 7z
(los ultimos tres debe instalarlos).
Existen muchas utilidades linux esenciales, las cuales puede explorar por su cuenta. Algunas de ellas para su consulta son:
Encontrará de utilidad para gestiones administrativas y rutinas bash, algunas variables de entorno. Estas se expresan sus valores usando \$ al inicio del nombre. Algunas variables de entorno comunes son:
In [22]:
%%bash
echo $HOME # Directorio Home del usuario actual
echo $PATH # Ruta de los ejecutables
echo $USER # Nombre de usuario del usuario actual
Algunos archivos de configuración importantes son: