Sistem bash'ınızda bulunmayan bir komut yazdığınızda işlev çalışır command_not_found_handle()
. Bu işlevde, /usr/lib/command-not-found
iletileri yazdıran bir komut dosyası çağrısı vardır .
Ubuntu 12.04
Bu senaryonun değişim kaynağına Benim ilk tahminim iletileri yazdırmak için stdout
yerine stderr
, ama senaryo I okuyordum kaynak size paketi eksik yüklemek istiyorsanız sadece sormak yapılandırabilirsiniz bulundu.
Değişkeni dışa aktarırsanız COMMAND_NOT_FOUND_INSTALL_PROMPT
, eksik paketi yüklemeniz istenir:
pbm@ubuntu:~$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
pbm@ubuntu:~$ export COMMAND_NOT_FOUND_INSTALL_PROMPT=""
pbm@ubuntu:~$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
Do you want to install it? (N/y)y
sudo apt-get install git
[sudo] password for pbm:
Eski Ubuntu sürümleri
Ne yazık ki COMMAND_NOT_FOUND_INSTALL_PROMPT
başka birkaç seçenek bulabilmek için hayır :
1) 12.04'ten paketi yükleyin - sorun olmamalı - Python'da sadece birkaç komut dosyası var, bu yüzden çalışmalı (denenmemiş!).
2) Değişim stderr
için stdout
. O düzenlemek dosyasını yapmak için /usr/lib/python2.7/dist-packages/CommandNotFound/CommandNotFound.py
ve değişim stderr
için stdout
hatlar 237 ve 240 yılında.
Bundan sonra bu şekilde kullanabilirsiniz:
pbm@ubuntu:~$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
pbm@ubuntu:~$ `git`
//Installation begins
237 ve 240 satırlarında komut verme -y
seçeneği eklerseniz apt-get
sözdizimini de kullanabilirsiniz !! | sh
.
3) Bu betiği 242 satırından şu şekilde de değiştirebilirsiniz:
print >> sys.stderr, _("You can install it by typing:")
f = open("%s/.install-missing" % os.path.expanduser('~'),'w')
print >> sys.stderr, "sudo apt-get install %s" % packages[0][0]
print >> f, "sudo apt-get install %s" % packages[0][0]
f.close()
Bu şekilde komutunuzu dosyaya alırsınız ~/.install-missing
, böylece takma ad oluşturabilirsiniz:
alias im="chmod +x ~/.install-missing; ~/.install-missing"
Aradığınızda im
paket yüklenecektir.
/usr/lib/command-not-found
amaCOMMAND_NOT_FOUND_INSTALL_PROMPT
- düşünceleri referans yok ?