avviso: modifica della linea non abilitata


21

Ho trovato questo utile comando bind -x '"\C-r"':resetper cancellare il terminale ma volevo creare un semplice script bash:

#!/bin/bash
bind -x '"\C-r"':reset

produzione:

alfred@alfred-laptop:~/bash$ ./bind 
./bind: line 2: bind: warning: line editing not enabled

Qualcuno potrebbe spiegare:

  1. Come posso risolvere questo problema?
  2. Cosa warning: line editing not enabledsignifica?

L'ho già risolto utilizzando echo -e '\0033\0143'grazie a superuser.com/questions/122911/bash-reset-and-clear-commands/… , ma vorrei comunque sapere cosa significa questo errore e come risolverlo. Grazie molto.
Alfred,

@squircle grazie per buoni miglioramenti. Potresti anche sapere la risposta alla mia domanda: P?
Alfred,

4
Solo per la cronaca (perché non è stata data una risposta): ottieni "modifica della riga non abilitata", perché nella bash che viene generata quando invochi il tuo script non è semplicemente abilitata e devi farlo da solo, .eg inserendo un set -o emacso set -o vinel tuo script (prima del bind, ovviamente).
Elmar Zander,

Risposte:


10

Devi procurarti lo script. Esegui . ./bindo source ./bindper rendere attiva tale associazione chiave nella sessione corrente.

Eseguendolo normalmente, non ha un terminale quindi ti dà quel messaggio di errore. Inoltre, se funzionasse, sarebbe attivo solo per la durata dello script.

Se vuoi che quel keybinding sia persistente, aggiungi quel comando al tuo ~/.bashrc.


1. Conosco la persistenza. 2. Il tuo esempio funziona, ma aggiunge complessità nell'esecuzione del comando (secondo me). Immagino che ora lo sappia, ma vorrei avere un semplice file bash che posso eseguire senza questo source.
Alfred,

2
@alfredwesterveld: se non si desidera caricare l'associazione ogni volta che si avvia una shell, ma si desidera essere in grado di attivarla in qualsiasi momento senza dover utilizzare sourceo punto ( .), aggiungere una funzione al proprio ~/.bashrc: rbind () { bind -x '"\C-r"':reset; }quindi è possibile accedere rbindda stesso come comando e l'associazione verrà attivata.
In pausa fino a nuovo avviso.

9

Avevo un messaggio simile ma il mio proveniva da uno script che veniva eseguito al di fuori di una shell interattiva (login); era uno script shell eseguito tramite uno script CGI. Il mio messaggio era:

/home/richard/.bash_profile: line 4: bind: warning: line editing not enabled

e sebbene non fosse effettivamente sulla linea 4, l'unico bindin quel file era:

bind 'set completion-ignore-case on'

il che ovviamente ha senso solo se la modifica della linea è abilitata, cioè se si tratta di una shell interattiva.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.