
Viniendo de un mundo FreeBSD, deseo que la terminal Linux se comporte como una FreeBSD, especialmente la versión 9.1, básicamente cuando escribes cd
en la terminal y presionas la flecha "arriba" puedes explorar todos los comandos en el historial, comenzando por cd
el que te hace ganar mucho tiempo.
No sé cómo habilitar esta función en Linux Debian o CentOS que me obliga a escribir todo, ¿podría alguien ayudarme?
Respuesta1
Agregue lo siguiente a ~/.inputrc
:
# Press up-arrow for previous matching command
"\e[A":history-search-backward
# Press down-arrow for next matching command
"\e[B":history-search-forward
Explicación
~/.inputrc
es el archivo de configuración paralínea de lectura de GNU. Muchos shells, incluido Readline bash
, lo tcsh
utilizan para editar la línea de comandos. Las dos líneas anteriores le indicarán a readline que invoque su funcionalidad de búsqueda de historial cuando se encuentren las secuencias de escape para las teclas de flecha hacia arriba ( \e[A
) y hacia abajo ( ).\e[B
Respuesta2
Lo que sucede es que FreeBSD y Linux usan shells diferentes por defecto. FreeBSD por defecto estcsh, que tenía mejores características interactivas que bash en el pasado (pero bash se ha puesto al día) perocaracterísticas de scripting notablemente peores.
La forma más sencilla de obtener el entorno al que está acostumbrado sería cambiar su shell a tcsh en Linux. Siempre que tcsh esté instalado en todo el sistema (si no lo está, pídale al administrador del sistema que lo instale), ejecútelo chsh -s tcsh
para cambiar su shell predeterminado.
Alternativamente, puedes configurar bash para que tenga este comando al que estás acostumbrado. De forma predeterminada, las Upflechas Downy navegan entre todos los comandos del historial, no solo los que comienzan con el prefijo que has escrito. Para cambiar esto al comportamiento al que está acostumbrado, coloque las siguientes líneas en el archivo de inicialización de bash, que se encuentra .bashrc
en su directorio de inicio. Ejecute . ~/.bashrc
o inicie un nuevo shell para volver a leer el archivo de inicialización.
bind '"\eOA": history-search-backward'
bind '"\e[A": history-search-backward'
bind '"\eOB": history-search-forward'
bind '"\e[B": history-search-forward'
Las secuencias de escape son lo que su terminal envía al shell cuando presiona una tecla de flecha. Uppuede ser \eOA
(escape, O
, A
) o \e[A
dependiendo de tu terminal, y lo mismo para Down.
De forma predeterminada, bash ofrece diferentes combinaciones de teclas para buscar en el historial de comandos. Puede presionar Ctrl+ Ry luego ingresar algunos caracteres para buscar un comando que contenga esta subcadena en cualquier lugar de la línea. Presione Ctrl+ Spara avanzar en lugar de retroceder. La búsqueda es incremental (es decir, a medida que escribe); Alt+ Py Alt+ Nte ofrecen una búsqueda no incremental.
En lugar de bash y tcsh, puedes cambiar a zsh, quetiene algunas características interesantes que no se encuentran en otros shells. Zsh tiene Ctrl+ Ry
Ctrl+ Spor defecto al igual que bash. Para obtener Upy Downcomo lo tenía en tcsh, coloque las siguientes líneas ~/.zshrc
:
bindkey '\eOA' history-beginning-search-backward
bindkey '\e[A' history-beginning-search-backward
bindkey '\eOB' history-beginning-search-forward
bindkey '\e[B' history-beginning-search-forward
Si desea utilizar el mismo shell en todas partes, también puede utilizar bash o zsh en FreeBSD, siempre que el puerto esté instalado (nuevamente, consulte con el administrador del sistema).
Respuesta3
tcsh
está disponible para la mayoría de las distribuciones de Linux. Intente instalar el tcsh
paquete y luego ejecútelo chsh -s /bin/tcsh
para convertirlo en su shell predeterminado.