Premi alt + numeric in bash e ottieni (arg [numeric]) che cos'è?


101

Premi alt + numeric in bash e ottieni (arg [numeric]) che cos'è?

(Questo tipo di domanda è più adatto per chiedere a un essere umano, invece di cercare di "indovinare" la terminologia corretta per cercare nella documentazione via Internet).


Se avete set keymap viin ~/.inputrc, poi colpire Esc + Digitconduce alla stessa modalità, come se si stesse preparando per una ripetizione vi comando (ma non è possibile utilizzare vi attacchi da loro, solo le brutte emacs quelli :-()
Ciro Santilli郝海东冠状病六四 事件 法轮功

Le mie frasi di ricerca erano alt number terminal linux , alt + 1-9 terminal e infine shell alt + 1 che mi ha portato qui.
mostra il

Risposte:


62

Il termine per cui vuoi cercare su Google è:

"readline arguments"

Questo porterà, ad esempio, a questo capitolo dal manuale di riferimento di bash :

Puoi passare argomenti numerici ai comandi Readline. A volte l'argomento funge da conteggio ripetuto , altre volte è il segno dell'argomento che è significativo. Se si passa un argomento negativo a un comando che normalmente agisce in una direzione in avanti, quel comando agirà in una direzione all'indietro. Ad esempio, per terminare il testo fino all'inizio della riga, potresti digitare "M-- C-k".

Il modo generale per passare argomenti numerici a un comando è digitare meta cifre prima del comando. Se la prima "cifra" digitata è un segno meno ("-"), il segno dell'argomento sarà negativo. Dopo aver digitato una meta cifra per avviare l'argomento, è possibile digitare il resto delle cifre e quindi il comando. Ad esempio, per dare al comando Cd un argomento di 10, è possibile digitare "M-1 0 C-d", che cancellerà i successivi dieci caratteri sulla riga di input.

Affinché funzioni, devi sapere dove è mappata la chiave Meta: a volte è Alt, a volte è Esc, i computer fantastici hanno una chiave Meta dedicata;)

Per chi non ha familiarità con la sintassi, 'M-- Ck' è l'equivalente di Meta_key+ - Ctrl+ k. "M" è l'abbreviazione del tasto Meta, che, come notato, varia a seconda del sistema, "C" è l'abbreviazione del tasto Ctrl. Il "-" dopo un carattere (come "M-") non è qualcosa che digiti, è un modo per indicare la pressione simultanea dei tasti.


2
C'è un modo per ripetere i caratteri numerici usando argomenti numerici? Ad esempio, supponiamo che volessi scrivere 128 zeri ('0'), penserei di poter scrivere Alt + 128 e poi 0, ma questo mi dà (arg: 1280(anche se ho lasciato andare il tasto Alt). Come ripeterei i numeri usando questo meccanismo?
Victor Zamanian

1
@Victor: domande interessanti. non riesco a pensare a un modo per farlo con readline. probabilmente stai meglio con qualcosa come$(perl -e 'print "0" x 128')

1
TTT

28

Per ripetere i caratteri numerici, ad esempio 128 zeri, premi quanto segue:

Meta-key + 1 2 8 Ctrl + v 0


Ohhhh, è proprio come vim(forse anche emacs, non ricordo).
Sridhar Sarnobat

12

Prova questo. Digita Alt 4, quindi digita T, quindi premi Enter.

Modificato per utilizzare lo snazzier HTML.


9
Cosa succede per te? Non ricevo niente.
Mortimer McMire

1
tVengono inseriti quattro caratteri.
Wesley Baugh

4
Nella mia versione Bash (4.4) non è necessario premere INVIO.
luca76

9

Ripete il comando successivo dato molte volte, come in Emacs. Ad esempio, M-1-0 C-ptorna indietro di 10 elementi della cronologia. M-4 C-hbackspace quattro caratteri, M-3 M-tsposta la parola precedente in avanti tre volte e così via. Qui uso il M-significato di "meta" per il tasto Alt, come è consuetudine in Bash.


9

So che questa ha già una risposta accettata, tuttavia ho trovato alcuni esempi utili che dimostrano anche usi aggiuntivi oltre alla semplice ripetizione di caratteri. Gli argomenti delle cifre possono essere applicati a tutti i tipi di cose. Ad esempio, la sequenza "Alt + 3, Esc, Backspace" cancellerà 3 parole all'indietro.


4

Non lo so, ma quando fai alt + numerico e poi premi un carattere, otterrai num caratteri: (arg: 123) + a -> 123 volte "a"


8
non lo sai, eppure lo sai? % - |

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.