Escriba comandos estructurados en varias líneas con la tecla de tabulación activada

10

Me gustaría escribir un comando estructurado en varias líneas como

$ for i in *;
 do
    file $i;
 done
bmdt.md: ASCII text
breakfast.md: ASCII text
brmdh.md: ASCII text
test.sh: Bourne-Again shell script text executable, ASCII text

pero la pestaña no funciona,

¿Cómo podría activar la tecla de tabulación en la consola bash?

Cálculo
fuente
44
presione Control-V Tab en su lugar; La pestaña está vinculada a la finalización del archivo / comando por defecto.
mosvy

Respuestas:

10

Cuando presiona Enterdespués de ingresar un comando incompleto, el bashshell mostrará una solicitud de continuación (la solicitud secundaria $PS2) y le permitirá completar el comando ingresado. Las funciones de edición de la línea de comandos del shell en ese punto son las mismas que en la solicitud original (la solicitud primaria $PS1), lo que significa que la Tabtecla completaría el comando y el nombre de archivo como de costumbre.

Para insertar un carácter de tabulación, use Ctrl+V Tabo use espacios para sangría. Los caracteres de tabulación (o cualquier otro carácter literal) siempre se pueden insertar si tienen el prefijo Ctrl+V.


Alternativamente, si está en el modo de edición de línea de comandos de Emacs (que creo que es el predeterminado bash), use Ctrl+X Ctrl+Epara abrir un editor para ingresar su comando. El editor utilizado será el especificado por la EDITORvariable de shell / entorno, o emacssi esta variable no está configurada.

En el modo de edición de línea de comando Vi, presione Escape vpara hacer lo mismo.

El comando se ejecutará después de guardar y salir del editor.

Kusalananda
fuente
¿Puedo preguntar cuál es la línea de comandos de vi? Soy consciente de que Vim es un editor que debe abrirse con anticipación, entrar y editar, en lugar de escribir directamente en command y ejecutar.
Cálculo
1
@avirate Vim es una variante del editor original de Vi. El "modo de edición de línea de comando Vi" es un modo que habilita set -o viy que le brinda la capacidad de usar los comandos de edición Vi / Vim en la línea de comando, como ( Esc) dwpara eliminar al final de la palabra actual, etc. Use set -o emacspara volver al modo de edición de línea de comando de Emacs.
Kusalananda
increíble, inmediatamente lo busco y lo exploro.
Cálculo
1
@avirate Tenga en cuenta que no es necesario abrir el editor de antemano. Si presiona Ctrl+X Ctrl+E, el shell lo abrirá por usted.
Kusalananda