Kullanabilirmiyim '!!' takma ad veya komut dosyalarında?


10

Terminalde !!önceki komutumu kullanacak olan kullanabilirim .
Bunu bir takma adda kullanmak mümkün mü? Denedim, ama olan şey çift ünlem işaretlerinin tam anlamıyla yorumlanması.

Ne mümkün olmasını istiyorum:

  1. Bir komut giriyorum
  2. Adım 1'de girilenleri içeren bir takma ad yazıyorum

Komut dosyaları kullanan bir çözüm varsa da kabul edilebilir.


asıl amacın nedir son komuta daha fazla seçenek eklensin mi?
Sergiy Kolodyazhnyy

Hayır, amacım sık kullandığım uzun komutu hızlı bir şekilde yazmak. Ortasında genellikle önceki komut olan uzun bir dize var
Ludwig Magnusson

sadece fckomut istemektedir, bu yüzden bir metin editörü açar, çünkü uzun komutları düzenlemenin en kolay yolu budur. Yazıma ekleyeyim. Ayrıca, belki bir komut örneği verebilir misiniz?
Sergiy Kolodyazhnyy

Yazıma bir düzenleme eklendi
Sergiy Kolodyazhnyy

Yanıtlar:


11

Son yürütülen komutu listeleyen komut fc -nl -1. Çıktı ikamesi kullanarak aynı içeriğe daha fazla parametre ekleyebiliriz

$> ls /etc/passwd
/etc/passwd
$> $(fc -nl -1)  /etc/group                                                     
/etc/group  /etc/passwd
$> 

Ancak alıntı yapmak bu yaklaşımla ilgili bir sorun olabilir

Çok güzel bir özelliği, komutu tek başına fcçalıştırırsanız fc, FCEDITdeğişkente (muhtemelen depolanmasını istediğiniz ~/.bashrc) belirtilen metin düzenleyicisini açması ve satırın içeriğinin son komutunuz olmasıdır. Kolaylığınız için, nanometin düzenleyiciniz olarak kullanmanızı öneririm , ancak biliyorsanız vim - daha da iyi.

Örneğin, qdbus org.ayatana.bamf /org/ayatana/bamf/matcher org.ayatana.bamf.matcher.ActiveWindowBüyük satırı düzenlemem gerekirse ne olur ? Ama ile fcaçıp vimdüzenleyebilir /org/ayatana/bamf/matcher, kaydedebilir, çıkabilirim ve çalışır.


9

Kullanamazsın !!ama ...

Gönderen manuel :

Fc komutuyla kullanılacak kullanışlı bir diğer ad r='fc -s', 'r cc' yazmanın cc ile başlayan son komutu çalıştırması ve 'r' yazmanın son komutu yeniden yürütmesidir.


Bu, son komutumun başına bir şey eklememe izin verecek. Ortasında ne olacak?
Ludwig Magnusson

8

!!Geçmiş genişleme sözdizimini fc(daha önce bahsedilmiş) yerine kullanmakta ısrar ediyorsanız , bir yol var.

Varsayılan olarak, historyetkileşimli olmayan kabuk oturumları için genişletme devre dışı bırakılır, örneğin komut dosyalarında.

Komut dosyalarında geçmiş genişletmeyi etkinleştirmek için önce ilgili kabuk seçeneklerini etkinleştirin:

set -o history 
set -o histexpand

set -o histexpandde yazılabilir set -H.

Şimdi geçmiş genişletme işlemleri, örneğin !!kod içinde çalışacaktır.

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.