Ketika Anda mengetik perintah yang tidak ada di sistem Anda menjalankan fungsi bash command_not_found_handle(). Dalam fungsi ini ada panggilan ke /usr/lib/command-not-foundskrip yang mencetak pesan.
Ubuntu 12.04
Dugaan pertama saya ke sumber perubahan script ini untuk mencetak pesan ke stdoutgantinya stderr, tapi ketika saya membaca sumber naskah saya menemukan bahwa Anda bisa mengkonfigurasinya untuk hanya meminta Anda jika Anda ingin menginstal paket hilang.
Jika Anda mengekspor variabel, COMMAND_NOT_FOUND_INSTALL_PROMPTAnda akan diminta untuk menginstal paket yang hilang:
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:
Versi Ubuntu yang lebih lama
Sayangnya tidak ada COMMAND_NOT_FOUND_INSTALL_PROMPTsehingga saya dapat menemukan beberapa opsi lain:
1) Instal paket dari 12.04 - seharusnya tidak menjadi masalah - hanya beberapa skrip di Python yang seharusnya bekerja (belum diuji!).
2) Ubah stderrke stdout. Untuk melakukannya edit file /usr/lib/python2.7/dist-packages/CommandNotFound/CommandNotFound.pydan ubah stderrke stdoutdalam baris 237 dan 240.
Setelah itu Anda bisa menggunakannya dengan cara ini:
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
Jika Anda menambahkan -yopsi ke apt-getperintah di baris 237 dan 240 Anda juga bisa menggunakan sintaks !! | sh.
3) Anda juga dapat memodifikasi skrip ini dari baris 242 dengan cara ini:
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()
Dengan cara ini Anda akan mendapatkan perintah dalam file ~/.install-missing, sehingga Anda dapat membuat alias:
alias im="chmod +x ~/.install-missing; ~/.install-missing"
Jika Anda memanggil impaket akan diinstal.
/usr/lib/command-not-foundtetapi tidak memiliki referensi keCOMMAND_NOT_FOUND_INSTALL_PROMPT- pikiran?