Naciśnij alt + numeric w bash i otrzymujesz (arg [numeric]) co to jest?

101

Naciśnij alt + numeric w bash i otrzymujesz (arg [numeric]) co to jest?

(Ten rodzaj pytania lepiej nadaje się do zadawania pytań człowiekowi, zamiast próbować „zgadywać” poprawną terminologię, aby przeszukać dokumentację w Internecie).

dreftymac
źródło
Jeśli masz set keymap viw ~/.inputrc, to uderzenie Esc + Digitprowadzi cię do tego samego trybu, jakbyś przygotowywał się do powtórzenia polecenia vi (ale nie możesz używać od nich wiązań vi, tylko brzydkie wiązania emacsa :-()
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
Moje wyszukiwane frazy to alt numer terminal linux , alt + 1-9 terminal i ostatecznie shell alt + 1, co mnie tu sprowadziło.
pokaż

Odpowiedzi:

62

Termin, dla którego chcesz wyszukać w Google, to:

"readline arguments"

Doprowadzi to na przykład do tego rozdziału z podręcznika bash :

Do poleceń Readline można przekazywać argumenty numeryczne. Czasami argument działa jak liczba powtórzeń , innym razem jest to znak argumentu, który jest znaczący. Jeśli przekażesz argument ujemny do polecenia, które normalnie działa w kierunku do przodu, polecenie to będzie działać w kierunku wstecz. Na przykład, aby zabić tekst z powrotem na początek linii, możesz wpisać „M-- C-k”.

Ogólnym sposobem przekazywania argumentów numerycznych do polecenia jest wpisanie meta cyfr przed poleceniem. Jeśli pierwsza wpisana cyfra to znak minus („-”), to znak argumentu będzie ujemny. Po wpisaniu jednej meta cyfry, aby uruchomić argument, możesz wpisać pozostałe cyfry, a następnie polecenie. Na przykład, aby nadać komendzie Cd argument 10, możesz wpisać „M-1 0 C-d”, co spowoduje usunięcie następnych dziesięciu znaków z wiersza wprowadzania.

Aby to zadziałało, musisz wiedzieć, gdzie jest zmapowany klucz Meta: czasami jest to Alt, czasami jest Esc, fajne komputery mają dedykowany klucz Meta;)

Dla tych, którzy nie są zaznajomieni ze składnią, „M-- Ck” jest odpowiednikiem Meta_key+ - Ctrl+ k. „M” to skrót od klawisza Meta, który, jak zauważono, różni się w zależności od systemu, „C” to skrót od klawisza Ctrl. Znak „-” po znaku (np. „M-”) nie jest czymś, co wpisujesz, jest sposobem wskazania jednoczesnych naciśnięć klawiszy.

Społeczność
źródło
2
Czy istnieje sposób na powtórzenie znaków numerycznych za pomocą argumentów numerycznych? Na przykład, powiedzmy, że chcę napisać 128 zer ('0'), pomyślałbym, że mógłbym napisać Alt + 128, a następnie 0, ale to daje mi (arg: 1280(nawet jeśli puściłem klawisz Alt). Jak powtórzyć liczby za pomocą tego mechanizmu?
Victor Zamanian
1
@Victor: ciekawe pytania. nie mogę wymyślić sposobu, aby to zrobić z readline. prawdopodobnie lepiej będzie, jeśli zrobisz coś takiego$(perl -e 'print "0" x 128')
1
@VictorZamanian widzi kolejną odpowiedź w tym pytaniu
TTT
28

Aby powtórzyć znaki numeryczne - np. 128 zer, należy nacisnąć:

Meta-key + 1 2 8 Ctrl + v 0

szef'
źródło
Ohhhh, to jest tak jak vim(może też emacs, nie pamiętam).
Sridhar Sarnobat
12

Spróbuj tego. Wpisz Alt 4, wpisz T, a następnie naciśnij Enter.

Zmodyfikowano tak, aby używał bardziej snazzierskiego kodu HTML.

Sean Bright
źródło
9
Co się z tobą dzieje? Nic nie dostaję.
Mortimer McMire,
1
tWstawiono cztery znaki.
Wesley Baugh
4
W mojej wersji Bash (4.4) nie ma potrzeby naciskania klawisza ENTER.
luca76
9

Powtarza kolejne polecenie podane tyle razy, tak samo jak w Emacsie. Np. M-1-0 C-pCofa o 10 pozycji historii. M-4 C-hcofa o cztery znaki, M-3 M-ttrzykrotnie przenosi poprzednie słowo do przodu i tak dalej. Tutaj używam M-znaczenia „meta” dla klawisza Alt, tak jak jest to przyjęte w Bash.

Nietzche-jou
źródło
9

Wiem, że to już zaakceptowana odpowiedź, ale znalazłem kilka przydatnych przykładów, które pokazują również dodatkowe zastosowania poza prostym powtarzaniem znaków. Argumenty cyfrowe mogą odnosić się do różnych rzeczy. Na przykład sekwencja „Alt + 3, Escape, Backspace” usunie 3 wyrazy do tyłu.

stsquad
źródło
4

Nie wiem, ale kiedy wykonasz alt + numeryczny, a następnie naciśniesz znak, otrzymasz liczbę znaków: (arg: 123) + a -> 123 razy „a”

Giancarlo
źródło
8
nie wiesz, ale wiesz? % - |