Когда вы пишете неправильное имя команды, bash часто делает это:
septi@norbert:~$ good
No command 'good' found, did you mean:
Command 'gold' from package 'binutils' (main)
Command 'gmod' from package 'gmod' (universe)
Command 'goo' from package 'goo' (universe)
Command 'god' from package 'god' (universe)
Command 'geod' from package 'proj-bin' (universe)
Command 'gord' from package 'scotch' (universe)
good: command not found
Или иногда это делает:
septi@norbert:~$ nftp
No command 'nftp' found, but there are 23 similar ones
nftp: command not found
Есть ли способ попросить bash показать эти 23 похожих команды для меня? И есть ли способ показать похожие команды, включая те, которые еще не установлены, вместо запуска приложения, например ftp
?
Вполне вероятно, что 23 «похожие» команды не будут для вас более полезными, чем «goo», «god» и «gord». Небольшая хитрость, которую большинство bash'еров используют для поиска вещей, заключается в использовании man-страниц, поскольку поиск основан на содержании, а не только по имени. Например, попробуйте
man -k ftp
. Если вы находите вероятную или интересную команду, посмотрите на страницу руководства, сбросив ключ -k:
man sftp
man имеет свою собственную страницу руководства:
man man
Теперь вы знаете, почему всякий раз, когда вы устанавливаете новую программу или приложение, она очень часто устанавливает для вас также справочную страницу.
Ах, да, для поиска на страницах руководства или на тех страницах, которые вы еще не установили, вам может понравиться один из многих онлайн-сайтов, посвященных мужчинам, например , этот .
Bash использует команду /usr/lib/command-not-found
для поиска похожих команд. Это, в свою очередь, использует модуль Python CommandNotFound
.
Выход, который вы видите на терминале (в данном случае stderr
), также генерируется из этого модуля. Расположение этого модуля - /usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py
, в Ubuntu 14.04 и выше. В функции CommandNotFound.print_spelling_suggestion(self, word, min_len=3, max_len=15)
в строке 138 установлено ограничение по умолчанию для числа подобных команд. Вы можете изменить значение max_len
на 30 (используйте sudo nano
или gksudo gedit
для редактирования этого файла).
python3 -m pdb /usr/lib/command-not-found xdiff
import CommandNotFound
b CommandNotFound.CommandNotFound.print_spelling_suggestion
r
max_len = 30
c
No command 'xdiff' found, did you mean:
Command 'rdiff' from package 'rdiff' (universe)
Command 'xzdiff' from package 'xz-utils' (main)
Command 'idiff' from package 'openimageio-tools' (universe)
Command 'hdiff' from package 'hdf4-tools' (universe)
Command 'pdiff' from package 'a2ps' (universe)
Command 'xxdiff' from package 'xxdiff' (universe)
Command 'adiff' from package 'atool' (universe)
Command 'wdiff' from package 'wdiff' (main)
Command 'xbiff' from package 'x11-apps' (main)
Command 'zdiff' from package 'zutils' (universe)
Command 'zdiff' from package 'gzip' (main)
Command 'diff' from package 'diffutils' (main)
Command 'cdiff' from package 'colordiff' (universe)
Command 'vdiff' from package 'atfs' (universe)
Command 'sdiff' from package 'diffutils' (main)
Command 'ndiff' from package 'ndiff' (main)
xdiff: command not found
Из www.creative-telcom-solutions.de