Son komutun argümanıyla bir komut çalıştırın.


34

Komutları çalıştırırken, bazen belki son komutun argümanıyla bir komut çalıştırmanız gerekebilir. Bunu nasıl yapabilirsiniz?

Tabii ki, ok tuşları ve kullanımını hariç Deltuşları: ... DelDelDel... Del<new_command>.

Yanıtlar:


45

Örneğin, bu komutu çalıştırırsanız:

mkdir long_path_here/new_dir

büyük olasılıkla yeni oluşturulan dizine gitmek istersiniz. Bunu sonraki "kısayolları" kullanarak yapabilirsiniz:

  • cd Esc.- cdve ardından bastıktan Escsonra yazın .(aynı anda değil). Bir önceki komutun argümanları yoksa, önceki komutun kendisini alırsınız.
  • cd !*- bu durumda tüm argümanları previuos komutundan alırsınız. Önceki komutun argümanları yoksa, hiçbir şey elde edemezsiniz.
  • cd Alt+ .- tipi cdve basıldıktan sonra Altve .(aynı anda). Aslında, bu yolu kullanarak ve basmaya devam ederseniz .(serbest bırakmadan Alt), tarihten her komut için son tartışmayı alırsınız. Bir komutun argümanı yoksa, komutun kendisini alırsınız.

Genel olarak: <command> Esc.veya <command> !*veya <command> Alt+ ..


vay, bana gelecek birkaç yılda harcadığım yüzlerce saati kurtardın
pranavk

32

Tüm argümanların bir önceki komuttan veya sadece son argümandan olmasını istiyorsanız birkaç kısayol vardır.

  • Tüm argümanlar için: <command> !*
  • Sadece son tartışma için: <command> !$

Örnekler:

ls foo/ bar/
ls !* # Gives the results of ls foo/ bar/

ls foo/ bar/
ls !$ # Gives the results of ls bar/

Önceki komuttaki bir argüman listesinden tek bir argüman istiyorsanız, kullanabilirsiniz. <command> !!:<argNumber>

Örnek:

ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/

2
Sadece !tek bir argüman versiyonunda ihtiyacınız var, örn !:2. Varsayılan bash varsayalım.
belacqua

3
!^Yerinde de kullanabilirsiniz !:1.
Paddy Landau

7

Bahsedilen !*ve !$iyi bir şey, ancak küçük bir düzenleme yapmanız gerektiğinde, okuma çizgisi kısayolları yardımcı oluyor!

Örneğin, yerine sayısız ait ... DelDelDel... Delsadece basın edebilirsiniz Ctrl-a(satırın başlangıcına atlama) Alt+d(kelimenin sonuna silme)

Daha fazla bilgi man readlineve aramak için Default key bindings.


4

Çekmek için nönceki komutu türünden inci argüman Alt+ n+ Alt_. Örneğin, sonra:

$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

echoardından gelen yazım Alt2Alt_size bunu bir sonraki satırda verecektir:

$ echo 2

Vurulduktan sonra "ekran görüntüsü" Alt2:

(arg: 2) echo

Önceki komutların th argümanını art arda Alt_almak için birçok kez tekrarlayabilirsiniz n.

Başka bir faydalı fikir, takma adı tanımlamaktır r="fc -s". Sonra komut değiştirmeleri yapabilirsiniz:

$ echo 1
1
$ r echo=history
history 1
27755  history 1
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.