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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow