GNU/Linux
Cáscara
Buscar..
Introducción
El shell ejecuta un programa en respuesta a su solicitud. Cuando da un comando, el shell busca el programa y luego lo ejecuta. Por ejemplo, cuando da el comando ls, el shell busca la utilidad / programa llamado ls, y luego lo ejecuta en el shell. Los argumentos y las opciones que proporcione con las utilidades pueden afectar el resultado que obtenga. El shell también se conoce como CLI o interfaz de línea de comandos.
Cambio de shell por defecto
La mayoría de las distribuciones modernas vendrán con BASH ( B ourne A gain SH ell) preinstalado y configurado como shell predeterminado.
El comando (en realidad un binario ejecutable, un ELF) que es responsable de cambiar shells en Linux es chsh
( ch ange sh ell).
Primero podemos verificar qué shells ya están instalados y configurados en nuestra máquina usando el comando chsh -l
, que generará un resultado similar a este:
[user@localhost ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish
En algunas distribuciones de Linux, chsh -l
no es válido. En este caso, la lista de todos los shells disponibles se puede encontrar en el archivo / etc / shells. Puedes mostrar el contenido del archivo con cat
:
[user@localhost ~]$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish
Ahora podemos elegir nuestro nuevo shell predeterminado, por ejemplo, fish
, y configurarlo usando chsh -s
,
[user@localhost ~]$ chsh -s /usr/bin/fish
Changing shell for user.
Password:
Shell changed.
Ahora todo lo que queda por hacer es realizar un ciclo de cierre de sesión y iniciar sesión y disfrutar de nuestro nuevo shell predeterminado.
Si desea cambiar el shell predeterminado para un usuario diferente, y tiene privilegios administrativos en la máquina, podrá lograr esto utilizando chsh
como root
. Así que asumiendo que queremos cambiar user_2
shell por defecto 's para los peces, vamos a utilizar el mismo comando que antes, pero con la adición del nombre de usuario del otro usuario, chsh -s /usr/bin/fish user_2
.
Para verificar cuál es el shell predeterminado actual, podemos ver la variable de entorno $SHELL
, que apunta a la ruta de acceso a nuestro shell predeterminado, por lo que después de nuestro cambio, esperaríamos obtener un resultado similar a este,
~ echo $SHELL
/usr/bin/fish
opciones de chsh
:
-s shell
Establece shell como el shell de inicio de sesión.
-l
, --list-shells
Imprima la lista de shells enumerados en / etc / shells y salga.
-h
, --help
Imprima un mensaje de uso y salga.
-v
, --version
Imprimir información de la versión y salir.
Utilidades básicas de Shell
Personalizando el indicador de Shell
El símbolo del sistema predeterminado se puede cambiar para que se vea diferente y corto. En caso de que el directorio actual sea largo, el indicador de comando predeterminado se vuelve demasiado grande. Usar PS1
vuelve útil en estos casos. Un comando corto y personalizado bonito y elegante. En la tabla a continuación, se ha utilizado PS1
con varios argumentos para mostrar diferentes formas de mensajes de shell. El indicador de comando predeterminado se ve así: user@host ~ $
en mi caso, se ve así: bruce@gotham ~ $
. Se puede cambiar según la tabla a continuación:
Mando | Utilidad |
---|---|
PS1 = '\ w $' | ~ $ shell prompt como nombre de directorio. En este caso el directorio raíz es root. |
PS1 = '\ h $' | gotham $ shell prompt como nombre de host |
PS1 = '\ u $' | bruce $ shell prompt como nombre de usuario |
PS1 = '\ t $' | 22:37:31 $ shell prompt en formato de 24 horas |
PS1 = '@ $' | 10:37 PM indicador de shell en formato de 12 horas |
PS1 = '! PS | 732 mostrará el número de historial del comando en lugar del indicador de shell |
PS1 = 'dude $' | dude $ mostrará el indicador de shell de la forma que quieras |
Algunos comandos básicos de shell
Mando | Utilidad |
---|---|
Ctrl-k | cortar / matar |
Ctrl-y | tirar / pegar |
Ctrl-a | Llevará el cursor al inicio de la línea. |
Ctrl-e | Llevará el cursor al final de la línea. |
Ctrl-d | borrará el carácter después de / en el cursor |
Ctrl-l | borrará la pantalla / terminal |
Ctrl-u | borrará todo entre el indicador y el cursor |
Ctrl-_ | deshará lo último escrito en la línea de comandos |
Ctrl-c | interrumpirá / detendrá el trabajo / proceso que se ejecuta en primer plano |
Ctrl-r | búsqueda inversa en la historia |
~/.bash_history | almacena los últimos 500 comandos / eventos utilizados en el shell |
history | mostrará el historial de comandos |
history | grep <key-word> | mostrará todos los comandos en el historial con la palabra clave <key-word> (útil en casos en los que recuerde parte del comando utilizado en el pasado) |
Crea tu propio alias de comando
Si está cansado de usar comandos largos en bash, puede crear su propio alias de comando.
La mejor manera de hacer esto es modificar (o crear si no existe) un archivo llamado .bash_aliases en su carpeta de inicio. La sintaxis general es:
alias command_alias='actual_command'
donde actual_command
es el comando que está renombrando y command_alias
es el nuevo nombre que le ha dado. Por ejemplo
alias install='sudo apt-get -y install'
asigna la nueva install
alias de comando al comando real sudo apt-get -y install
. Esto significa que cuando usa la instalación en un terminal, bash lo interpreta como sudo apt-get -y install .
Localiza un archivo en tu sistema
Usando bash puedes localizar fácilmente un archivo con el comando locate
. Por ejemplo, diga que está buscando el archivo mykey.pem:
locate mykey.pem
A veces, los archivos tienen nombres extraños, por ejemplo, es posible que tenga un archivo como random7897_mykey_0fidw.pem
. Digamos que está buscando este archivo pero solo recuerda las partes mykey y pem. Puedes combinar el comando de locate
con grep
usando una tubería como esta:
locate pem | grep mykey
Lo que traería todos los resultados que contienen ambas piezas.
Tenga en cuenta que no todos los sistemas tienen instalada la utilidad de locate
, y muchos de ellos no la han habilitado. locate
es rápido y eficiente porque escanea periódicamente su sistema y almacena en caché los nombres y ubicaciones de cada archivo en él, pero si esa recopilación de datos no está habilitada, entonces no puede decirle nada. Puede usar updatedb
para iniciar manualmente el escaneo del sistema de archivos para actualizar la información almacenada en caché sobre los archivos en su sistema de archivos.
Si no tiene una locate
trabajo, puede recurrir a la utilidad de find
:
find / -name mykey.pem -print
es aproximadamente equivalente a locate mykey.pem
pero tiene que escanear su (s) sistema (s) de archivos cada vez que lo ejecuta para el archivo en cuestión, en lugar de usar datos almacenados en caché. Esto es obviamente más lento y menos eficiente, pero más en tiempo real. La utilidad de find
puede hacer mucho más que buscar archivos, pero una descripción completa de sus capacidades está fuera del alcance de este ejemplo.