Tuş kombinasyonuna bastıktan sonra terminal / tty'de görünen bu “(arg: 1)” nedir?


21

Sanal bir terminalde I (yanlışlıkla) Win+ ' 1ya basıldı ve aşağıdakilerden oluşan yeni bir hat aldım.

(arg: 1)

Basılmaya devam ettiğim sürece, Winbastığım tüm sayılar parantez içindeki sayılara eklenir, örneğin Winve 1+ 4verimler (arg:14).

I (serbest bıraktıktan sonra Win) herhangi bir tuşa bastığınızda, bu karakter sayı okuduğu kadar basılır ve (arg: ...)ifade standart komut satırıyla değiştirilir.

Burada ne olduğunu bilen var mı?

Yanıtlar:


24

Bu , yerleşik bir argüman , dahili okuma kütüphanesinin bir özelliği bash:

digit-argument (M-0, M-1, ..., M--)
    Add  this digit to the argument already accumulating, or start a
    new argument. M-- starts a negative argument.

Bu özellik, halihazırda düzenlenen komut satırına metin eklemeyi veya silmeyi kolaylaştırır. Yazmak istediğinizi varsayalım echo gggg:

  1. Gir ve echoardından boşluk bırak
  2. Meta (olabilen bir tuşa basın Win, Altve / veya Escsizin için) ve türünü4g

Ancak, bu size bir şeyleri kurtarabilmek için ne kadar sıklıkla tek bir mektup yazmanız gerekir? Bu özellik öncelikle okuma satırı komutları için tasarlanmıştır , Referans Kılavuzun 8.2.1–8.2.3 bölümlerine bakınız (“C” Ctrl, “M”, Meta anlamına gelir).

Bir kelimeyi Meta ile geri taşıyabilirsiniz ve Bpeki ya bir kerede birden fazla kelimeyi geri almak isterseniz? Sen tut Ya Altbasın Bbirden çok kez ya da basamaklı argümanını kullanın:

  1. Komut satırında beş kelime geriye bir yazım hatası var:

    $ echo one two tree four five six seven
  2. Meta tuşuna 5basın , yazın ve Meta ve tuşuna basın B. Et violà:

    $ echo one two ree four five six seven
  3. Yazım hatasını düzeltin ve Enterçekim için ya Endda çizginin sonuna gitmek için Ctrl+ ya basın E.

Meta ve tuşlarına basarak tek bir kelimeyi silebilirsiniz Backspace, fakat bir kerede birden fazla kelimeyi silmek isterseniz?

  1. Komut satırında bir kelime unuttun:

    $ echo one two four five six seven
  2. Meta tuşuna 4basın , yazın ve Meta ve tuşuna basın Backspace.

    $ echo one two 
  3. Kayıp kelimeyi ve ardından boşluk yazıp, silinenleri yapıştırmak için Ctrl+ tuşlarına basın Y. Et violà:

    $ echo one two three four five six seven

Haklısın, hiçbir şeyi silmeden açıklandığı gibi oraya da gidebilirdin. Linux'tayız, her zaman aynı şeyi yapmanın birkaç yolu vardır.

Ve “olumsuz argüman” nedir? Aynı şeyi yapar, ancak tersi yönde, Meta -2Meta Backspacekomut satırının sonraki iki kelimesini siler. “Ama aynı şeyi yapmak için Meta 1Meta kullanabilir D!” Buna sevindim, komut satırına hoş geldiniz.

Daha fazla okuma:


Bu hangi bash versiyonunda ortaya çıktı? Gerçekten kullanışlı görünüyor. +1 yaptı.
Sergiy Kolodyazhnyy

on WSL it'sEsc
αғsнιη

1
Vaov! Size böyle harika bir cevap için teşvik verdiğim için çok mutluyum!
guntbert,

"Kabul etmek" için hiçbir şey yoktur, genellikle zaten bildiğimiz şeylerden bahsederken ('I') tekrar araştırma yapmaya meyilli değiliz. Araştırmanız bu cevabı çok kapsamlı hale getiriyor - kaynaklar dahil.
guntbert,

1
Düzgün olan, rakam argümanının, mutatis mutandis'in vi benzeri düzenleme modunda ( set -o vi) da çalışmasıdır.
Geremia
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.