“apt-get install !!” ne yapar ve nasıl çalışır?

54

Birini yazarken gördüm

apt-get install !!

Bunu birkaç kez yaptı ve her defasında farklı bir program kuruldu. İhtiyaç duyulan şeyin otomatik olarak anlaşılması gibi görünüyor.

Ancak, Ubuntu 14.04.1 LTS sanal makinemde denediğimde, bazı kullanım talimatları gösterildi. % Co_de% için googling işlemi çok iyi görünmüyor. Birçok arama sonucu çift ünlem işareti içermez.

Makinemde apt-get install !! ne yapıyor ve ne işe yaramadı?

    
sordu Thomas Weller 24.05.2015 21:11

5 cevap

74

!! , bash'taki son komutun çalıştırıldığı bir kısayoldur.

Bunu deneyin:

 echo hello
 !!

Bu bağlamda, !! bir başka echo hello 'ye genişletilecektir.

Olanları hayal ettim, onlar bir komut çalıştırmayı denediler ve başarısız oldu ve kurulmadığından şikayet ettiler. Öyleyse paketin adı tesadüfen çalıştırmaya çalıştıkları komutun adıyla aynı olduğu için sudo apt-get install !! yazdılar. Ortaya çıkan komut, bir paketi, yürütmeye çalıştıkları komutla aynı ada göre yüklemeye çalışır.

    
verilen cevap Stephen 24.05.2015 21:12
41

!! 'si apt-get ile ilgisi yok. Önceki komuta genişletilecek bir kabuk anahtar kelimedir. Bu genişleme, geçerli komut yorumlanmadan önce kabuk tarafından yapılır.

man bash 'den:

  

!! Önceki komuta bakın. Bu bir eşanlamlı   '! -1' için.

Örneğin, bir komut çalıştırırsanız:

echo "foo"

Sonra koşarsanız:

sudo apt-get install !!

şu şekilde genişletilecek:

sudo apt-get install echo foo

Gördüğünüz gibi, echo ve diğeri foo olmak üzere iki paket halinde genişletilir. % Co_de% ve foo adlı tek başına bir paket yoktur. Gömülü echo 'si dışında, GNU-coreutils paketinin bir parçası olan echo yürütülebilir. Yani, böyle paketlerin bulunmadığını söyleyen hatalar alacaksınız.

Öte yandan, diğer kişi böyle bir şey yapıyor olabilir:

$ cowsay
The program 'cowsay' is currently not installed. You can install it by typing:
sudo apt-get install cowsay

$ sudo apt-get install !!
sudo apt-get install cowsay
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  filters
The following NEW packages will be installed:
  cowsay
0 upgraded, 1 newly installed, 0 to remove and 119 not upgraded.
Need to get 18.5 kB of archives.

Gördüğünüz gibi /bin/echo yükleniyor.

Bunu yapmamanızı öneririm (emin olmadığınız sürece), açık olmak zarar vermez.

    
verilen cevap heemayl 24.05.2015 21:27
16

!! : Bir önceki komuta bakın. Bu, !-1 ( kaynak ) için bir eşanlamlıdır.

Örneğin, eğer yürütürsem:

./test

sonra Root olmam gerektiğini hatırlıyorum, o zaman şunu yazabilirim:

sudo !!

yazmakla aynı şeydir:

sudo ./test

Son komutunuz çok fazla karakter içerdiğinde kullanışlıdır.

    
verilen cevap Bilal 24.05.2015 21:17
2

Soru zaten yanıtladı, bu yüzden tekrarlı olmayacağım. Ancak, çeşitli kabuklarda, tekrarlama / bulma / düzenleme komutlarına yardımcı olan çok sayıda kısayol olduğunu belirtmek isterim. Kullandığımlardan bazıları:

  1. !$ ve ardından ENTER son komutun son sözcüğünü yazacaktır. Örneğin,

    ls -l /let/me/in
    cd !$
    

Bu, /let/me/in

içinde sizi gösterir
  1. Ctrl - R ve sonra önceki bir komuttan birkaç sözcük yazın. Örneğin, vi /home/mycoolproject.sh yazıp ls , cd , pwd vb. Gibi bazı rastgele komutlarla takip ettiyseniz, sadece Ctrl - R ardından cool bunu vi komutunu çekecektir.

Sadece bash (veya csh ya da neyse) klavye kısayollarını arayın ve bugün yaptığınız en iyi şey olacak!

    
verilen cevap Hopping Bunny 29.05.2015 06:32
-2

Önceki komutunu açıkladığı gibi, ancak bunu özensiz bir kısa el olarak kullanmamak daha iyi. Daha doğrudan olmak basit ve güvenlidir.

$ vim index.php
The program 'vim' is currently not installed. You can install it by typing:
sudo apt-get install cowsay

$ sudo apt-get install !!
# Would be done as sudo apt-get install vim index.php instead of sudo apt-get install vim
    
verilen cevap Christopher Shaw 27.05.2015 12:35

Etiketlerdeki diğer soruları oku