Écrire des commandes structurées sur plusieurs lignes avec la touche de tabulation activée

10

Je voudrais écrire une commande structurée sur plusieurs lignes comme

$ 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

mais trouvez l'onglet ne fonctionne pas,

Comment pourrais-je activer la touche de tabulation dans la console bash?

Calcul
la source
4
appuyez sur Control-V Tab à la place; Tab est lié à l'achèvement du fichier / de la commande par défaut.
mosvy

Réponses:

10

Lorsque vous appuyez sur Enteraprès avoir entré une commande incomplète, le bashshell affiche une invite de continuation (l'invite secondaire $PS2) et vous permet de terminer la commande entrée. Les fonctionnalités d'édition de la ligne de commande du shell à ce stade sont les mêmes qu'à l'invite d'origine (l'invite principale $PS1), ce qui signifie que la Tabclé exécutera la commande et le nom de fichier comme d'habitude.

Pour insérer un caractère de tabulation, utilisez Ctrl+V Tabou utilisez des espaces pour le retrait. Les tabulations (ou tout autre caractère littéral) peuvent toujours être insérées si elles sont préfixées par Ctrl+V.


Alternativement, si en mode d'édition de ligne de commande Emacs (qui, je crois, est le mode par défaut bash), utilisez Ctrl+X Ctrl+Epour faire apparaître un éditeur dans lequel entrer votre commande. L'éditeur utilisé sera celui spécifié par la EDITORvariable shell / environnement, ou emacssi cette variable n'est pas définie.

En mode d'édition de ligne de commande Vi, appuyez sur Escape vpour faire la même chose.

La commande sera exécutée après avoir enregistré et quitté l'éditeur.

Kusalananda
la source
Puis-je demander la ligne de commande What vi, je suis conscient que Vim est un éditeur qui doit être ouvert à l'avance, aller à l'intérieur et modifier, plutôt que de taper directement dans command and run.
Calcul
1
@avirate Vim est une variante de l'éditeur Vi original. Le "mode d'édition de la ligne de commande Vi" est un mode que vous activez avec set -o viet qui vous donne la possibilité d'utiliser des commandes d'édition Vi / Vim sur la ligne de commande, comme ( Esc) dwpour supprimer jusqu'à la fin du mot actuel, etc. Utilisez set -o emacspour revenir en mode d'édition de ligne de commande Emacs.
Kusalananda
incroyable, je le cherche et l'explore immédiatement.
Calcul
1
@avirate Notez que l'éditeur n'a pas besoin d'être ouvert à l'avance. Si vous appuyez sur Ctrl+X Ctrl+E, le shell l'ouvrira pour vous.
Kusalananda