Рейтинг:18

Как найти источник операции командной строки?

флаг ng

Предположим, я могу напечатать азбука в командной строке, и он запустится (поэтому оболочка не говорит «abc: команда не найдена»).

Как я могу узнать, что азбука есть или делает? Это сценарий? Программа? Псевдоним?

флаг cn
Можете ли вы поделиться более подробной информацией? Если вы набираете «abc», а оболочка возвращает «команда не найдена», значит, в вашей системе нет скрипта, программы или псевдонима, которые могли бы ответить на данный вопрос.
Peter Cordes avatar
флаг fr
@NicoHaase: Сначала я прочитал это так, но, похоже, предполагаемое значение было «запуск `abc` не создает «команда не найдена». Вместо этого она делает что-то, что угодно». Наличие единственного цитируемого вывода в вопросе «команда не найдена» делает эту часть действительно выделяющейся, и формулировка, возможно, двусмысленна со значениями, такими как «abc должен что-то делать, но вместо этого не возвращает команда не найдена». Так что да, вопрос можно было бы отредактировать, чтобы перефразировать. Я внес правку для уточнения, поскольку уже был 1 комментарий и 1 ответ, основанный на неправильной интерпретации.
Рейтинг:26
флаг hr

Вы можете использовать тип команда, упр. введите абв. Например, в оболочке bash:

$ type while cd ls gcc apt
в то время как ключевое слово оболочки
cd это встроенная оболочка
ls имеет псевдоним `ls --color=auto'
gcc это /usr/bin/gcc
apt хэшируется (/usr/bin/apt)

Простой тип Команда показывает только первый результат. Если существует несколько версий азбука в разных местах на вашем ДОРОЖКА, или же азбука предоставляется и как ключевое слово оболочки, и как внешний исполняемый файл, или чтобы увидеть версии команды с псевдонимом и без псевдонима, вы можете использовать наберите "А чтобы перечислить их все, например:

$ тип - время
время - это ключевое слово оболочки
время /usr/бен/время

$ тип -a лс
ls имеет псевдоним `ls --color=auto'
лс это /бен/лс

$ тип - datamash
датамаш это /usr/local/bin/datamash
датамаш — это /usr/bin/datamash

В Баше, тип сам по себе является встроенной оболочкой. Другие оболочки, такие как зш и кш и бросаться (который обеспечивает /бин/ш в Ubuntu) предоставляют аналогичную функциональность (хотя бросаться в настоящее время не предоставляет наберите "А). В ткш, ближайшим эквивалентом является встроенный который команда - не путать с внешней который команда - см. Почему бы не использовать «который»? Что тогда использовать?

Для команд, которые идентифицируются как внешние программы (т. е. имеют путь, например /USR/бин/gcc) можно использовать файл команда, чтобы узнать, что это за программа:

$ файл /bin/ls /usr/bin/gcc /usr/sbin/adduser
/bin/ls: общий объект ELF 64-bit LSB, x86-64, версия 1 (SYSV), динамически связанный, интерпретатор GNU/Linux 3.2.0, раздели
/usr/bin/gcc: символическая ссылка на gcc-9
/usr/sbin/adduser: исполняемый текст Perl-скрипта
ilkkachu avatar
флаг co
а для функций оболочки в Bash `type func` также напечатает определение функции.В Zsh этого нет, но вы можете запустить `typeset -p -f func`, чтобы увидеть это.
Рейтинг:6
флаг zw

Для уже установленных команд используйте ответ steeldriver.

Для не установленных команд читайте ниже.

Существует специальный пакет под названием команда не найдена. Его цель

Предлагать установку пакетов в интерактивных сеансах bash

После установки этот пакет выполнит свою работу и предложит вам установить deb-пакет с известным именем исполняемого файла.


Если вы знаете имя исполняемого файла и/или часть его пути к файлу, вы можете найти его пакет одним из двух способов:

  • местный apt-файл к

    sudo apt-get установить apt-файл
    обновление sudo apt-файла
    apt-файл поиска bin/htop
    

    чтобы получить что-то вроде

    htop: /usr/bin/htop
    
  • онлайн с помощью поиска по содержимому пакета на https://packages.ubuntu.com - посмотреть результаты на эта ссылка.

Рейтинг:3
флаг cn

Есть еще пара возможностей:

какой азбука

вернет расположение программы abc в вашей системе.

Например,

какой кот
/бен/кошка

Если к вашей программе abc прилагалась какая-то документация, можно узнать о ней больше, запустив

человек азбука

Это покажет вам страницу руководства, если таковая имеется для этой программы. Вы можете узнать гораздо больше о его использовании, опциях и параметрах командной строки. Вы даже можете найти примеры того, как использовать abc или веб-страницу, где сопровождающие поддерживают работу программы.

Альтернативой справочным или справочным страницам является утилита под названием info. Некоторые сопровождающие программы хотят предоставить вам такое же или похожее содержимое на справочной странице, используя вместо этого информацию.

информация абв

например, покажет вам, какая помощь может быть предложена.

Поскольку вы упомянули псевдонимы, вы можете показать псевдонимы и их определения с помощью команды alias

псевдоним

Вот пример вывода на моем компьютере с Ubuntu 20.04.

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && эхо-терминал || эхо-ошибка)" "$(история|хвост -n1|sed -e '\''s/^ \s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
псевдоним egrep='egrep --color=auto'
псевдоним fgrep='fgrep --color=auto'
псевдоним grep='grep --color=auto'
псевдоним l='ls -CF'
псевдоним la='ls -A'
псевдоним ll='ls -alF'
псевдоним ls='ls --color=auto'
dave58 avatar
флаг tr
:-) Методы, которые я использую...
mondotofu avatar
флаг cn
Эти методы также применимы ко многим разновидностям Unix/Linux.
ilkkachu avatar
флаг co
Это пропустит функции оболочки и, например. Встроенные оболочки обычно не имеют собственных справочных или информационных страниц.
dave58 avatar
флаг tr
@ilkkachu: в этом случае (встроенные функции оболочки) метод, описанный в основном ответе выше, встроенный «тип», дает подходящие результаты. Вы должны отметить, что ответ мондотофу был расширением предыдущих ответов... [например. "Есть еще пара возможностей:" ]
ilkkachu avatar
флаг co
@ dave58, в этом случае, вероятно, следует обратиться к другим ответам и решениям и обсудить ограничения представленных здесь решений. «другие возможности» также звучат так, как будто это альтернативы, а не просто дополнительная информация, но это может быть только я.
Рейтинг:-1
флаг br

Я предполагаю, что мы говорим о бить ракушки (а может зш если это достаточно похоже) здесь...

Команды типа который и где, о которых упоминалось в других ответах, найдите соответствующие файлы в каталогах, перечисленных в ДОРОЖКА переменная окружения. Таким образом, вы также можете просто проверить команду с именем азбука в этих каталогах вручную. где команда делает немного больше, проверяя места, перечисленные в других переменных среды, ища файлы, соответствующие имени, указанному с некоторыми стандартными расширениями, и т. д. Кроме того, если азбука находится в нескольких местах, который показывает только тот, который будет запущен, тогда как где показывает их все.

Оболочка также может отображать азбука к псевдониму оболочки или функции оболочки. Псевдонимы могут быть перечислены с псевдоним встроенная команда, и они довольно прямолинейны.

Имена функций оболочки могут быть перечислены с помощью набирать -F, так что вы можете искать вывод этой команды, чтобы найти азбука. Если вы хотите установить, какой код связан с данной функцией оболочки, вы можете использовать введите абв.

Рейтинг:-3
флаг st

Предположим, я могу напечатать азбука в командной строке и так что-либо но вернуться

abc: команда не найдена

Как я могу узнать, что азбука есть или делает? Это сценарий? Программа? Псевдоним?

Ни один из вышеперечисленных. Если не нашли, то ничего. Вы можете создать или установить (или добавить к пути поиска) сценарий, программу или псевдоним с именем азбука, то это будет скрипт или программа или алиас. Но на данный момент это ничего.

флаг ng
В вопросе говорится, что ввод `abc` * не * возвращает «команда не найдена».
ilkkachu avatar
флаг co
если что-то «что угодно, кроме X», это означает, что это определенно не X, скорее всего, полная противоположность. Я совсем не весел утром до того, как выпил кофе, и здесь должно быть ясно, что цель состоит в том, чтобы спросить о ситуации, когда команда делает что-то, что угодно, _помимо_ этой ошибки.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.